Big O notation
Graph algorithms (breadth/depth-first search, minimum spanning tree, shortest path, etc.)
Greedy algorithms
Divide and conquer
Dynamic programming
Network flow
Computational complexity classes (P, NP, PSPACE, etc.)
Approximate algorithms
Randomized algorithms
Local search