What is Computational Thinking?
Although Computational Thinking is a hot topic within the World of Computer Science today, the term was actually first used by Seymour Papert back in 1980(1). Within the World of Computer Science, it is the ‘vogue’ term of the moment, however I believe it’s status is well justified. Personally, I believe that Computational Thinking is one of the most important skills you can teach children today. Simply put, Computational Thinking is a technique used to solve problems, logically. Originally created as a planning technique within Computer Science, Computational Thinking consists of four key components which I’ve summarised within the graphic below:
The first component of Computational Thinking is Decomposition. This stage involves breaking the problem down into smaller components so they can be tackled easier. The more you can break a problem down, the easier it is to solve. A good decomposition exercise is to decompose the components of a bike. You may initially break down a bike into its frame, wheels, handle bars and gears. However, you could then break each component down even further, for example a wheel can be broken down even further into the spokes, hub, rim, tyre and valve. This stage also allows you to develop a better understanding of the problem you face by identifying all the components in detail.
The second stage is Pattern Recognition whereby similarities and trends are identified within the problem. If some problems are similar in nature (both within the current problem being tackled or within past problems), there is a good chance that they can be solved using similar, or repeated techniques. This is a key component for making efficient solutions, and saving you time in the long run. Imagine you are preparing for a 10km run race. Last time you attempted the same race, you started off really quick and by the half way point you were so fatigued you had to pull out of the run. Your prior experience will tell you that this technique was not successful. However, when you held a consistent, steady pace in training you were able to complete the distance successfully. During the race, you may identify the times where you are going too quick and adjust your pacing accordingly. It is often why you hear a sports coach using the phrase ‘you play the way you train’ i.e. the effort and intensity you apply within your training will be reflected when you go and compete. Consider a scenario where you are asked to write a short programme to draw a square. The pattern of drawing a line and rotating the pen 90 degrees can be repeated 4 times in a loop rather than writing out the instruction four times in a row. Pattern Recognition is a key skill when it comes to creating efficient and effective solutions to given problems.
The penultimate stage is Abstraction which involves the identification of key components of the solution. Rather than looking at specific details, it requires the ability to filter out unnecessary elements of a problem so that you only focus on the important elements. Prior to creating a building, an architect may want to present their design as a scaled down model. This model will include all the key design elements that will be included within the final building. Any adjustments or additions can be discussed with clients at this stage before building work begins. Another great example one of my students came up with recently is when playing sport, you try and focus on the tactics you should be performing… and you ignore any sledging by your opponents! Abstraction allows you to consider all the key components prior to the creation of the final solution, while ignoring any unnecessary details.
The final stage within the Computational Thinking process is Algorithm Design whereby a detailed step-by-step set of instructions are created which explain how to solve the problem. The measure of a good algorithm is one that can be passed to someone else to follow without the need for any extra explanation. The world is full of algorithms; following cooking recipes, building flat pack furniture, going to a fast food drive-through or paying for your shopping at a self-service counter. The more you think about it, the more you realise that you tend to follow many sets of instructions every day. The above examples are clearly signposted, while others are more innate, for example, keeping to the speed limit while driving your car, following correct spelling and grammar rules you learned in school or a code of behaviour between friends. As an additional component attached to the algorithm design phase, debugging is also an important skill to develop. Debugging refers to the ability to identify and rectify errors within an algorithm. As with the other components of Computational Thinking, debugging is a transferrable skill and can be developed across the curriculum through acting upon and providing feedback. Algorithms help us to make sense of the World around us.
So why is Computational Thinking so useful? From a Computer Science perspective, within a World of ever changing and evolving programming languages and techniques, it’s great to have a grounded constant that you can refer back to. Secondly, the Computational Thinking process is an adaptable template and as such it is a transferrable skill which I believe has much wider applications than solely Computer Science. Within a World where we are faced with ever more complex issues within society, the environment and politics, the need for clear, logical and rational thinking has never been more necessary.
If you want to learn more about Computational Thinking and want to integrate it into your classroom, here are some of my best resources to get you started:
(1) Papert, Seymour. Mindstorms: Children, computers, and powerful ideas. Basic Books, Inc., 1980.