Introduction to algorithm design and analysis. Graph algorithms, greedy algorithms, data structures, dynamic programming, maximum flows
- classes, templates, the big 5, move semantics, rvalue references, type deduction).
- Time complexity: Θ, 𝑂 and Ω notation. Basic algorithm analysis.
- Arrays, linked lists, stacks, and queues
- Sorting (insertion sort, merge sort, quick sort, radix sort)
- Trees (binary search tree, heap, AVL tree)
- Hash tables and (maybe) skip lists
- Graphs