All lecture slides are listed below. These are organized by module, each of which may contain one more more lectures.
Many are lectures are prepared using Jupyter, an interactive environment for coding and presenting. There are three ways to view these:
- live: runs a Jupyter notebook in the cloud so you can interact with the notes directly, using Binder
- static: view a static version of the notebook using nbviewer
- You can also clone this repo and launch the notebooks locally by running
jupyter notebook
(requires installing Jupyter and RISE).
topic |
---|
Module 01: Formalizing the cost of an algorithm |
Overview live/static |
Parallelism live/static |
Functional programming live/static |
SPARC live/static |
Cost models live/static |
Module 02: Recurrences |
Recurrences live/static |
Module 03: Sequences |
Sequences Overview live/static |
Iterate and Reduce live/static |
Scan live/static |
Problem solving with sequences live/static |
Module 04: Divide and Conquer |
Reduction and Brute Force |
Divide & Conquer Scan |
MCSS + TSP Divide & Conquer |
Midterm Review |
Module 05: Randomized Algorithms |
Probability Review |
Selection |
Quicksort |
Module 06: Greedy Algorithms |
Task scheduling / Knapsack |
Heaps |
Huffman coding |
Module 07: Dynamic Programming |
0-1 Knapsack |
Edit Distance, Longest Increasing Subsequence |
Huffman Coding |
Module 08: Graphs |
Graph Overview |
BFS |
DFS |
Dijkstra |
Bellman-Ford |
Johnson |
Module 09: Spanning trees |
MST Overview - Prim |
Kruskal+TSP |
Edge Contraction |
Star Contraction |
Boruvka |
Module 10: Computability |
Computational Complexity |