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.
What is Computational Thinking?
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.
Why should teachers encourage Computational Thinking
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:
- Pattern Recognition
- Algorithm Design
Let’s try and define them within an educational context:
- Decomposition. This is a computer science term that refers to a program’s ability to deconstruct a system, or problem, into smaller sets of categories or processes. Computers are able to “see” how a larger, more complex model, is in fact made up of smaller models, that can in turn be broken up into even smaller models and composite parts.
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. At this stage a computer program will identify similarities in the data, and cross categorizing each category or subset according to what makes then similar. Lauded as one of the few things that “make us human” is our ability to see patterns, whether they be in the rising and setting of the sun, or indeed in the perfect uniformity of a flower’s petals.
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.
- Abstraction. This is the stage where the data is cross-referenced with the problem or question. Computers are “taught” to be ruthless in eliminating extenuating details and data, mining only for similarities and patterns that relate to the problem at hand. This is also the process known as modelling, where - outside of the specific, and often distracting details - we make a model, or representation of the data set that applies universally.
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.
- Algorithm Design. Programming a computer is much like teaching a child how to tie their shoelaces: you provide a set of stepped instructions that when followed end up with the same result - regardless of the shoes in question. Once data has been analysed, and patterns recognized, one can then begin designing or recording the steps taken, which will result in a standard recipe that when followed, always results in the same thing.
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.