CS 513: Design and Analysis of Data Structures and Algorithms
Fall 2024, Rutgers University
Time and Location
Monday, Wednesday, 2:00pm – 3:20pm, Hill 116
Instructor
Roie Levin, Core 306
Office Hours
Monday 10:00am – 12:00pm
Teaching Assistant
Songhua He – Monday 7:00pm – 8:00pm, Zoom, Wednesday 3:30pm - 4:30pm, Hill 410.
Course Description
The course covers a broad set of topics in algorithms design and analysis. The goal is to cover tools and algorithms that give students the ability to (a) recognize which tool or method to apply to problems, (b) become reasonably proficient at using these tools, (c) be able to reason about the correctness and performance of the resulting algorithms. Towards the end of the course, students will get some exposure to modern trends in algorithms research.
I will expect students with undergraduate algorithms knowledge. There will be a Homework 0: if you plan to take this course, please make sure you are comfortable with the material therein.
Topics I plan to cover include:
- Divide and conquer.
- Dynamic programming.
- Randomized algorithms.
- NP-hardness and intractability.
- Linear Programming.
- Approximation algorithms.
- Online algorithms.
Homework
All homework is due at 11:59 pm on the specified day. The lowest homework grade will be dropped.
- Homework 0 (due Wednesday Sep 11). Solutions.
- Homework 1 (due Wednesday Sep 25). Solutions.
- Homework 2 (due
Wednesday Oct 9Friday October 11). Solutions. - Homework 3 (due Thursday Oct 31). Solutions.
- Homework 4 (due Thursday Nov 14). Solutions.
- Homework 5 (due Friday Nov 29).
- Homework 6.
(Tentative) Schedule
Date | Topic | Lecture Notes | Optional Reading |
---|---|---|---|
Divide and Conquer | |||
Sep 04 | Course Overview and Basics Review, Karatsuba Multiplication | notes | Possible textbooks for an undergrad course: Tim Roughgarden’s textbook, CLRS textbook, DPV textbook |
Sep 09 | Strassen’s Algorithm, Median of Medians | notes | Some (advanced) intuition for Strassen’s algorithm: 1, 2 |
Dynamic Programming | |||
Sep 11 | Edit Distance, Knapsack | notes | More fun examples of DP from Kleinberg Tardos textbook (slides from Kevin Wayne): 1, 2 |
Data Structures and Amortized Analysis | |||
Sep 16 | Dijkstra’s and Amortized Analysis Techniques | notes | Anupam Gupta’s amortization notes and shortest path slides, Jeff Erickson’s notes |
Sep 18 | Binomial Heaps, Fibonacci Heaps | notes | Kevin Wayne’s slides on binary & binomial heaps and on Fibonacci heaps |
Greedy Algorithms | |||
Sep 23 | Fibonacci Heaps Wrapup, Minimum Spanning Trees and Union Find | notes | Animations of Kruskal & Prim’s algorithm, Notes from CMU class taught by Acar, Blelloch, Reid-Miller, Michel Goemans’ intro to matroid theory notes |
Randomized Algorithms | |||
Sep 25 | Probability Review, Karger’s min-cut Algorithm, Quicksort | notes | Online probability textbook by Pishro-Nik, Chapters 0-5. Textbooks on randomized algorithms: Mitzenmacher & Upfal, Motwani & Raghavan |
Sep 30 | Concentration of Measure and Applications | notes | Pishro-Nik textbook, Chapter 6. Many great books on concentration of measure: Dubhasi & Panconesi, Boucheron, Lugosi, Massart, Vershynin. Also 5 proofs of Chernoff bounds, pick your favorite! |
Oct 02 | Applications of Chernoff bounds, Valiant Hypercube Routing | notes | Chapter 4.6.1 in Mitzenmacher & Upfal 2nd edition, Valiant’s original paper |
Oct 07 | Wrap-up Hypercube Routing, Hashing | notes | Anupam Gupta’s lecture notes on hashing and discussion of other collision resolution schemes |
Oct 09 | Perfect Hashing, Bloom Filters | notes | Why the classic Bloom Filter analysis is a little wrong and how to fix it |
Linear Programming and Optimization | |||
Oct 14 | Flows and Matchings | notes | Animations of basic flow algorithms. Kleinberg & Tardos textbook has good chapters on flow. David Williamson’s textbook for more advanced flow algorithms. |
Oct 16 | Linear Programming I: Modeling, Intuition behind algorithms | notes | Excellent textbook by Matoušek/Gärtner. Online LP solver, more serious solvers: CVXOPT, COIN-OR. Commerical solvers: Gurobi, CPLEX. |
Oct 21 | Linear Programming II: Duality | notes | Proof of Strong duality from Anupam Gupta and Ryan O’Donnell’s course on linear and semidefinite programming. Also applications of duality I II from the same course. Notes on duality in more general convex programs from Ryan Tibshirani’s course. |
Oct 23 | Intro to Gradient Descent | notes | Potential Function Proofs of Gradient Descent variants by Bansal and Gupta, Boyd and Vandenberghe’s comprehensive textbook on convex optimization, More advanced survey by Sébastien Bubeck. |
Limits of Computation | |||
Oct 28 | Limits of Computation and the Complexity Hierarchy | notes | Excellent undergrad textbook on formal models of computation by Michael Sipser. More advanced graduate level textbook on modern complexity theory by Arora and Barak. |
Oct 30 | NP-Completeness, the Cook-Levin Theorem, Reductions | notes | Karp’s 21 NP-Complete Problems, and his original paper. Garey and Johnson’s calatogue of NP complete problems. |
Combatting Intractability | |||
Nov 04 | More Reductions, Approximation Algorithms I - Vertex Cover | notes | Shmoys and Williamson textbook on approximation algorithms. |
Nov 06 | Approximation Algorithms II - Set Cover | notes | Chapter 1 of Shmoys and Williamson textbook. Ola Svensson’s course on Set Cover. |
Nov 11 | Approximation Algorithms III - More Set Cover, TSP | notes | Chapter 1 and 2.4 of Shmoys and Williamson textbook. |
Nov 13 | FPT Algorithms | notes | Parameterized Algorithms textbook by Cygan et al. |
Nov 18 | Fast(er) Exponential Time Algorithms | notes | Moser & Scheder paper on derandomizing Schoening’s algorithm |
Decision Making Under Uncertainty | |||
Nov 20 | Online Algorithms and Competitive Analysis | ||
Nov 25 | Thanksiving Break, No Class | ||
Nov 27 | Thanksiving Break, No Class | ||
Dec 02 | The Experts Problem and Multiplicative Weights | ||
Dec 04 | The Online Primal Dual Method | ||
Misc Topics | |||
Dec 09 | Locality Sensitive Hashing | ||
Dec 11 | Final Exam, In-class |