In your edtech journey and research you may have come across the term “computational thinking”, and like me, you may have delved into a few definitions of the term; at which point you may have also have come across a variety of definitions, most of which have their origin in computer science.
The most cited of these definitions being Jeannette M. Wing’s ACM article “Computational Thinking” published in 2006. Despite its short length, and accessible style, the article’s list-like structure and adjective-dense paragraphs left me more befuddled than before. Try this on for size:
“Computational thinking is thinking recursively. It is parallel processing. It is interpreting code as data and data as code. It is type checking as the generalization of dimensional analysis. It is recognizing both the virtues and the dangers of aliasing, or giving someone or something more than one name. It is recognizing both the cost and power of indirect addressing and procedure call.”
So, let’s take a few steps back, and look at the fundamentals of computational thinking by way of defining some of the common terms. Let’s agree, in the first instance that, computational thinking broadly means: thinking like a computer.
Teaching humans to think computationally has, from what I can garner from articles here and elsewhere, a few benefits: solutions to problems are coded, and expressed in such a way that other systems and other “machines” human or computer can take the solutions (algorithms) and apply them to similar but not identical problems. It’s a way of coding and scaffolding thinking, keeping a record of the steps taken, for future benefit. Not only does computational thinking enable the encoding of solutions, it also supplies a ready-made list of steps to take when confronted with even more complex problems.
Computers are programmed to approach problems in a systematic way, relentlessly seeking solutions - in a way that is undaunted and fearless - and which many educational experts feel could be a valuable asset to the thinking tool-kit of students. Wing goes so far as to say it should be taught to youngsters alongside reading and maths.
Computers follow, or are programmed to follow, four relatively unequivocal steps:
Let’s try and define them within an educational context:
Most teachers will immediately recognize this is as a common way to assist students to understand complex subjects, breaking it down into smaller more comprehensible parts. The act alone, of “seeing” or mapping the entire problem from a bird’s eye-view, then drilling down further, is in itself exhaustive and often revealing.
Pattern recognition helps us also to recognize, and class, a number of problems and objects together. If we have solved one problem, when we recognize it’s pattern again elsewhere, we needn’t reinvent the wheel, we can apply the same solution there.
A simple example would be learning how to ride a bicycle; this requires we understand the concepts of balance, pedaling (the forward motion that maintains balance), braking and steering - regardless of which bike we ride in future, this model should serve us in all instances.
Notionally, once an algorithm is functioning, the programmer can then proceed to run the algorithm automatically, leaving them to then focus on programming more higher order functioning for the system.
I have really enjoyed discovering more about computational thinking, and although the eagle-eyed among our readers will no doubt be decrying: “But that’s how I already teach in my classrooms!” I think it is worthwhile firstly to decode and understand the steps, considering they form the basis of almost every computer network on earth, and secondly to recognize the power of deep analyses, coupled with a fearless determination to find a solution. On that note, I have decided to do a part two to this feature, and will look at practical examples of teachers who are explicitly applying computational thinking to their lesson plans in my next post.