Andrew McGregor

Associate Professor

Welcome to the Fall 2019 homepage for CMPSCI 611 - Advanced Algorithms. (The following information will be updated before Fall 2019)

  • Instructor:
    • Andrew McGregor. Email: mcgregor at cs.
    • Office hours: 3-4pm Tuesday (Location CS334).

  • TA:
    • ???
    • Office hours: 11am-12 (???, Location CS 314), 1-2pm Wednesday (???, Location CS 314), 10.15am-11.15 Thursday (???, Location LGRT220),

  • Textbook: The required textbook will be
    • Lecture Notes from CMPSCI 611 by Prof. Micah Adler and this will be available from Collective Copies. See here for a list corrections and typos.
    Other books you might find generally useful include:
    • Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein (Library has the e-book)
    • Algorithm Design by Kleinberg and Tardos
    • Algorithms by Dasgupta, Papadimitriou, Vazirani
    You may also find sections of the following books helpful:
    • Randomized Algorithms by Motwani and Raghavan (Library has the e-book)
    • Probability and Computing by Mitzenmacher and Upfal (Library has the e-book)
    • Approximation Algorithms by Vazirani (Library has the e-book if you can read French)
  • Homeworks and Exams:
    Late Policy: Homeworks are due at 8pm in Gradescope.

    Honesty and Collaboration Policy: Violating any of the following rules risks an automatic F. Ask if you're unsure about any of the policies.
    • Homework: Collaborating with at most three other students in the homework is allowed and you should mention who you worked with. You're not allowed to use material from the web (or indeed any material except from that listed on the course page) or talk about the homework with anybody outside your collaboration group (aside from the lecturer or TA.)
    • Quizzes: No collaboration! But you can consult any material you like.
    • Exams: Closed book and no collaboration.

  • Schedule and Slides: Here's an approximate schedule for the course. Note that this'll be updated as we go along depending on our progress and, hopefully, we'll get to squeeze in a couple of extra topcs. I'll add slides after each class (some links will be dead until the slides are added).

    Lecture Date Topic Reading and Background
    1 5 Sept Preliminaries, Mergesort, Master Theorem Section 1, 2.1, 2.2
    2 7 Sept Matrix Multiplication, Closest Pairs Section 2.3, 2.4. A blog post describing recent progress on matrix multiplication.
    3 12 Sept Fast Fourier Transform Section 2.5
    4 14 Sept Minimum Spanning Trees Section 3.1
    5 19 Sept Subset Systems, Matroids Section 3.2, 3.3
    6 21 Sept Cardinality Theorem and Examples Section 3.4
    8 26 Sept Dynamic Programming, e.g., Knapsack Problem and Floyd-Warshall Section 4.1-4.4 (We're doing this lecture out of order to help with homework.)
    7 28 Sept Bipartite Matchings, The Union-Find Problem Section 3.4, 3.5
    9 3 Oct Dijkstra Section 4.5
    10 5 Oct Seidel Section 4.6
    - 10 Oct No Class (Monday Schedule)
    11 12 Oct Network Flow Part 1 Section 5.1-5.2
    - 17 Oct No Class (I'm returning from a conference)
    12 19 Oct Network Flow Part 2 Section 5.3-5.4
    13 24 Oct Quicksort Section 6.1
    14 26 Oct Karger's Algorithm Section 6.2, 6.3
    15 31 Oct Tail Inequalities and Lazy Select Section 6.5
    16 2 Nov Chernoff Bounds and Balls and Bins Section 6.5, Video showing concentration of binomial distribution
    17 7 Nov More Balls and Bins, Polynomial Multiplication
    18 9 Nov Data Streams and Count-Min Sketch Original Paper
    19 14 Nov Approximation Algorithms Section 7.1-8.2.1.
    20 16 Nov P versus NP, Approximations, Independent Set Problem Section 8.2.2-8.2.4.
    - 21 Nov No class (Thanksgiving)
    - 23 Nov No class (Thanksgiving)
    21 28 Nov More Approximations, Metric TSP Problem Section 8.2.4-8.4
    22 30 Nov Approximation Algorithms
    22 5 Dec Set Cover Problem, Poly-Time Approximation Scheme Section 8.5-8.7
    23 7 Dec Linear Programming, Simplex Method
    24 12 Dec Analysis of the Simplex Method
    25 12 Dec Review and Any Questions