Computational thinking is to think logically.
2.1.1 Abstraction:
Levels of abstraction:
The more abstract something is the less detail is shown, vice versa.
Data always starts as reality before being abstracted.
There are 3 levels of abstraction: Physical level, Logical level, and View level. Physical being the lowest.
Reality -> Physical -> Logical -> View
Physical Level: Lowest level of abstraction. This describes how a system stores the data. This describes complex data structures in great detail.
Logical level: This level describes what data is stored and their relationships. This level describes the entire database in terms of a number of smaller structures. This may involve very complex physical level structures but users of logical level don’t need to under stand them.
View Level: This level only describes part of the entire database. People only access part of the database that they need. This simplifies the data only down to the parts that are needed.
2.1.2 Thinking Ahead:
Input: Data that is entered into a system.
Output: The result of the input once it has been processed.
When programming a system we need to consider:
- Outputs required.
- Inputs and processes required to create desired output.
- Consider resources needed.
- Consider user expectations.
2.1.3 Thinking Procedurally:
All about working out the sub-parts of a large problem so it can be tackled in more manageable chunks. We need to identify the components of the problem. A common approach for this is breaking down the problem into a top-down modular design using a method called step-wise refinement.

Each box represents a part of the problem you will have to design to make up the solution.
Advantages of a top-down modular design:
- Splits the problem into many small modules so it is easily managed.
- Error checking is easier because you can check each module one by one.
- Easier to work on with multiple people.
- Reusability of the modules.
2.1.4 Thinking Logically:
A good algorithm:
- has clear and precisely stated steps that produce the correct output for any set of valid inputs.
- should allow for invalid inputs.
- must always terminate at some point.
- should execute efficiently, in as few steps as possible.
- should be designed in such a way that other people will be able to understand it and modify it if necessary.
Tools for designing algorithms include pseudo code and flowcharts.
Almost all algorithms have decision points which include things like if statements
E.g Trace tables
2.1.5 Thinking Concurrently:
Concurrent thinking is the process of completing more than one task at any given time. However, this doesn’t mean you are working on multiple tasks at once.
Concurrent processing is when tasks are gives slices of processor time to give the illusion that tasks are being performed simultaneously and concurrent thinking is similar to this. When tasks are being performed at the same time is parallel processing.
Concurrent processing is usually performed by a single processor and parallel processing is usually used with multiple processors/cores.
For example, you are given 2 tasks, record the number plate and the colour of the cars that pass you in a given time.
To tackle this problem, an efficient way to do it is to record the number plate and colour of one car then move on to the next car.
Advantages of concurrent processing:
- The number of tasks completed in a given time is increased.
- Less time is wasted waiting for an input as other tasks can be completed in the meantime.
Disadvantages:
- Not all tasks are suited to being broken up and performed concurrently.