Introduction to Algorithms
This course is an introduction to mathematical modeling of computational problems, as well as common algorithms, algorithmic paradigms, and data structures used to solve these problems. It emphasizes the relationship between algorithms and programming and introduces basic performance measures and analysis techniques for these problems.
Syllabus
- 1 Lecture 1: Algorithms and Computation
- 2 Lecture 2: Data Structures and Dynamic Arrays
- 3 Problem Session 1
- 4 Lecture 3: Sets and Sorting
- 5 Lecture 4: Hashing
- 6 Problem Session 2
- 7 Lecture 5: Linear Sorting
- 8 Problem Session 3
- 9 Lecture 6: Binary Trees, Part 1
- 10 Lecture 7: Binary Trees, Part 2: AVL
- 11 Problem Session 4
- 12 Lecture 8: Binary Heaps
- 13 Lecture 9: Breadth-First Search
- 14 Quiz 1 Review
- 15 Lecture 10: Depth-First Search
- 16 Lecture 11: Weighted Shortest Paths
- 17 Problem Session 5
- 18 Lecture 12: Bellman-Ford
- 19 Lecture 13: Dijkstra
- 20 Problem Session 7
- 21 Lecture 14: APSP and Johnson
- 22 Quiz 2 Review
- 23 Lecture 15: Dynamic Programming, Part 1: SRTBOT, Fib, DAGs, Bowling
- 24 Lecture 16: Dynamic Programming, Part 2: LCS, LIS, Coins
- 25 Problem Session 8
- 26 Lecture 17: Dynamic Programming, Part 3: APSP, Parens, Piano
- 27 Lecture 18: Dynamic Programming, Part 4: Rods, Subset Sum, Pseudopolynomial
- 28 Lecture 19: Complexity
- 29 Problem Session 9
- 30 Quiz 3 Review
- 31 Lecture 20: Course Review
- 32 Lecture 21: Algorithms—Next Steps
Course materials
- Course on MIT OpenCourseWare ↗ website