Readings refer to chapters and/or sections of the course textbook:
Cormen, Thomas, Charles Leiserson, Ronald Rivest, and Clifford Stein. Introduction to Algorithms. 3rd ed. MIT Press, 2009. ISBN: 9780262033848.
LEC # | TOPICS | READINGS |
---|---|---|
Unit 1: Introduction | ||
1 | Algorithmic thinking, peak finding | 1, 3, D.1 |
2 | Models of computation, Python cost model, document distance | 1, 3, Python Cost Model |
Unit 2: Sorting and Trees | ||
3 | Insertion sort, merge sort | 1.2, 2.1–2.3, 4.3–4.6 |
4 | Heaps and heap sort | 6.1–6.4 |
5 | Binary search trees, BST sort | 10.4, 12.1–12.3, Binary Search Trees |
6 | AVL trees, AVL sort | 13.2, 14 |
7 | Counting sort, radix sort, lower bounds for sorting and searching | 8.1–8.3 |
Unit 3: Hashing | ||
8 | Hashing with chaining | 11.1–11.3 |
9 | Table doubling, Karp-Rabin | 17 |
10 | Open addressing, cryptographic hashing | 11.4 |
Quiz 1 | ||
Unit 4: Numerics | ||
11 | Integer arithmetic, Karatsuba multiplication | |
12 | Square roots, Newton's method | |
Unit 5: Graphs | ||
13 | Breadth-first search (BFS) | 22.1–22.2, B.4 |
14 | Depth-first search (DFS), topological sorting | 22.3–22.4 |
Unit 6: Shortest Paths | ||
15 | Single-source shortest paths problem | 24.0, 24.5 |
16 | Dijkstra | 24.3 |
17 | Bellman-Ford | 24.1–24.2 |
18 | Speeding up Dijkstra | |
Quiz 2 | ||
Unit 7: Dynamic Programming | ||
19 | Memoization, subproblems, guessing, bottom-up; Fibonacci, shortest paths | 15.1, 15.3 |
20 | Parent pointers; text justification, perfect-information blackjack | 15.3, Problem 15–4, Blackjack rules |
21 | String subproblems, psuedopolynomial time; parenthesization, edit distance, knapsack | 15.1, 15.2, 15.4 |
22 | Two kinds of guessing; piano/guitar fingering, Tetris training, Super Mario Bros. | |
Unit 8: Advanced Topics | ||
23 | Computational complexity | 34.1–34.3 |
24 | Algorithms research topics |