NCC Education’s new suite of Computing programmes for schools (called ‘Digi’) focuses on digital literacy, online safety, computational thinking and coding. These are our ‘four pillars of Digi’ and it’s great to see even first year primary students developing these skills under the new English National Curriculum for Computing!
But what exactly is computational thinking? What’s the difference between computational thinking and coding? Aren’t they the same? Isn’t computational thinking just thinking like a computer? Well, not quite … and some might say not at all!
The term computational thinking (CT) has been around for some time. Seymour Papert, the South African-born American mathematician and co-inventor of the Logo programming language is widely credited with first using the term in 1980. Varying definitions are available to today’s CT researchers, and with some pinning the concept more firmly to coding than others. This is because computational thinking can perhaps be most effectively learned when linked to coding.
I tend to introduce the term this way: computational thinking is about learning to adopt a systematic approach to solving problems. It is applicable to many different subject areas, not just Computing, and fundamentally it’s a set of cognitive and problem solving ‘skills for life’.
Here’s an example, not showing CT in it’s simplest form but I think a nice familiar scenario to explain the concept and also introduce some of the related terminology.
Let’s say you want to have a self service vending machine providing tea and coffee to customers. What steps would the customer need to go through to get their drink of choice? This could involve paying the right amount for the drink (if the machine charges), selecting either tea or coffee and further choices around milk/cream and sugar. Voila! The perfect drink is offered up by the machine – well as good as any vending machine drink can be, of course!
You don’t need to be a programmer or have any coding skills to begin working out the steps involved, what order of actions will produce the desired outcome (the customer’s delightful drink!), what prompts and responses the coffee machine will need to have, what inputs the customer will need to make and at what stages in the overall process these prompts, responses and inputs will need to happen.
But it would really help to follow a systematic approach here to ‘solve the problem’; let’s say by breaking it down into smaller parts, like dealing with the payment, the main tea/coffee choice and then refining the drink with milk/cream/sugar (the CT technique called ‘decomposition’). Then you might want to identify any similarities within the stages (‘pattern recognition’), keeping focused on the relevant and important details only (‘abstraction’), to finally arrive at the overall step by step solution; the rules to follow from start (e.g. putting your coins into the machine) to finish (e.g. getting your drink) – and this is your ‘algorithm’, the solution!
By systematically working these steps out and testing our rules to see if they really do produce the desired outcome (the right drink!) we are in effect practicing and engaging computational thinking. We can take all kinds of complex problems and by applying this systematic CT approach, develop possible solutions. A pretty great ‘skill for life’, isn’t it?
Now… taking our solution – our ‘algorithm’ – and then implementing it in code… well, that’s coding of course! And there’s your difference – computational thinking and coding.
Please feel free to contact me at firstname.lastname@example.org if you would like to know more about NCC Education’s fantastic new Digi programmes for primary and secondary schools.