What Computational Thinking Means
“Computational thinking” has been the buzzword of the last year. Many coding apps and coding classes for kids claim to teach computational thinking. Most will invoke the keywords like “conditional logic”, “sequencing”, “algorithms”, etc.
“Coding is not an end itself, but one means to get to a far more critical end: computational thinking skills.”
– Muhammed Chaudhry President and CEO of the Silicon Valley Education Foundation in a guest post on Forbes.
But surely computational thinking is also not an end itself but a means to a far more critical endpoint?
About a year ago, I was part of a Twitter conversation, where parties involved could not agree on the definition of Computational Thinking.
— Miles Berry (@mberry) November 10, 2015
The reference to Jeanette Wing was one that I was familiar with, as I had saved in my Evernote this snippet from a piece she wrote in a Carnegie Mellon University publication.
She defined Computational Thinking as a way in which Humans and not Computers think.
This made me wonder.
Do most parents sending their kids to these classes stop to think about what Computational Thinking really means? I’ll be the the first to admit that until that point, I certainly had not. If pushed, I would have give you a “textbook” definition of computational thinking. Similar to the coding classes and coding apps and similar to how the Australian curriculum defines it.
But surely that was more like getting humans to think like computers? But why would we do that? If that was the end goal, why not just make more computers?
We ran a Twitter poll! Was computational thinking was a way to get humans to think like computers or to get computers to think like humans?
COMPUTATIONAL THINKING: A way to get humans to think like computers or a way to get computers to think like humans?
— Little Coders SG (@littlecodersSG) November 7, 2015
We had more votes for getting humans to think like computers.
— Neil Smith (@neilnjae) November 13, 2015
From that rose the interesting, if slightly philosophical question: Do Computers Think?
A National Definition
In Singapore, we often hear the words “Computational Thinking” thrown at us. We are told we need to develop Computational Thinking as a national capability.
Here is the Singapore Government’s definition of Computational Thinking (taken from our Infocomm Media 2025 Plan):
“Computational thinking draws upon the power of computing to solve problems, build systems and understand human behaviour”
That definition seemed to go down well on Twitter. Well at least no one dared to comment on or challenge the Singapore Government’s definition.
But what does that really mean? How does one incorporate “the power of computing to solve problems, build systems and understand human behaviour” into subjects taught at school? The Australian definition seemed more appropriate in this context.
In an inspiring post on “How to Teach Computational Thinking” by Stephen Wolfram, I found the definition that made the most sense to me.
At a micro level, there was the functional aspect of CT: the language of computing, (i.e. the conditional logic, the algorithms). In order to tell the computer what to do, one has to speak the language of computing (i.e coding).
At the macro level, and equally important, was the ability to articulate the issues at hand with enough clarity (i.e. in as simple a manner as possible) and to break the problem down in a systematic way into components that could be solved by a computer.
As far as I am concerned, computational thinking is as much the ability to communicate with a computer (i.e. know how a computer thinks, speak to a computer with code) as it is an approach to problem solving.
In many ways, this mode of problem solving was similar to the way I was trained as an associate consultant at Bain & Company. As management consultants, we were often tasked to solve problems for our clients, problems that were so complex, it was often difficult to know where to begin. But once we were able to take that complex problem, break it down in a logical manner into smaller, MECE (mutually exclusive, collectively exhaustive) components, massively complex problems became much easier to solve. (The key difference between the strategy consulting approach and the computational thinking approach was that we never got around to applying the powers of computing to solve those problems. Not in my time anyway.)
So the Singapore Government’s definition seems decent enough – it alludes to the coding as language of computing and to the bigger picture: to solve problems, build systems and the seemingly after thought, understand human behaviour.
Oh but that’s Jeanette’s fault – after all, she was the one who wrote it in that order.
I want to know what you think. Do computers think? What’s your definition of Computational Thinking?