The two types of computational thinking

Jun 02, 2021

Miles Berry

Computational thinking (CT) is an important set of skills and approaches in the modern era. It plays a vital role in problem-solving, not only within the field of computing but across various disciplines. However, the concept of computational thinking is often misunderstood, leading to confusion about how it should be taught and integrated into curricula.

What is computational thinking? It is often misinterpreted as merely programming, but it is much broader. The idea that CT is simply “thinking like a computer” or even necessarily “thinking like a computer scientist” should be challenged. Instead, two primary types of computational thinking can be identified. The first applies principles of computer science to problems in other disciplines, and the second focuses on designing automatable solutions.

The English National Curriculum lacks a precise definition of computational thinking. While its importance is highlighted, the curriculum does not outline what it entails, leaving educators to interpret and implement it in their own ways. Some view CT as a problem-solving method applicable across subjects, while others argue that its true essence lies in its connection to computation itself.

Jeanette Wing (2006)originally favoured the first approach. She defined computational thinking as a fundamental skill that should be taught alongside reading, writing, and arithmetic. Wing emphasised that CT includes logical reasoning, abstraction, and problem decomposition—skills that can be applied across various domains. This perspective supports the idea that computational thinking can be embedded into other subjects, such as science and mathematics, without necessarily requiring programming.

However, a stronger alignment exists with the second type of CT: finding and implementing automatable solutions. Computational thinking without computation becomes merely thinking, just another form of generic problem-solving. The key distinction lies in the ability to express problems and solutions in a way that a computer can process. This involves understanding algorithms, abstraction, and automation.

A compelling example is the game of Nim, a mathematical strategy game. Students begin by playing the game, then gradually recognise patterns, identify winning and losing positions, and ultimately develop a strategy. From there, they can learn to automate the game’s logic, implementing it in code. This process exemplifies computational thinking in action—progressing from problem-solving to automation.

Another striking example is the implementation of search algorithms, such as binary search. Students can start with unplugged activities, such as looking up words in a dictionary, before moving on to coding a program that implements the search process efficiently. This transition from conceptual understanding to coding underscores the importance of computational thinking as an approach to problem-solving that leads to computational solutions.

CT relates closely to other STEM disciplines. In mathematics, logical reasoning and abstraction are crucial components of computational thinking. Science relies on pattern recognition, hypothesis testing, and data analysis, all of which align with CT. Engineering disciplines, especially software engineering, heavily depend on computational thinking in designing systems and automating processes. The Royal Academy of Engineering even highlights specific “engineering habits of mind” that closely align with CT principles.

In education, the challenge is how to effectively teach computational thinking. Approaches that separate CT from coding have been critiqued, as students benefit most when they apply CT directly in programming tasks. While unplugged activities can help introduce core concepts, deeper understanding and motivation emerge when ideas come to life in code.

One study showed that students who participated in Code Clubs improved significantly in coding skills but did not necessarily show corresponding improvements in broader computational thinking. This suggests that teaching coding alone is insufficient—explicit instruction in computational thinking strategies is necessary. Papert’s (1980) early work on Logo programming also supports this idea; simply learning to code does not automatically improve general problem-solving skills unless explicitly guided.

To address this, a structured approach is recommended: encouraging students to first analyse and break down problems, identify algorithms and patterns, and then implement their solutions in code. This is particularly relevant in teaching game development, where students must not only write code but also understand the logic and mechanics underlying their programs.

Ultimately, an approach to computational thinking should place problem-solving and automation at its core. Whether applied to mathematics, science, or engineering, CT should empower students to think algorithmically and use technology to solve real-world problems. The goal is not just to teach coding but to cultivate a mindset that enables students to harness computation as a powerful tool for problem-solving.

As computational thinking continues to evolve, educators must consider how best to integrate it into curricula. A deeper understanding of how to express problems in ways that computers can solve ensures that students develop skills that extend far beyond the classroom, preparing them for a world increasingly shaped by computation.

Based on my virtual keynote for CTE-STEM 2021, the 5th APSCE International Conference on Computational Thinking and STEM Education.