Lecture notes, problem sets, and Python code examples for the Algorithms course at LUMS SSE.
| Instructor: Mudassir Shabbir | Term: Spring 2025 |
| # | Topic | Notes |
|---|---|---|
| 2 | Introduction & Asymptotic Analysis | |
| 3 | Divide and Conquer | |
| 4 | Recurrences & Master Theorem | |
| 5–6 | Sorting: MergeSort, QuickSort, HeapSort | |
| 7 | Multiplication Algorithms & The Hiring Problem | |
| 8 | Greedy Algorithms | |
| 10 | Amortized Complexity | |
| 11 | BFS & DFS | |
| 12 | Articulation Points & Topological Sort | |
| 15 | Minimum Spanning Trees | |
| 17 | Shortest Paths | |
| 18 | Amortized Analysis: Binary Counter | |
| 19 | Network Flow | |
| 20 | P, NP, NP-completeness | |
| 21 | Dynamic Programming | |
| 22 | DP: LCS & Matrix-chain Multiplication | |
| 24 | Randomized Algorithms | |
| 25 | String Matching | |
| 26 | Computational Geometry | |
| 27 | Advanced Topics |
Runnable implementations in code/:
kruskals.py — Kruskal’s MSTprims.py — Prim’s MSTcompare_mst_algorithms.py — Empirical MST runtime comparisontopological_sort.py — Topological sort via DFS