1. Algorithms, decomposition and abstraction