2.1.1 (a) The nature of abstraction

What is abstraction?

Abstraction is the process of reducing complexity by removing unnecessary detail and focusing only on the essential features needed to solve a problem or understand a system.

In computational thinking, abstraction allows us to:

  • Manage complex problems more effectively

  • Create generalised solutions

  • Communicate ideas clearly

  • Design systems that are easier to develop, test, and maintain

Abstraction does not mean losing information arbitrarily. Instead, it means deliberately choosing which details are relevant at a particular stage.

In Computing

Abstraction is used in computing in a variety of situations, including the design of algorithms, the creation of data models, whenever we write functions, or APIs, or model real-world systems. The key idea is that different levels of abstraction exist, and each level hides detail from the one above it. A good comparison for this would be something like the layering of protocols in networking. Each one serves its own purpose and hides complexity from the others.

Real-world analogy

Consider a map:

A road map does not show all trees, buildings, or pavement slabs. It certainly doesn’t show every blade of grass! Some maps even ignore distance, like tube maps in London – when you take the tube, you don’t really need to worry about physical distance. Each map is designed for a specific task, so it is an abstraction for that purpose.

Abstraction therefore is not a perfect representation of reality.

Some details are omitted, assumptions may be made, and edge cases may be ignored – but relevant behaviour is retained and over-complicated situations can be simplified. This is important for computer scientists, since we often have to grapple with complex programs and problem solving. Common examples of where abstraction is used to great effect include functions, libraries, and even variables.