General Lecture Information
- Lectures will be recorded and the recordings can be accessed on Canvas.
Lectures
Lecture 1: Why are you here?
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Python notebook: [Colab] [Zip]
- Concept check questions: [Interactive SVG] [Solved PDF]
Recording
- Video: [Canvas]
Lecture 2: Asymptotics, Worst-Case Analysis, and MergeSort
Pre-lecture resources
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Python notebook: [Colab] [Zip]
- Concept check questions on asymptotics: [Interactive SVG] [Solved PDF]
- Concept check questions on sorting: [Interactive SVG] [Solved PDF]
- Additional reading: CLRS 2.3, 3
Recording
Lecture 3: Solving Recurrences and the Master Theorem
Pre-lecture resources
- Pre-lecture exercise: [PDF]
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Concept check questions: [Interactive SVG] [Solved PDF]
- Additional reading: CLRS 4.3, 4.4, 4.5
Recording
- Video: [Canvas]
Lecture 4: Median and Selection
Pre-lecture resources
- Pre-lecture exercise: [PDF]
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Python notebook: [Colab] [Zip]
- Concept check questions: [Interactive SVG] [Solved PDF]
- Additional reading: CLRS 9
Recording
- Video: [Canvas]
Lecture 5: Randomized Algorithms and QuickSort
Pre-lecture resources
- Pre-lecture exercise: [PDF]
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Python notebook: [Colab] [Zip]
- Concept check questions: [Interactive SVG] [Solved PDF]
- Additional reading: CLRS 5.1, 5.2, 5.3, 7
Recording
- Video: [Canvas]
Lecture 6: BucketSort and Lower Bounds for Sorting
Pre-lecture resources
- Pre-lecture exercise: [PDF]
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Python notebook: [Colab] [Zip]
- Concept check questions: [Interactive SVG] [Solved PDF]
- Additional reading: CLRS 8.1, 8.2, [Avrim Blum’s notes on sorting lower bounds]
Recording
- Video: [Canvas]
Lecture 7: Binary Search Trees and Red-Black Trees
Pre-lecture resources
- Pre-lecture exercise: [PDF] [PDF with Solutions]
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Concept check questions: [Interactive SVG] [Solved PDF]
- Additional reading: CLRS 12.1, 12.2, 12.3, 13
Recording
- Video: [Canvas]
Lecture 8: Hashing
Pre-lecture resources
- Pre-lecture exercise: [PDF]
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Python notebook: [Colab] [Zip]
- Concept check questions: [Interactive SVG] [Solved PDF]
- Additional reading: CLRS 11
Recording
- Video: [Canvas]
Lecture 9: Graphs and BFS and DFS
Pre-lecture resources
- Pre-lecture exercise: [PDF]
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Python notebook: [Colab] [Zip]
- Concept check questions: [Interactive SVG] [Solved PDF]
- Additional reading: CLRS 22.1, 22.2, 22.3, 22.4
Recording
- Video: [Canvas]
Lecture 10: Strongly Connected Components
Pre-lecture resources
- Pre-lecture exercise: [PDF]
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Python notebook: [Colab] [Zip]
- Concept check questions: [Interactive SVG] [Solved PDF]
- Additional reading: CLRS 22.5
Recording
- Video: [Canvas]
Lecture 11: Dijkstra and Bellman-Ford
Pre-lecture resources
- Pre-lecture exercise: [PDF]
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Python notebook: [Colab] [Zip]
- Concept check questions: [Interactive SVG] [Solved PDF]
- Additional reading: CLRS 24.1, 24.3
Recording
- Video: [Canvas]
Lecture 12: Dynamic Programming: Bellman-Ford and Floyd-Warshall
Pre-lecture resources
- Pre-lecture exercise: [PDF]
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Python notebook: [Colab] [Zip]
- Concept check questions: [Interactive SVG] [Solved PDF]
- Additional reading: CLRS 25.2, 15.1
Recording
- Video: [Canvas]
Lecture 13: More Dynamic Programming: LCS, Knapsack, Independent Set
Pre-lecture resources
- Pre-lecture exercise: None this time!
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Concept check questions: [Interactive SVG] [Solved PDF]
- Additional reading: CLRS 15.4
Recording
- Video: [Canvas]
Lecture 14: Greedy Algorithms
Pre-lecture resources
- Pre-lecture exercise: [PDF]
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Python notebook: [Colab] [Zip]
- Concept check questions: [Interactive SVG] [Solved PDF]
- Additional reading: CLRS 16.1, 16.2, 16.3
Recording
- Video: [Canvas]
Lecture 15: Minimum Spanning Trees
Pre-lecture resources
- Pre-lecture exercise: [PDF]
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Python notebook: [Colab] [Zip]
- Concept check questions: [Interactive SVG] [Solved PDF]
- Additional reading: CLRS 23
Recording
- Video: [Canvas]
Lecture 16: Max-Flow and the Ford-Fulkerson Algorithm
Pre-lecture resources
- Pre-lecture exercise: [PDF]
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Concept check questions: [Interactive SVG] [Solved PDF]
- Additional reading: CLRS 26.1, 26.2, 26.3, Alexander Schrijver’s paper: On the history of the transportation and maximum flow problem
Recording
- Video: [Canvas]
Lecture 17: Stable Matchings and Gale-Shapley
Pre-lecture resources
- Pre-lecture exercise: None this time!
Lecture resources
- Lecture notes: [PDF]
- Slides: [PDF] [PowerPoint]
- Concept check questions: [Interactive SVG] [Solved PDF]
- Additional reading: Lecture notes by Tim Roughgarden.
Recording
- Video: [Canvas]
Lecture 18: What's next?
Pre-lecture resources
- Pre-lecture exercise: None this time!
Lecture resources
- Slides: [PDF] [PowerPoint]
Recording
- Video: [Canvas]