Skip to main content
EnglandComputer ScienceSyllabus dot point

How does removing detail (abstraction) and breaking a problem into parts (decomposition) make a hard problem solvable?

Thinking abstractly: the nature and need for abstraction, representational and procedural abstraction, and the use of models; thinking ahead and decomposition: breaking a problem into smaller sub-problems.

An OCR H446 answer on the computational thinking skills of abstraction and decomposition: the nature and need for abstraction, representational and procedural abstraction and the use of models, and decomposing a problem into smaller, more manageable sub-problems.

Generated by Claude Opus 4.813 min answer

Reviewed by: AI editorial process; not yet individually human-reviewed

Have a quick question? Jump to the Q&A page

Jump to a section
  1. What this dot point is asking
  2. The answer
  3. Examples in context
  4. Try this

What this dot point is asking

OCR wants the meaning and need for abstraction (including representational and procedural abstraction and the use of models), and decomposition, breaking a problem into smaller sub-problems. These are the foundations of computational thinking. Expect "explain abstraction" and "how does decomposition help" questions, often applied to a system.

The answer

The nature and need for abstraction

Representational and procedural abstraction

Decomposition

Examples in context

A map is a classic abstraction: it keeps roads and junctions and discards everything else. A weather model abstracts the atmosphere into a grid of relevant variables. Large software is decomposed into modules (authentication, payment, reporting) built and tested separately. Procedural abstraction is why you can call a library's sqrt without knowing the algorithm. OCR links these skills to thinking ahead and procedurally, to subroutines and modular programming, and to the analysis and design stages of the Programming Project.

Try this

Q1. State what abstraction removes from a problem. [1 mark]

  • Cue. Unnecessary or irrelevant detail, leaving only the features relevant to the problem.

Q2. State the difference between representational and procedural abstraction. [2 marks]

  • Cue. Representational abstraction is choosing what data to keep and how to represent it; procedural abstraction hides how a process works behind a named operation.

Q3. Give one benefit of decomposing a problem into sub-problems. [1 mark]

  • Cue. Each sub-problem is easier to solve, test and maintain (also: independent/parallel development and reuse).

Exam-style practice questions

Practice questions written in the style of OCR exam questions on this dot point, with worked answer explainers. The year tag is the paper they imitate, not the source.

OCR 20196 marksExplain what is meant by abstraction in computer science, and explain how abstraction is used when designing a model of a real-world system such as a train timetable app.
Show worked answer →

Abstraction (up to 3): abstraction is the process of removing or hiding unnecessary detail so that only the features relevant to the problem remain, making it simpler to understand and solve. It lets a programmer concentrate on what matters and ignore complexity that is not needed.

Applied to the model (up to 3): a train timetable app models only the relevant features, stations, departure and arrival times, routes and delays, and ignores irrelevant detail such as the colour of the trains, the staff rosters or the track materials. Representational abstraction selects which data to keep (times, stations); procedural abstraction hides how a process works behind a named operation (for example "find next train" without exposing the search). Markers reward removing unnecessary detail plus a relevant example of what is kept and what is ignored.

OCR 20214 marksExplain how decomposition helps a programmer solve a large problem, and give an example of decomposing a problem into sub-problems.
Show worked answer →

Decomposition (up to 2): decomposition breaks a large, complex problem down into smaller sub-problems that are each easier to understand, solve, test and maintain; the sub-solutions are then combined. It also allows different parts to be worked on independently, possibly by different people, and encourages reusable modules.

Example (up to 2): a "school report system" decomposes into sub-problems such as "read student marks", "calculate averages", "assign grades" and "format and print the report", each of which can be coded and tested as a separate subroutine. Markers reward the smaller-easier-to-manage point plus a sensible breakdown into named sub-problems.

Related dot points

Sources & how we know this