Computational Thinking

Abstraction:

Abstraction is important as it can make complex problems easier to understand, making it easier and faster to solve with simpler solutions. Here is an example of abstraction: link to physics simulation

Representational abstraction:

Data Abstraction:

Abstraction by Generalisation:

Thinking Ahead

Thinking ahead is the process of planning how a problem will be solved before writing code, focusing on inputs, outputs, preconditions, and caching:

Thinking Procedurally

Procedural Abstraction

Problem decomposition

Thinking Logically

The structured approach

This approach aims to improve the clarity and maintainability of programs, only using three programming strucutures.

  1. Sequence - one statement following another
  2. Selection - if, else ... statements
  3. Iteration - while, for ... statements

Tools for designing algorithms

Flow diagrams and pseudocode are commonly used for designing algorithms.

An example:

Thinking concurrently

Parallel computing

Multiple processors each executing different instructions simultaneously, aiming to speed up computations

Advantages and disadvantages:

Concurrent processing

Single processor running several processes, each in turn being given a slice of processor time. This makes it look as though they are performed simultaneously.

Advantages and disadvantages:

Computable problems

A problem is computable if there is an algorithm which can solve it in a finite number of steps, in a reasonable amount of time.

Methods and strategies of problem solving

Problem solving

Visualisation

How a problem is presented is a very important factor in finding a solution.

Backtracking

Visiting each path and building a solution based on the paths found to be correct. An example of this is the depth-first graph traversal

Data mining

Identifying patterns, correlations/connections, outliers, or future trends in large sets of data , big data. Big data is the term used for large sets of data that cannot easily be handled in a traditional database

Intractable problems

Problem which an algorithm may exist for its solution but would take an unreasonably long time to find.

Heuristic Methods

Heuristics are a non-optimal approach used to find approximate solutions to a problem, which can be done in a reasonable time frame. Solutions found are not perfectly accurate or complete.

Performance modelling

Estimates how a system will perform under different conditions, using mathematical methods, as it may be expensive or difficult to test properly.

Pipelining

Splitting of tasks into smaller parts and overlapping the processing of each part of the task. Used in FDE cycle which can be demonstrated here: Amazing website.