Select a course.
Retrieval: 2.1 Elements of computational thinking
infoWhy this? Abstraction, decomposition, logical reasoning, and planning remain essential for tackling unfamiliar computational problems. Revisiting them develops more deliberate judgement about model assumptions, component dependencies, reuse, caching, and concurrency, helping us explain why an approach is suitable rather than merely describe it.
scheduleWhy now? After the autumn systems retrieval and experience of independent project work, we can reassess computational thinking through concrete examples of design choices and constraints. Returning to these principles before programming retrieval re-establishes a coherent approach to analysing problems, specifying preconditions, and organising solutions.
neurologyYou need to know
- Abstraction is the process of removing unnecessary detail so that the important features of a problem or system can be examined more easily.
- An abstraction represents selected features of reality rather than reproducing every feature of the real situation.
- Abstraction reduces complexity, making problems easier to understand, model and solve.
- The usefulness of an abstract model depends on whether it retains the details relevant to its intended purpose.
- An abstract model may produce misleading results if important details or assumptions are omitted.
- Inputs are the data supplied to a system or process, while outputs are the data or actions produced by it.
- A precondition is a requirement that must be true before a process, algorithm or program component can run correctly.
- Caching stores copies of frequently or recently accessed data so that later requests can be served more quickly.
- Caching can reduce access time, network traffic and repeated computation, but it requires extra storage and may return outdated data if the cache is not updated correctly.
- Reusable program components are self-contained sections of code, such as functions, procedures, classes or libraries, that can be used in multiple parts of a program or in different programs.
- Reusable components can reduce development time, duplication and testing effort, while improving consistency and maintainability.
- Decomposition divides a complex problem into smaller, more manageable components that can be solved separately.
- The components of a problem describe the smaller tasks that must be addressed, while the components of a solution describe the algorithms, data and program modules used to address them.
- A procedure is an ordered sequence of steps that performs a specific task, and a sub-procedure performs a smaller task within a larger procedure.
- The order of procedural steps matters when one step depends on the result or state produced by an earlier step.
- A decision point selects between alternative paths according to whether a logical condition evaluates to true or false.
- Logical conditions use comparisons and Boolean operators such as AND, OR and NOT to determine which path through a program is followed.
- Concurrency allows multiple tasks to make progress during overlapping periods, although they do not necessarily execute at exactly the same instant.
- Concurrent processing can improve responsiveness, throughput and resource use when tasks are independent or spend time waiting for input or output.
- Concurrency can introduce communication and scheduling overheads, unpredictable execution order, competition for resources and errors caused by unsynchronised access to shared data.
rocket_launchYou must be able to
- Devise an abstract model by identifying its purpose, retaining relevant features and removing unnecessary detail.
- Compare an abstraction with reality by identifying what has been represented, simplified or omitted and explaining the effects of those choices.
- Identify the inputs, processing and outputs of a given system or problem.
- Determine the preconditions for a solution by stating the data, resources and system states that must exist before execution begins.
- Evaluate whether caching is appropriate by weighing faster access and reduced processing against storage costs and the risk of stale data.
- Decompose a problem and its proposed solution into clearly defined components, including any reusable functions, procedures or modules.
- Arrange the steps of a solution in a valid order, showing dependencies and identifying suitable sub-procedures.
- Construct and trace decision logic by stating Boolean conditions and following the correct program path for given data.
- Identify tasks that can proceed concurrently and evaluate the likely benefits and trade-offs, including dependencies, shared resources, synchronisation and processing overheads.