Reading, Writing, Arithmetic, and Computational Thinking
About a quarter-century ago I identified my three biggest passions as Environment, Education, and Computers. Aikido joined that list nineteen years ago. Family has always been like water for a fish -- vital, but not something on this list probably until Elliott was born. Anyway, the first three remain career goals. I did fairly well combining Education and Computers in my first three jobs: creating electronic illustrations and animations of the history of perspective, building an ISP for Clark County School District and writing software to facilitate school-to-career efforts around the nation. Since then my professional life has been consumed by business systems, but I've learned a ton more about programming along the way.
For the past three years I've been trying to figure out how to get started teaching computational thinking. I don't want to quit programming, but I miss working in education. My volunteer work fills that void to a degree, but I'm increasingly convinced that education (and the world in general) needs computational thinking, and that I need to be doing something about it. These are vital tools to help us change our impact on the environment among other things.
What is Computational Thinking?
"Thinking like a computer scientist means more than being able to program a computer."
Jeannette Wing -- Computational Thinking [via ACM]
"Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer science. Computational thinking is thinking in terms of abstractions, invariably multiple layers of abstraction at once. Computational thinking is about the automation of these abstractions."
Center for Computational Thinking -- Carnegie Mellon
"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 child's analytical ability."
Jeannette Wing -- Computational Thinking [via CMU]
In June of 2007, Jon Udell interviewed Jeannette Wing who coined the term. [1] The thirty-minute interview nicely introduces the subject. Regrettably, the above quotes and the interview probably preach to the choir: computer geeks will get it, but others won't. Even so, they're a place to start.
Dr Wing begins by suggesting the fundamental parts are Abstraction and Automation, but much in the rest of the interview suggests it's all about the Automation. Computers force us to think rigorously about the problems we solve and they enable us to tackle otherwise impossible problems.
Happily, the interview leaves the most important questions as exercises for the listener:
Jon asks (at around 10:30) "How would you in a more formal way teach the kinds of strategies that you've outlined here? ... Things like naming disciplines, disciplines for structuring information, disciplines for working with hierarchy, disciplines for modeling interacting layers of abstraction, ways of understanding when and how to focus on one or more layers, ways of understanding how to refactor." Glaringly absent from that list are two disciplines I care most about: testing, and reuse (collecting, refining, and sharing a bag of software tools to solve increasingly difficult problems).
It's time to get working on these problems.
[1] I link here to an earlier reference to the phrase computational thinking in "An Exploration in the Space of Mathematics Educations" by Seymour Papert, International Journal of Computers for Mathematical Learning, Vol. 1, No. 1, pp. 95-123, 1996. Really not surprising that Papert would have covered this ground first. Perhaps Jeannette still deserves credit for promoting the phrase into a term and bringing another generation's attention to the subject.