Computational thinking is one of the core objectives that runs through the computing program of study in England from Key Stage 1 to Key Stage 4. Before computers can be used to solve a problem, computational thinking refers to understanding the problem itself and the ways in which it could be resolved. Software engineers and computer scientists for example, routinely engage in computational thinking. As a higher order thinking skill, computational thinking has applications both across and beyond the school curriculum.
There are four key techniques to computational thinking:
Abstraction – focusing on the important information only, ignoring irrelevant details
Algorithms – developing a step-by-step solution to the problem
Decomposition – breaking down the problem into smaller, more manageable parts
Logic - looking for similarities among and within problems
Learning to program is one of the best ways to develop computational thinking, as it uses each one of these techniques. My intention here is to show an example of a lesson in which computational thinking is taught at Key Stage 1 (5 to 7 years) through programming. I took the lesson plan (attached above) from The Barefoot Computing Project and I taught it to my 1st grade class last week. It required the children to work in pairs to create step-by-step instructions through pictures. The pairs then swapped each other’s instructions, which they used to draw the ‘crazy character’ that the other child had in mind.
This sort of lesson is ‘unplugged’ (no computer needed) and teaches children about algorithms. Although the children used instructions to make a ‘crazy character’, any set of instructions could be used to introduce algorithms. Algorithms are a critical foundation for learning to program because without them no program would run. Since this lesson’s objective was just an introduction to algorithms, only the term ‘algorithm’ was discussed explicitly. The other techniques of computational thinking (abstraction, decomposition and logic) were not explicitly mentioned, but the ideas behind them were explained to the pupils using child-friendly language. I include here how the four key techniques to computational thinking are embedded into this lesson.
Abstraction captures only the most important features of the problem, filtering out the details that we do not need. The Tube map for the London Underground for instance, shows the order of the stations and the interchange between lines, typically ignoring physical distances and locations.
An algorithm is a set of step-by-step instructions to solve a problem. Pupils learn during this lesson that algorithms are the sets of instructions that others can follow to draw their characters.
Bugs are explained to the pupils as a mistake in the algorithm, something that does not work in the program as it was intended. Debugging then needs to be done in which pupils think what the algorithm should do, test it to find out (by showing their partner the drawing), work out where it goes wrong and then fix it. For example, when their partner draws the legs at the bottom of the body but they were supposed to be at the top, the algorithm has to be changed accordingly. In other words, debugging is likely to involve adding greater precision to the language used in one or more of the steps.
Decomposition is where pupils break down a problem into smaller parts. For example, pupils here are required to draw the body first, then the eyes, then the legs, and so on. This activity in particular, can help children to see the importance of looking at a problem in stages.
Logic requires pupils to look for patterns in problems. By using logic pupils are able to predict what will happen when their partner uses the algorithm to draw the character. They use previous knowledge about what has already happened for steps like this. By both creating and following more algorithms pupils will recognise that they use the same blocks of “code” (in this case, written instructions and pictures) time and time again.
To summarise, the focus on computational thinking in the new curriculum reflects a shift of emphasis from the skills of using ICT to developing an understanding of computer science. Computational thinking, which is the heart of computer science, is not only a useful skill to teach, but it’s also an important and interesting skill to learn. As I hope to have demonstrated here, the basics of computational thinking can be taught at a very young age (from 5 years) without even using a computer. Since any set of instructions can be used to teach algorithms, the related ideas of abstraction, decomposition and logic can also be embedded into such a lesson to develop children’s computational thinking.