💻

Computational Thinking

32 concepts in CS Thinking

Computational thinking is a problem-solving approach that draws on concepts fundamental to computer science but applies far beyond programming. It involves four key practices: decomposition (breaking complex problems into smaller, manageable parts), pattern recognition (identifying similarities and trends), abstraction (focusing on essential information while ignoring irrelevant details), and algorithmic thinking (designing step-by-step solutions). Students learn to think systematically about processes, represent information efficiently, and automate solutions where possible. These skills translate directly into writing code, but they also strengthen reasoning in mathematics, science, and everyday decision-making. As technology becomes central to nearly every career, computational thinking provides students with a versatile intellectual toolkit for understanding and shaping the digital world around them.

Suggested learning path: Start with decomposition and pattern recognition using concrete, unplugged activities, then introduce abstraction and algorithmic design, and finally apply these skills through simple programming projects.

Algorithm

A step-by-step set of instructions for solving a problem or accomplishing a specific task.

Decomposition

Breaking a complex problem into smaller, more manageable parts that are easier to solve.

Pattern Recognition

Identifying similarities, trends, or regularities in data or problems to build general solutions.

Abstraction

Focusing only on the essential information needed to solve a problem while ignoring irrelevant details.

Sequence

Executing a series of instructions one after another in a fixed, specific order.

Prerequisites:
algorithm

Selection

Choosing which block of code to execute based on whether a condition is true or false.

Prerequisites:
sequence

Iteration

Repeating a block of instructions multiple times until a stopping condition is satisfied.

Prerequisites:
sequence

Variable

A named container in a program that stores a value, which can be read, updated, or replaced.

Data Types

Categories that classify data values and determine which operations can validly be performed on them.

Prerequisites:
variable

Boolean Logic

A system of logic that works with only two possible values: true and false, combined with AND, OR, NOT.

Prerequisites:
selection

Function (Programming)

A named, reusable block of code that performs a specific task, taking input and optionally returning output.

Prerequisites:
algorithm
abstraction

Parameters

Named values passed into a function when calling it, allowing the same function to operate on different data.

Prerequisites:
function

Array

An ordered collection of values stored together and accessed by their numeric index position.

Prerequisites:
variable
data types

Debugging

The systematic process of finding, diagnosing, and correcting errors (bugs) in a program.

Prerequisites:
algorithm

Input/Output

The mechanisms by which a program receives data from the outside world (input) and sends results back (output).

Binary

A base-2 number system that uses only two digits, 0 and 1, to represent all values.

Bits and Bytes

A bit is a single binary digit (0 or 1); a byte is a group of 8 bits representing 256 possible values.

Prerequisites:
binary

Recursion

A technique where a function calls itself to solve progressively smaller instances of the same problem.

Prerequisites:
function
iteration

Algorithm Efficiency

How an algorithm's time or memory requirements grow relative to the size of its input.

Prerequisites:
algorithm

Searching

The process of locating a specific item or value within a collection of data using a systematic strategy.

Prerequisites:
array
algorithm

Sorting

Rearranging items in a collection into a defined order, such as smallest to largest or alphabetical.

Prerequisites:
array
algorithm

Event

A detectable action or occurrence in a program, such as a user click, key press, or timer expiry.

Prerequisites:
function

Data Representation

The way information—numbers, text, images, sound—is encoded as binary digits inside a computer.

Prerequisites:
binary
bits bytes

Simulation

Using a computer program to model and experiment with a real-world system or process.

Prerequisites:
algorithm
abstraction

Testing

Systematically running a program with known inputs to verify that its outputs are correct.

Prerequisites:
algorithm
debugging

Modular Design

Structuring a program as a set of independent, self-contained modules, each responsible for one thing.

Prerequisites:
function
abstraction
decomposition

Binary Search

An efficient algorithm for finding a target value in a sorted list by repeatedly halving the search range.

Prerequisites:
searching
array
efficiency

Linear Search

A search algorithm that checks each element in a list one by one until the target is found.

Prerequisites:
searching
array

Merge Sort

A divide-and-conquer sorting algorithm that splits a list in half, sorts each half recursively, then merges the sorted halves.

Prerequisites:
sorting
recursion
efficiency

Bubble Sort

A simple sorting algorithm that repeatedly compares adjacent elements and swaps them if out of order.

Prerequisites:
sorting
iteration
efficiency

Logical Operators

Operators that combine boolean expressions: AND (both true), OR (at least one true), NOT (opposite).

Prerequisites:
boolean logic
selection

Truth Tables

A table listing all possible combinations of boolean inputs and their corresponding outputs for a logical expression.

Prerequisites:
boolean logic
logical operators

More CS Thinking Topics