Introduction to Algorithms

Electrical Engineering and Computer Science MIT CC BY-NC-SA 4.0 32 lectures

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. 1 Lecture 1: Algorithms and Computation
  2. 2 Lecture 2: Data Structures and Dynamic Arrays
  3. 3 Problem Session 1
  4. 4 Lecture 3: Sets and Sorting
  5. 5 Lecture 4: Hashing
  6. 6 Problem Session 2
  7. 7 Lecture 5: Linear Sorting
  8. 8 Problem Session 3
  9. 9 Lecture 6: Binary Trees, Part 1
  10. 10 Lecture 7: Binary Trees, Part 2: AVL
  11. 11 Problem Session 4
  12. 12 Lecture 8: Binary Heaps
  13. 13 Lecture 9: Breadth-First Search
  14. 14 Quiz 1 Review
  15. 15 Lecture 10: Depth-First Search
  16. 16 Lecture 11: Weighted Shortest Paths
  17. 17 Problem Session 5
  18. 18 Lecture 12: Bellman-Ford
  19. 19 Lecture 13: Dijkstra
  20. 20 Problem Session 7
  21. 21 Lecture 14: APSP and Johnson
  22. 22 Quiz 2 Review
  23. 23 Lecture 15: Dynamic Programming, Part 1: SRTBOT, Fib, DAGs, Bowling
  24. 24 Lecture 16: Dynamic Programming, Part 2: LCS, LIS, Coins
  25. 25 Problem Session 8
  26. 26 Lecture 17: Dynamic Programming, Part 3: APSP, Parens, Piano
  27. 27 Lecture 18: Dynamic Programming, Part 4: Rods, Subset Sum, Pseudopolynomial
  28. 28 Lecture 19: Complexity
  29. 29 Problem Session 9
  30. 30 Quiz 3 Review
  31. 31 Lecture 20: Course Review
  32. 32 Lecture 21: Algorithms—Next Steps

Course materials