MIT 6.006 Introduction to Algorithms, Spring 2020
This course covers elementary discrete mathematics for science and engineering, with a focus on mathematical tools and proof techniques useful in computer science. Topics include logical notation, sets, relations, elementary graph theory, state machines and invariants, induction and proofs by contradiction, recurrences, asymptotic notation, elementary analysis of algorithms, elementary number theory and cryptography, permutations and combinations, counting tools, and discrete probability.
- 1. Algorithms and Computation
- 2. Data Structures and Dynamic Arrays
- Introduction to Algorithms - Problem Session 1: Asymptotic Behavior of Functions and Double-ended...
- 3. Sets and Sorting
- 4. Hashing
- Problem Session 2 (MIT 6.006 Introduction to Algorithms, Spring 2020)
- 5. Linear Sorting
- Problem Session 3
- 6. Binary Trees, Part 1
- 7. Binary Trees, Part 2: AVL
- Problem Session 4
- 8. Binary Heaps
- 9. Breadth-First Search
- Quiz 1 review
- 10. Depth-First Search
- 11. Weighted Shortest Paths
- Problem Session 5
- 12. Bellman-Ford
- 13. Dijkstra
- Problem Session 7
- 14. APSP and Johnson
- Quiz 2 Review
- 15. Dynamic Programming, Part 1: SRTBOT, Fib, DAGs, Bowling
- 16. Dynamic Programming, Part 2: LCS, LIS, Coins
- Problem Session 8
- 17. Dynamic Programming, Part 3: APSP, Parens, Piano
- 18. Dynamic Programming, Part 4: Rods, Subset Sum, Pseudopolynomial
- 19. Complexity
- Problem Session 9
- Quiz 3 Review
- 20. Course Review
- 21. Algorithms—Next Steps