| LEC # | TOPICS | |
|---|---|---|
| Unit 1: Introduction | ||
| 1 | Algorithmic thinking, peak finding (PDF - 1.9MB) | |
| 2 |
Models of computation, document distance
| |
| Unit 2: Sorting and Trees | ||
| 3 | Insertion sort, merge sort (PDF) (Courtesy of Charles Leiserson, Piotr Indyk, Constantinos Daskalakis, and Srini Devadas. Used with permission.) | |
| 4 | Heaps and heap sort (PDF) (Courtesy of Charles Leiserson, Piotr Indyk, Constantinos Daskalakis, and Srini Devadas. Used with permission.) | |
| 5 | Binary search trees, BST sort (PDF - 1.2MB) | |
| 6 |
AVL trees, AVL sort
| |
| 7 |
Counting sort, radix sort, lower bounds for sorting | |
| Unit 3: Hashing | ||
| 8 |
Hashing with chaining | |
| 9 |
Table doubling, Karp-Rabin | |
| 10 | Open addressing, cryptographic hashing (PDF) | |
| Unit 4: Numerics | ||
| 11 | Integer arithmetic, Karatsuba multiplication (PDF) | |
| 12 | Square roots, Newton's method (PDF) | |
| Unit 5: Graphs | ||
| 13 |
Breadth-first search (BFS) | |
| 14 |
Depth-first search (DFS), topological sorting | |
| Unit 6: Shortest Paths | ||
| 15 | Single-source shortest paths problem (PDF) | |
| 16 | Dijkstra (PDF) | |
| 17 | Bellman-Ford (PDF - 1.2MB) | |
| 18 | Speeding up Dijkstra (PDF - 1.1MB) | |
| Unit 7: Dynamic Programming | ||
| 19 |
Dynamic programming I: Fibonacci, shortest paths | |
| 20 |
Dynamic programming II: text justification, blackjack | |
| 21 |
Dynamic programming III: parenthesization, edit distance, knapsack | |
| 22 |
Dynamic programming IV: guitar fingering, Tetris, Super Mario Bros. | |
| Unit 8: Advanced Topics | ||
| 23 |
Computational complexity | |
| 24 |
Topics in algorithms research | |

