What is computational thinking? Problem solving. More specifically, computational thinking is a set of skills and processes that enable students to navigate complex problems.
While this methodical approach is derived from the process used to develop code and to program applications, computational thinking can be much more broadly applied. Computational thinking is a map from curiosity to understanding that makes it easier to tackle both large and small problems.
Both ‘plugged’ and ‘unplugged,’ computational thinking underscores the course of student learning in an era when education is moving from content acquisition to higher-order thinking skills.
Computational thinking includes four key concepts that can be applied to nearly any problem: decomposition, pattern recognition, abstraction, and algorithmic thinking. The process starts with data as the input and through a series of steps, we – like computers (hence the name) – process the information and produce some sort of output to the problem.
What makes this especially different from other problem-solving processes is that it, in the end, results in an algorithm, which is a series of steps a person or computer uses to perform a task or solve the problem. In doing so, computational thinking ensures that the process can be replicated. In other words, computational thinking is about the process itself just as much as it is about solving the problem.
Using decomposition, students break the problem down into smaller, more manageable parts. With the power of decomposition, problems that seem overwhelming at first become much more manageable.
Students analyze data and seek to recognize patterns or connections among its different parts. Pattern recognition is essential to building understanding in the midst of dense information.
With abstraction, students seek out the most important information in each decomposed problem. Abstraction helps students look at the bigger problem and identify how the important details (or the abstraction) can be used to solve other areas of the same problem.
With algorithmic thinking, students endeavor to develop a step-by-step process to solve the problem so that our work is replicable by humans or computers. As was said earlier, this is the crux of computational thinking. Algorithm design helps students to both communicate and interpret clear instructions for a predictable, reliable output.
What do these different pieces look like all together? Let’s say we’ve been tasked to bring doughnuts to the teachers’ lounge for our fellow educators. We take everyone’s order and have a sizable list of 100 doughnuts we intend to purchase, and we want to calculate the total cost before going to the shop. In order to do so, we can use computational thinking to make this problem more easily solvable. Here’s how.
We start by defining the problem:
We want to calculate the total cost of the 100 doughnuts.
My honest reaction when seeing this problem statement is to grab my phone and start adding the cost doughnut by doughnut. And yes, that could work, but it’s an inefficient and unnecessary approach to take. Computational thinking offers us a far better, less laborious, and joint-saving way.
We can decompose the problem into smaller steps. 1) We need to know the price of each type of doughnut. 2) We need to know how many of each doughnut type we are buying. Once we know this, we can calculate the total cost.
Price List:
Number of Doughnuts by Type:
Now, with an organized list of the number of doughnuts and cost per type, we recognize that each item on the list follows the same pattern, which allows us to construct an equation to calculate the total cost for each doughnut type.
Exhibit A: 25 Bear Claws x $3.00 = $75.
With the patterned data type, this equation easily repeats down the list:
Finally, we can then add the costs for each doughnut type to calculate the total: $75 + $48 + $20 + $31.5 + 64.5 = $239.
Because we know National Cupcake Day is coming up and that treats never fail to lift my spirit, how can we leverage this work to help our colleagues similarly create a budget for those? With the equations used to solve the problem, we can abstract a template with two formulas for calculating the total cost.
This can be applied with the cupcakes or with ice cream sandwiches, more doughnuts, or kale chips (to make up for all the dessert – that’s balance, right?). The formula – with the noise and complication from the initial problem removed – is now an accessible tool.
We can then further extend the transfer of knowledge from this experience to ensure a reliable output every time by constructing an algorithm so that we and others can replicate it for more sweet celebrations.
As was hopefully represented in this computational thinking example, this process is a shift in how we approach problem solving. With a formulaic process, we can navigate complexity and stay focused on what is important, without losing site of the solution amongst all the noise. And even though this was a basic example of computational thinking, it’s clear that the process can be replicated to solve problems with mass amounts of data and guide unknown journeys through these data-filled landscapes.
This ability to navigate complex information and to think in a way that complements technological processes is essential to student readiness.
As a foundation for coding and computer science, computational thinking encourages us to reflect clearly on a problem we’re solving for and intentionally program solutions for it.
As a foundation for technology integration, computational thinking encourages us to consider how we can leverage technology to aid us in solving these problems – to automate certain tasks.
And as a foundation for thought, computational thinking encourages us to be diligent and organized in our work, to plan from the outset how we want to solve a problem but to embrace the fluidity of the process as we come to more and more understanding of the data and information we’re navigating.
Through this, computational thinking builds essential attitudes (the good kind of student attitude) like:
Students learn to ask bold questions and persist through complexities toward yet-to-be imagined solutions. In applying computational thinking, students collect and analyze resources, think critically and creatively in collaborative environments, and develop a growth mindset by learning to embrace ambiguity and reframe challenges as opportunities, whether with or without technology.