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.
Reviewed by: AI editorial process; not yet individually human-reviewed
Have a quick question? Jump to the Q&A page
Jump to a section
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
- Thinking ahead: identifying inputs and outputs, preconditions, caching and reusable program components; thinking procedurally: identifying the steps and the order of a solution and the components that can be reused.
An OCR H446 answer on the computational thinking skills of thinking ahead and thinking procedurally: identifying inputs, outputs, preconditions, caching and reusable components, and determining the steps and the order of a procedural solution.
- Thinking logically: identifying the decision points and conditions that affect the flow of a solution; computational methods including problem recognition, divide and conquer, backtracking, heuristics, performance modelling and visualisation.
An OCR H446 answer on thinking logically and computational methods: identifying decision points and conditions in a solution, and the methods of problem recognition, divide and conquer, backtracking, heuristics, performance modelling and visualisation that make problems solvable.
- Thinking concurrently: determining which parts of a problem can be tackled at the same time, the benefits and limitations of concurrent and parallel processing, and the difference between true parallel processing and concurrent processing on a single processor.
An OCR H446 answer on thinking concurrently: identifying which parts of a problem can be done at the same time, the benefits and limitations of concurrency and parallelism, and the difference between true parallel processing on multiple cores and concurrent processing on a single processor.
- Programming techniques: sequence, selection and iteration, recursion, the use of subroutines (procedures and functions) with parameters passed by value and by reference, local and global variable scope, and the features of an integrated development environment (IDE).
An OCR H446 answer on programming techniques: sequence, selection and iteration, recursion, subroutines (procedures and functions) with parameters passed by value or by reference, local and global variable scope, and the features of an integrated development environment.
- Object-oriented programming techniques in practice: defining classes with attributes and methods, constructors and instantiation, getters and setters for encapsulation, inheritance and method overriding for polymorphism, and the benefits of an object-oriented design.
An OCR H446 answer on object-oriented programming techniques in practice: defining classes with attributes and methods, constructors and instantiation, getters and setters for encapsulation, inheritance with method overriding for polymorphism, and the benefits of object-oriented design.