- Decomposition
- breaking down a complex problem or system into smaller parts
- Pattern Recognition
- looking for similarities among and within problems
- Abstraction
- focusing on the important parts only, ignoring irrelevant detail
- Algorithm Design
- developing a step-by-step solution to the problem