Design Patterns § Stable Matching Basics of algorithm analysis Graph Greedy algorithms Divide and Conquer Dynamic Programming Max flow NP § NP and Computational Intractability Approximation Algorithms Randomised Algorithms