Monday, March 12, 2007

A Modest Proposal about DST

Once again, this afternoon I had the strangest feeling, yawning without being tired, hungry at the wrong expected time of day... which reminds me of a proposal I had thought out years ago. To relate...

Daylight Saving Time, the scourge of springtime deadlines.

Daylight Saving Time (DST) is intended to save energy by shifting the labels of the day cycle ("hours") back and forth each spring and fall so that more daylight is available towards the end of the day (when people will tend to be active and use more electricity if the sun is not up). The latest modification of the plan is just minor political tweaking, an enactment of a law because it is so easy to do. But there are unintended consequences of the semiannual (not "biannual": see grammar nazi) shift that are not well-known...

The problem with the current shifting method occurs mainly in the spring when clocks are moved forward ("losing an hour", "spring forward"), moving an hour of sleep filled wasted daylight in the early morning to the evening. However, because of this time change, the -whole world- loses an hour of last-minute time, but also they must rise a full hour ahead of normal, inducing a world wide average jet-lag. Though it is only an hour, the fact that it affects the -whole world- (think of how the badly the Australians feel), makes the statistical affect very significant (studies have shown that it costs tax payers billions of dollars every spring in lost productivity and accidents caused by sleep deprivation, and unmet deadlines due to the necessary last-minute lost hour). Also, more significantly, there have been studies that show that heart attack prevalence increases after the spring time change (due to the average lost hour of sleep over so many people).

In contrast, the fall time shift ("fall backwards") everyone gains an hour; used to catch up on work, sleep, ...just life itself.

There are multiple solutions (destroying civilization and starting from scratch, cutting off peoples thumbs, sundial smashing,  DST all year, ST for half the year/DST the rest (which nothing at all)).

So in the interests of everyone's well-being, and frankly the world economy, I offer the following...

Proposal 1: Let there only be a time change in the fall.

All the benefits of the time change are realized in the fall, and -none- of the problems from the spring change are incurred. If this proposal is successful, as it is very much expected to do so, we suggest the additional...

Proposal 1a: Or move the clock backwards in the spring.

This would double the benefits over the course of the year.
If you consider all the consequences of this new time-shifting protocol, you will realize all the good of the old protocol and none of the bad. In the fall you gain an hour. A sweet bliss, an extra hour to complete that proposal before the deadline. In the spring, what, another hour? Luxury! An extra downy terry cloth bathrobe for that massage! An additional hour of blessed sleep to prepare you for the week ahead.

All of the benfits and none of the drawbacks.

Tuesday, February 6, 2007

Bullet points from Jeanette Wing: 'Computational Thinking' (CACM, Mar 2006)

