Introduction to Algorithms
This course provides an introduction to mathematical modeling of computational problems. It covers the common algorithms, algorithmic paradigms, and data structures used to solve these problems. The course emphasizes the relationship between algorithms and programming, and introduces basic performance measures and analysis techniques for these problems.
Syllabus
- 1 Lecture 1: Algorithmic Thinking, Peak Finding
- 2 Lecture 2: Models of Computation, Document Distance
- 3 Lecture 3: Insertion Sort, Merge Sort
- 4 Lecture 4: Heaps and Heap Sort
- 5 Lecture 5: Binary Search Trees, BST Sort
- 6 Lecture 6: AVL Trees, AVL Sort
- 7 Lecture 7: Counting Sort, Radix Sort, Lower Bounds for Sorting
- 8 Lecture 8: Hashing with Chaining
- 9 Lecture 9: Table Doubling, Karp-Rabin
- 10 Lecture 10: Open Addressing, Cryptographic Hashing
- 11 Lecture 11: Integer Arithmetic, Karatsuba Multiplication
- 12 Lecture 12: Square Roots, Newton's Method
- 13 Lecture 13: Breadth-First Search (BFS)
- 14 Lecture 14: Depth-First Search (DFS), Topological Sort
- 15 Lecture 15: Single-Source Shortest Paths Problem
- 16 Lecture 16: Dijkstra
- 17 Lecture 17: Bellman-Ford
- 18 Lecture 18: Speeding up Dijkstra
- 19 Lecture 19: Dynamic Programming I: Fibonacci, Shortest Paths
- 20 Lecture 20: Dynamic Programming II: Text Justification, Blackjack
- 21 Lecture 21: Dynamic Programming III: Parenthesization, Edit Distance, Knapsack
- 22 Lecture 22: Dynamic Programming IV: Guitar Fingering, Tetris, Super Mario Bros.
- 23 Lecture 23: Computational Complexity
- 24 Lecture 24: Topics in Algorithms Research
- 25 Recitation 1: Asymptotic Complexity, Peak Finding
- 26 Recitation 2: Python Cost Model, Document Distance
- 27 Recitation 3: Document Distance, Insertion and Merge Sort
- 28 Recitation 5: Recursion Trees, Binary Search Trees
- 29 Recitation 6: AVL Trees
- 30 Recitation 7: Comparison Sort, Counting and Radix Sort
- 31 Recitation 8: Simulation Algorithms
- 32 Recitation 9: Rolling Hashes, Amortized Analysis
- 33 Recitation 9b: DNA Sequence Matching
- 34 Recitation 10: Quiz 1 Review
- 35 Recitation 11: Principles of Algorithm Design
- 36 Recitation 12: Karatsuba Multiplication, Newton's Method
- 37 Recitation 13: Breadth-First Search (BFS)
- 38 Recitation 14: Depth-First Search (DFS)
- 39 Recitation 15: Shortest Paths
- 40 Recitation 16: Rubik's Cube, StarCraft Zero
- 41 Recitation 18: Quiz 2 Review
- 42 Recitation 19: Dynamic Programming: Crazy Eights, Shortest Path
- 43 Recitation 20: Dynamic Programming: Blackjack
- 44 Recitation 21: Dynamic Programming: Knapsack Problem
- 45 Recitation 22: Dynamic Programming: Dance Dance Revolution
- 46 Recitation 23: Computational Complexity
- 47 Recitation 24: Final Exam Review
Course materials
- Course on MIT OpenCourseWare β website