Computational Thinking
Mark Mzyk | March 22, 2009
Because of Eugene Wallingford, of Knowing and Doing, bringing up the subject, I’ve been thinking about computational thinking. What is computational thinking? I’m not sure any one knows exactly, but for me the short answer is it means thinking like a computer scientist.
People, notably academics, think that computational thinking is an important way to think; that everyone should be taught to think in this way, or at least, everyone should be taught to think in this way some of the time. I agree with this viewpoint, although I do admit I’m biased in the matter.
There may not be a good answer to what computational thinking is, as the question is like asking what is science fiction. The answer is different depending on the person. Putting that aside, let me show you an example of computational thinking, an example that doesn’t have anything to do with programming, code, or computer science.
Here’s a quote from Barack Obama:
Focusing your life solely on making a buck shows a certain poverty of ambition. It asks too little of yourself. Because it’s only when you hitch your wagon to something larger than yourself that you realize your true potential.
And here’s another quote from Barack Obama1:
At one level, these are the same thing. They are both quotes from Barack Obama. But going deeper, they aren’t the same. The second breaks the sentence down into its individual parts, explaining the parts and explaining the whole by exploring how the parts make up the whole.
You can take this beyond a pair of quotes by Barack Obama. It is possible to diagram any sentence in the English language. It’s an algorithm. I can break a whole into its parts and build the parts into a whole. I can repeat this process as many times as I want with as many sentences as I want. Treating problems in this way is computational thinking. It is the underpinning of computer science.
However, there is another part to computation thinking: abstractions.
Computational thinking also means being able to go above the original whole and constructing a whole of wholes. Or going above the whole and thinking about the whole in a different way. To twist a common phrase: to be able to think about apples like oranges.
Perhaps that isn’t exactly right: It’s being able to think about apples and oranges as fruit, or being able to think about a sentence as a word collection. Then once you have the fruit, or the collection, computational thinking is taking that abstraction and solving a problem with it.
Programming is the craft and exercise that makes this thinking concrete. It allows the thinking to be grounded in workable objects: programs. Just as language is manipulated by pen and paper, so too computational thinking is manipulated by code and computers.
We know that people have different learning styles. Some people are visual learners while others are auditory learners. Yet in life, everyone has to be able to learn from every type of input to gain knowledge. So it is with computational thinking. There are different parts, with each part akin to a different learning style, but the parts make up a whole that has greater value than each piece individually. This makes it worth learning the whole. It might not be easy for everyone, or even most people, but it is a skill that is essential to helping us face the challenges ahead and to moving us forward.
That is computational thinking.
- Special thanks to Garth Risk Hallberg of The Millions for creating this sentence diagram [↩]