6.006: Introduction to Algorithms
- Introduction
- Binary Search Trees
- Hashing, Readings: 11.1-11.3, 17, 11.4
- Sorting, Readings: Chapter 4, 2.1, 2.2, 2.3, 6.1, 6.2, 6.3 and 6.4, 8.1-8.4
- Graphs and Search, Readings: 22.1-22.3, B.4
- Lecture 11, 3/15 Searching I: Graph Search and Representations.
- Lecture 12, 3/20 Searching II: Breadth-First Search and Depth-First Search.
- Lecture 13, 3/22, Searching III: Connected Components, Topological Sort, See CLRS: 22.4-22.5.
- Lecture 14, 4/3 Shortest Paths I: Intro, Dijstra's Algorithm
- Lecture 15, 4/5 Shortest Paths II: Bellman-Ford
- Lecture 16, 4/10 Shortest Paths III: Bellman-Ford on DAGs and Dijkstra
- Lecture 17, 4/12 Shortest Paths IV: Speeding Up Dijkstra
- Dynamic Programming
- Lecture 18, 4/19 Dynamic Programming I: Memoization, Fibonacci, Crazy Eights
- Lecture 19, 4/24 Dynamic Programming II: All-Pairs Shortest Paths, Longest Common Subsequence
- Lecture 20, 4/26 Dynamic Programming III: Bottom-up Implementation, Knapsack
- Lecture 21, 5/1 Dynamic Programming IV: Text Justification, Structural DP (on Trees), Vertex Cover, Maximum Parsimony
- Number Theory
- NP-Completeness
- Other Topics
PDF LECTURES