An opinion piece by Jeannette Wing (COMMUNICATIONS OF THE ACM March 2006/Vol. 49, No. 3, pp. 33-35) about how 'computational thinking' (whatever that is...well, actually that's what she -does- explain) is really an intellectual skill that is, to oversimplify terribly, good for everybody.

Sort of like humanities for scientists/engineers. She says it would be good for non-majors, but I'm guessing mostly just for scientists (i.e. everybody probably won't include people who study literature or history (well, history does have a 'scientific' component, and this might be useful there). Pardon the following exegesis, but like the Torah (or is it the Talmud, I always get that mixed up), the commentary may require more processing time than the original (which of course should be read along side this to see what few things I removed as, well not exactly fluff, but just more polemic/value judgement (and I'm only analyzing quantifiable things), which I for the most part agree at least in the direction of not the actual implementation)...

Representative quotes:

Thinking like a computer scientist means more than being able to program a computer. It requires thinking at multiple levels of abstraction.
It represents a universally applicable attitude and skill set everyone, not just computer scientists, would be eager to learn and use.
Computational thinking is a fundamental skill for everyone, not just for computer scientists. To reading, writing, and arithmetic, we should add computational thinking to every childs anlyltical ability.
Computational thinking will have become ingrained in everyones vievs when words like algorithm and precondition are part of everyones coacbulary; when nondeterminism and garbage collection take on the meanings used by computer scientists; and when trees are drawn upside down.
This kind of thinking will be part of the skill set of not only other scientists but of everyone else.

Anyway, here's the mapping from classes in the Computer Science undergrad curriculum to her points ("Computational thinking is..."):

  • TCS (algorithm design methods): "In solving a problem efficiently, we might further ask whether an approximate solution is good enough, whether we can use randomization to our advantage"
  • AI (learning): "...and whether false positives or false negatives are allowed."
  • TCS (complexity): "reformulating a seemingly difficult problem into one we know how to solve, perhaps by reduction, embedding, transformation, or simulation."
  • Software (programming paradigms) "Computational thinking is thinking recursively. "
  • Software (systems, architecture): "It is parallel processing."
  • Software (programming, LISP): "It is interpreting code as data and data as code. "
  • Software (programming langs, unification): "It is type checking as the generalization of dimensional analysis."
  • Software (programming langs, pointers): "It is recognizing both the virtues and the dangers of aliasing, or giving someone or something more than one name."
  • Software (programming langs, machine/assembly): "It is recognizing both the cost and power of indirect addressing and procedure call. "
  • TCS (algorithms): "It is judging a program not just for correctness and efficiency" (this quote continues: "... but for aesthetics, and a system's design for simplicity and elegance." which unfortunately is totally absent from the curriculum or from the teacher's within-class comments on the curriculum)
  • Software (systems): "Computational thinking is using abstraction and decomposition when attacking a large complex task or designing a large complex system. "
  • Software (programming, design, modularity) "It is separation of concerns. "
  • general engineering (not mappable to any particular art of the UG curriculum) "It is choosing an appropriate representation for a problem or modeling the relevant aspects of a problem to make it tractable."
  • Software (correctness, theorem proving) "It is using invariants to describe a system's behavior succinctly and declaratively. "
  • Software (software engineering, modularity) "It is having the confidence we can safely use, modify, and influence a large complex system without understanding its every detail. "
  • Software (software engineering): "It is modularizing something in anticipation of multiple users or prefetching and caching in anticipation of future use."
  • Software (software engineering): "Computational thinking is thinking in terms of prevention, protection, and recovery from worst-case scenarios through redundancy, damage containment, and error correction. "
  • Systems(OS)/Software(programming): "It is calling gridlock deadlock and contracts interfaces. "
  • Systems(OS): "It is learning to avoid race conditions when synchronizing meetings with one another."
  • AI/TCS (search space/algorithms): "Computational thinking is using heuristic reasoning to discover a solution. "
  • AI (planning): "It is planning, learning, and scheduling in the presence of uncertainty."
  • AI/TCS (algorithms/constraints): "It is search, search, and more search, resulting in a list of Web pages, a strategy for winning a game, or a counterexample."
  • Systems (software): "Computational thinking is using massive amounts of data to speed up computation."
  • TCS/systems (algorithms, architecture) "It is making trade-offs between time and space and between processing power and storage capacity."
  • Systems/software (architecture, design ): "When your daughter goes to school in the morning, she puts in her backpack the things she needs for the day; that's prefetching and caching. "
  • TCS (algorithms): "When your son loses his mittens, you suggest he retrace his steps; that's backtracking."
  • TCS (algorithms): "At what point do you stop renting skis and buy yourself a pair?; that's online algorithms. "
  • Systems (OS): "Which line do you stand in at the supermarket?; that's performance modeling for multi-server systems. "
  • Systems/software (software engineering): "Why does your telephone still work during a power outage?; that's independence of failure and redundancy in design. "
  • What? never heard of it: "How do Completely Automated Public Turing Test(s) to Tell Computers and Humans Apart, or CAPTCHAs, authenticate humans?; that's exploiting the difficulty of solving hard AI problems to foil computing agents."
Uses of CS thinking in other domains:
  • AI (learning) : "For example, machine learning has transformed statistics. Statistical learning is being used for problems on a scale, in terms of both data size and dimension, unimaginable only a few years ago. Statistics departments in all kinds of organizations are hiring computer scientists. Schools of computer science are embracing existing or starting up new statistics departments."
  • AI/Databases (knowledge structures): "Computer scientists$(B r(Becent interest in biology is driven by their belief that biologists can benefit from computational thinking. Computer science$(Bs (Bcontribution to biology goes beyond the ability to search through vast amounts of sequence data looking for patterns. The hope is that data structures and algorithms, our computational abstractions and methods, can represent the structure of proteins in ways that elucidate their function. Computational biology is changing the way biologists think. "
  • TCS (algorithms) "Similarly, computational game theory is changing the way economists think; "
  • AI/EE (agents): nanocomputing, the way chemists think;
  • TCS (complexity) "... and quantum computing, the way physicists think."
Many of these items are explicitly covered in a traditional CS curriculum (whatever -that- is, I of course consider what I did as traditional because, well, I did it. But some of the items are not exactly traditional text book subjects, but are certainly part of the air you breathe. The taxonomy of CS subject domains goes like this: TCS (theoretical CS: includes, broadly, algorithms, complexity, logic/discrete math/other math applied to CS, data structures), AI (artificial intelligence: learning, cognition, logic, planning, robotics, heuristics that aren't algorithms), software (programming languages, compilers, semantics), architecture and hardware (frankly I don't know the difference here other than, though both involve manipulating actual physical objects, architecture deals with objects that are larger than those in hardware), systems (a grab bag of topics: operating systems, databases, graphics), and NA (numerical analysis, or more recently renamed scientific computing).
WHAT IT IS, AND ISNT
The second half of the article gives more abstract concepts of 'computational thinking'.
Computer science is not computer programming. Thinking like a computer scientist means more than being able to program a computer. It requires thinking at multiple levels of abstraction;

Computational thinking is a way humans solve problems; it is not trying to get humans to think like computers.

Computer science "inherently draws on" mathematical thinking as its formal foundations" and on engineering thinking, "given that we build systems that interact with the real world. "

"The constraints of the underlying computing device force computer scientists to think computationally, not just mathematically. " ... well isn't computational thinking one particular type of mathematical thinking?

For everyone, everywhere. Computational thinking will be a reality when it is so integral to human endeavors it disappears as an explicit philosophy.
A beautiful sentiment... but I disagree with the general (and specific) inference. Consider 'mathematical thinking'...it is very "integral to human endeavors", but has not disappeared as an "explicit philosophy".

CS is really a 'liberal art'. Myth: computer science has been 'solved', only implementation remains. Wing seems to leave the thread of 'computational thinking' here and addresses more things associated with CS as official subject to be followed (she continues to say very important things I agree with, and of course need to be said, and the best place to say them is in an article extolling the virtues of computational thinking, and you should read it... but none of that fits my agenda at the moment so I won't really comment, other than to say that she must be a department head looking at the lowering #'s of CS undergrads, worrying about the great number of asst profs they just hired to take care of teaching the glut of CS UGs that were projected but never materialized).

Extremely abbreviated commentary:

  • There's a difference between things you learn because they were said in class and things you learn because you took the class (but no one ever said).
  • Jeannette Wing has done in three pages what Stephen Wolfram claimed to be doing in 1000; show how computation is a new, useful paradigm for (scientific) thinking (this is intentionally a slam against Wolfram's ANKS).
  • How could one compose a similar 'look at the whole world through these eyes' for a mathematician? And from the other direction, how could non-scientific domains (the humantities) use this (these) worldviews?
  • Psychology (cognitive psychology) has already had the 'information processing' view since the 60's/70's.