Even More Computational Thinking

Unfortunately we can't escape the πŸ§‡.

Miscellaneous Definitions:

  1. Computable problem = a problem where every instance of it can be solved by an algorithm in a finite number of steps.
  2. Theoretical approach = some magical method quicker than brute force, which the textbook conveniently neglects to explain.
  3. Intractable problems = problems for which there are no efficient algorithms to solve them (e.g. the Travelling Salesman Problem). They may initially be solved by brute-force until it becomes impossible to find the optimal solution in a reasonable amount of time.
  4. Time complexity = the time taken for an algorithm to run relative to the input size (measured using Big O Notation).

Thinking logically:


Flowchart symbols key and example

Figure 1: Flowchart symbols key and example


Thinking concurrently:

Concurrent processing is when several processes are running with each process being given a slice of processor time in turn. It appears that several tasks are being performed simultaneously, even though only a single processor is being used.

βœ… Increases program throughput (number of tasks completed in a given time increases).
βœ… When the processor is waiting for user input another task can be performed instead of wasting time.

❌ If a large number of users are trying to run multiple programs involving a lot of computation, it takes longer for the tasks to be completed.


Parallel computing requires multiple processors that each execute different instructions simultaneously. It aims to speed up computations and cannot be done on a single processor.

βœ… Repetitive calculations that are carried out on a large amount of data can be performed simultaneously on different processors, improving processing speed.
βœ… Can be used for graphics processing (e.g. rendering 3D objects by simultaneously working on different components of the graphic).

❌ There is an overhead in coordinating the processors.
❌ Some tasks run faster with a single processor than multiple processors.


Problem solving:

πŸ€” Typical methods and strategies:

⛏️ Data mining:

Data mining involves digging through large data sets to discover hidden connections and predict future trends that may occur in the data. Big data refers to large data sets that cannot easily be handled using traditional databases and methods. Data mining is often performed using software such as analytics tools.

βŒ› Heuristics:

Heuristic methods use algorithms which are not guaranteed to be optimal, but are sufficient to find an adequate solution. These methods often sacrifice accuracy or precision for finding a solution within a quicker time frame.

πŸ“ˆ Performance modelling:

Performance modelling involves simulating different user and system loads on a computer using a mathematical approximation. This is often cheaper and easier than actual performance testing, and the results can be used to plan a system suitable to the specific requirements.

➑️ Pipelining:

Pipelining involves splitting tasks into smaller parts and overlapping the processing of these task parts. For example, while one instruction is being fetched, another is being decoded and another executed. Pipelining is commonly used in microprocessors in PCs.