Computational thinking is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent. [Jan Cuny, Larry Snyder, and Jeannette M. Wing, “Demystifying Computational Thinking for Non-Computer Scientists,” work in progress, 2010]

though she credits Al Aho for some of the thought behind it.

A key part of computational thinking is the value of levels of abstraction: being able to represent just the “relevant” information and manipulate it, without having to worry about lower and higher levels of representation, other than in explicit terms of the current level. To my mind, good computational thinking requires being able to switch levels of abstraction and to work in 2 or more levels at once, but just being able to abstract problems and hide some of the less relevant details is a valuable skill.

Jeannette gives some of examples of computational thinking in everyday life, one of which particularly rang a bell with me:

Hashing: After giving a talk at a department meeting about computational thinking, Professor Danny Sleator told me about a hashing function his children use to store away Lego blocks at home. According to Danny, they hash on several different categories: rectangular thick blocks, other thick (non-rectangular) blocks, thins (of any shape), wedgies, axles, rivets and spacers, “fits on axle,” ball and socket and “miscellaneous.” They even have rules to classify pieces that could fit into more than one category. “Even though this is pretty crude, it saves about a factor of 10 when looking for a piece,” Danny says. Professor Avrim Blum overheard my conversation with Danny and chimed in “At our home, we use a different hash function.”

The analogy is not perfect, as there is usually no collision resolution method when a bin gets too full. (In our house, collision resolution usually requires reallocation of space, which is a very expensive operation, just as in programming. Rehashing has been known to take months, and the temporary space used for the rehashing operation is not available for other tasks.)

Share:

Like this:

Related

I read your earlier post on algorithmic thinking vs computational thinking, and must admit that I am confused. How is your definition of computational thinking any different from the “computers as tools” approach now used in our public schools? I thought computational thinking was going to somehow improve the way computing in taught in K12. If it is just about using the computer to work with data, then simply doing some spreadsheets to calculate grades would qualify. Heck, even my 5th grader’s silly Powerpoint assignment would qualify – after all, the text on the slides is data, and Powerpoint does manipulate it.
Please tell me I am wrong!

Solving a problem by using computation explicitly is computational thinking. So using a spreadsheet to calculate grades, rather than eyeballing the grades and saying “That looks like a B to me” is computational thinking, albeit of a very rudimentary type. Using a database of scores for individual questions to try to figure out what concepts particular students are having trouble with would be a more sophisticated use of computational thinking.

Powerpoint presentations and word processing hide the computation from the user: there is a deliberate attempt to avoid computational thinking with these tools and make the computer invisible in the process.

Computational thinking is thinking about ways to get information out of raw data and into people’s minds using computation (so there is a little of presentation skill involved, including the sorts of things that Tufte discusses in The Visual Display of Quantitative Information).

So if the tool involves numbers and math, it is computational, and if it doesn’t, it isn’t computational? Is Photoshop computational? How about computing the grades with a calculator? Pencil and paper?

Sorry to be pushing this, but I find that nobody seems to know what the term “computational thinking” means, and if we start pushing something so hazy into the public schools, we are going to end up with all sorts of unintended interpretations. An example of unintended interpretations is the fact that our local middle school meets the NY State technology requirement with a required woodworking class. That is how they interpret “Technology” because it is so hazily defined.

I think that a woodworking class is an excellent way to meet a technology requirement: far better than PowerPoint or Word. If they followed it up with a metal-working class, an electronics class, and plastic-casting class we’d have a chance of rebuilding America’s industrial strength. Somehow we’ve become a country that confuses pushing paper around with doing useful work.

I agree that it is difficult to come up with a definition of “computational thinking” that can’t be perverted. The key is that the head word is “thinking”. Photoshop is certainly a computational tool, but can be used without any computational thinking. It can also be used for computational thinking. My son used it in his 5th grade science fair to get very precise measurements of bounces from long-exposure photographs of bouncing balls, and rescaling images so that the Photoshop rulers were accurately calibrated to the spacing of lines on the backdrop. Figuring out how to do that is computational thinking. Just pushing sliders around until you get an image you like is not.