Abstraction
Abstraction is removing unnecessary detail from a problem and retaining just the important facts e.g. in designing a car park the size of vehicles matters but their colour does
not. The London tube map is considered an excellent example of abstraction.
Decomposition
Decomposition is breaking a problem down into smaller more manageable chunks that can be more easily solved. In programming we aim to break large programs up into smaller
subroutines that can be combined together to form a larger program. By doing this, each subroutine is easier to solve and can be written by different programmers.
For an example of decomposition in programming lets consider programming a hangman game. We may break this down into task such as: Select a word to guess; Make a blank mask of
the word; Get a letter from the user; Check if it is in the word and update mask or update lives; Check if the word is found or lives have run out
Algorithmic thinking
This is the ability to convert a real-world problem into the correct instructions for the computer to solve it. It is solutions architects who get paid more than the programmers
that implement the systems they devise. It involves spotting the patterns similar to our basic programming constructs in processes you are trying to program.