*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.

### Four Key Concepts in Computational Thinking

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**.

#### What is Decomposition?

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.

#### What is Pattern Recognition?

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.

#### What is Abstraction?

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.

#### What is Algorithmic Thinking?

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.

### A Computational Thinking Example with Doughnuts

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:*

- Bear Claws: $3.00 each
- Glazed Raised $1.60 each
- Old Fashioned $2.00
- Jelly Filled $2.10
- Maple Bars $2.15

*Number of Doughnuts by Type:*

- 25 Bear Claws $3.00 each
- 30 Glazed Raised $1.60 each
- 10 Old Fashioned $2.00
- 15 Jelly Filled $2.10
- 30 Maple Bars $2.15

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:

- 25 Bear Claws: x $3.00 each = $75
- 30 Glazed Raised x $1.60 each = $48
- 10 Old Fashioned x $2.00 = $20
- 15 Jelly Filled x $2.10 = $31.5
- 30 Maple Bars x $2.15 = $64.5

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.

- Number of Items by Type x Price Per Unit = Cost per Item Type
- Cost Per Item Type + Cost Per Item Type + Cost Per Item Type = 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.

- Step 1: Add up the items by type or flavor.
- Step 2: Assign the price per each item type.
- Step 3: Multiply the number of items by type with its cost per unit.
- Step 4: Add the total cost for each type together.
- Step 5: Bon Appetit!

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, it’s clear that computational thinking can be replicated to **solve problems with mass amounts of data **and guide unknown journeys through these data-filled landscapes.

### Why is Computational Thinking Important?

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, 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*:

- Embracing ambiguity with confidence
- Persisting through iteration and experimentation
- Practicing teamwork
- Leading learning with inquiry
- Situating oneself as a lifelong learner

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.

*Discover more about how computational thinking also cultivates social and emotional learning in this on-demand webinar.*