Thinking About Computational Thinking
What is “computational thinking”?
I think I first heard Jeannette Wing use the term back around the time that the Internet bubble burst, and of course we’ve become accustomed to using it ever since. A couple of years ago, the Center for Computational Thinking was founded (by Jeannette, with support from Microsoft), to develop the concept. Well, it turns out that we here at Carnegie Mellon aren’t the only ones interested in this. The Computer Science and Telecommunications Board (CSTB) of the National Academies has convened a series of workshops, called “Computational Thinking for Everyone“, to study the idea. I went to the first such workshop last week, not really knowing what to expect. Some of these workshops are stimulating, even uplifting, but just as often they can also be tedious exercises in navel gazing. Fortunately, I found it to be informative and, at times, even fun.
What did I learn? Well, first and foremost, there are a lot of people are thinking hard about computational thinking (CT). The phrase has really struck a chord with a broad cross-section of academics. Second, I learned that a precise answer to the question, “what is computational thinking?” is just as elusive to the rest of the world as it is to us. And third, it seemed to me that people are preoccupied with this question because there is a shared “gut feeling” that a potentially important idea is lurking.
But what, exactly, is it? The attempts at definition varied widely. Jeannette Wing gave her familiar one: “Computing is the automation of abstractions. CT focuses on the process of abstraction.” MIT’s Gerry Sussman described CT as “careful reasoning about the methods of doing things.” He also contrasted CT with “physics thinking” (the “study of simple things”) and “biology thinking” (the “study of complex things”), describing CT as “abstract engineering”. (I resonated strongly with many of Gerry’s ways of thinking about CT.) In my talk, I expressed thoughts on “What can a computational thinker do?”, focusing on the ability to think algorithmically, to understand the consequences of scale, and to work effectively with abstractions.
Ultimately, very different approaches dominated the discussions. Some of these focused on the purpose of CT and its policy implications. For example, Bill Wulf posed the question, “What does every citizen need to know?” This concept of citizenry was pervasive through the discussions, and flanked by the idea of “personally meaningful” knowledge. Also a major theme was the issue of attracting and retaining smart people. This was a particularly strong theme in Lenore Blum’s presentation, with its focus on action-oriented programs to empower high school teachers and use CT to stem the loss of smart kids to other fields.
But the strongest theme of the workshop discussions, by far, was education, and especially early (K-12) education. Many concrete ideas, ranging from the philosophical (e.g., Alan Kay’s statement that “for children, all things are art, and the computer is the greatest art medium ever invented”), to the practical (e.g., Mitch Resnick’s Scratch, Tim Bell’s CS Unplugged, and Bob Sproull’s advice that “debugging is a key element of skill acquisition”), to the scholarly (e.g., Andy diSessa’s insights on educational communications).
For me, seeing such a diversity of approaches to computational thinking was, at times, hard to cope with. Indeed, I had a sense of intellectual exhaustion at the end of the workshop (reflected in this overly long blog posting :-). So will we ever make sense of this? I’m not sure. I think it is laudable that the National Academies is doing this study, and the resulting report likely will be an interesting read. In the end, however, we may some time before we have a satisfactory answer to the question, “What is computational thinking?”
Peter Lee @ February 23, 2009
“It has been the acknowledged right of every Marxist scholar to read into Marx the particular meaning that he himself prefers and to treat all others with indignation.” — John Kenneth Galbraith
At a September 2007 MSR workshop on scientific computing, I asked participants to come up with questions for a quiz that would assess whether someone was thinking computationally or not. It quickly became clear that the phrase meant very different things to different people. It also became clear (to me, at least) that this was why the phrase had become so popular: it let everyone sound like they were backing something new and exciting while carrying on with whatever agenda they’d had before.
Well, first and foremost, there are a lot of people are thinking hard about computational thinking
I agree Computational Thinking is very important and can be a very important tool no mater what area you are in. i am wondering why there are no tools to support computational thinking. if we relay want to push this idea i think its more then teaching a powerful way to think but also giving them the power to do something with this thinking method. its like standards committees, whats better defining a standard if how to do something or just providing a tool to do it by the standard very easily. as a programmer i don’t want to implement long standards but i don’t care about taking a ready module with a simple interface that will implement the standard. should we be educating or creating tool for computational thinking ?