Imagine you’ve just been asked to come up with an idea to a big, complex problem. It’s within an area of knowledge you’re not too familiar with, but it is down to you to solve it. What do you do? Where do you start? How do you make the project feel less daunting?!
Computational thinking is simply the process of solving a problem logically. Ultimately this involves breaking down the problem into a series of logical steps, represented within an algorithm. It is a problem solving technique which is particularly suited to the world of computing due to the fact that computers only process logical instructions. However, I believe that all children should be taught the application of computational thinking as, within our current society, it is arguably one of the most important skills we need to teach children today. Let me explain why.
We are in a new age of intelligence. With almost a Yottabyte’s worth of knowledge available on the internet, information has never been more readily available; if you need information, the first port of call is to Google it. Technology is advancing at a rapid pace and as educators we are trying to prepare students for jobs that don’t even exist yet. As such, more than ever before, modern society requires people who can confidently face problems, regardless of their nature, and work out logical solutions. In a world of constant technological change and adaptation, computational thinking is a constant, yet adaptable, problem solving technique which has application across all walks of life.
So, what does it entail? Computational thinking can be split into four parts; Decomposition, Pattern recognition, Abstraction and Algorithmic design.
The first part of the computational thinking process is Decomposition. This essentially means to break down a given problem into smaller, more manageable parts. Although this is particularly useful when embarking on large scale projects, it is a useful technique to apply to any given task. As educators, how many times have you seen students panicking about how much coursework they have to complete? Often the size of a task is enough to put you off even starting it. It’s easier just to give up. However, if that happened every time we faced a daunting challenge, human being would never accomplish anything! This is where decomposition comes into play; by breaking a problem down into smaller tasks, the challenge doesn’t seem so insurmountable. Within my computing classes, this phase usually requires a breakdown of a project brief, identifying all the required user requirements.
Once the problem has been broken down, the second part of the computational thinking process is Pattern recognition. Consider this example; a coach has a young athlete who is aspiring to compete in the Olympics. The coach has trained many athletes in the past and as a result has built up a bank of training techniques and progressions, some which have proved successful, some not so. It is up to the coach to select which training techniques to apply to the athlete in order for them to achieve their goal. Pattern recognition is the ability to apply previous problem solving techniques to the current problem. It also relates to the identification of patterns or similarities within the decomposed tasks which may include elements that can be repeated in order to save time and therefore improve the efficiency of the problem solving process. Within my computing classes, this phase usually consists of an analysis of the separate tasks required to solve the problem. Analysis would consist of assessing the best programming techniques to use in order to accomplish each task.
The third phase of computational thinking is Abstraction. Essentially, this phase requires a focus on the important (or key) areas of the problem. Teachers do this all the time. When planning a scheme of work, we don’t dive into the specific detail of the lessons first, instead we plan out how the unit of work will fit into the term (or the year) through the use of an overview. This is an example of abstraction; focusing on the key tasks, not the specific details. The creation of architectural models which present the structure of buildings, concept designs before the creation of characters within the film industry, long term training plans which include the different phases and cycles within an athlete’s competitive season, noting key events within a calendar and writing a revision plan in preparation for exam season are all examples of abstraction. Abstraction is often linked to decomposition, however the outcome should be more structured. Within my computing classes, I encourage students to create an overview diagram of their proposed solution, showing all the key tasks and flow decisions required to fulfil the user requirements.
The final phase of the computational thinking process is the Algorithmic design phase. An algorithm is a step by step set of instructions for completing a task. It is in this phase where you write out your proposal of how to solve the problem. By following the computational thinking process, the algorithm will take into consideration the use of each of the three previous phases; how the problem has been broken down, what techniques are best to use in order to accomplish each specific task and how the solution should be structured based on the order of each key task. The algorithmic design phase requires an analysis of each specific task, providing a step by step set of instructions on how to complete it. Algorithms are all around us; we follow instructions when building flat pack furniture, we cook food by following a recipe, we find the fasted route from A to B by following the instructions given on a satnav device, we go to the gym and follow a specific routine of exercises given to us in a training programme, storyboards are used to identify the key scenes within a film. Within my computing classes, I encourage my students to use either flowcharts or pseudocode, depending on their preference. This process often goes through 2-3 drafts before the students are happy with their designs. The aim is to create an algorithm that is not specific to any one programming language, instead should be transferrable across languages.
Computational thinking is not just for computer scientists, it is a structured problem solving technique with broad applications; within schools it’s a way of thinking that can be applied across all subject areas.
If you want more information on how to deliver and promote computational thinking within your school, check out my resources below;
Computational thinking for KS3; https://www.tes.com/teaching-resource/computational-thinking-for-ks3-11111354
Computational thinking for KS4: https://www.tes.com/teaching-resource/computational-thinking-for-gcse-computer-science-11111367
If you want some practical ideas for promoting computational thinking across the curriculum which are suitable for both primary and secondary students, check out this resource; https://www.tes.com/teaching-resource/application-of-computational-thinking-11512174
Download my poster display to promote computational thinking within your classroom; https://www.tes.com/teaching-resource/-what-is-computational-thinking-posters-11415759
Robbot Resources teaches secondary ICT & computing in Bristol.