Engr 2255 MWF 9:30-10:45PM
    Fall 2019



       UW CS
       Theory Group

    Scroll down to schedule

    Course description and content

    The field of approximation algorithms has developed in response to the difficulty in solving a good many optimization problems exactly. In the case of NP-hard problems, we sacrifice optimality in the favor of efficient heuristics that give nearly-optimal (approximate) solutions, and aim for provable guarantees on the performance of these algorithms. This course will present some general techniques (such as LP and convex programming-based approaches, randomness, and metric methods) that underly these algorithms. We will then apply these approaches to online problems where the input arrives over time and the algorithm is required to make choices without knowledge of the entire input.

    Course calendar

    This course meets on M/W/F but on average we will meet twice a week. Please subscribe to the course Google calendar to keep track of meeting times. Use this link to subscribe in iCal format, or this to view the calendar in HTML format.


    Students are required to have taken an ungraduate level algorithms and an undergraduate level computational complexity course (e.g. CS 577 and CS 520), and are expected to have a thorough understanding of basic algorithm design techniques, randomness, and basic complexity theory. Graduate level theory courses, particularly good understanding of the design and analysis of randomized algorithms, are a plus. If you have not taken the aforementioned courses but believe you have the necessary background for this course, please contact the instructor for permission.

    Instructor: Prof. Shuchi Chawla

    Online Forum: We will use Piazza for all course related activity -- discussions, announcements, sharing of resources, etc. Further information about the course can also be found there. Sign-up here.

    Schedule and Scribe Notes

    (Note: scribe notes are not fully edited and may contain errors and omissions.)

    1. (9/4) Intro; three NP-hard optimization problems. [PDF]
    2. (9/6) Steiner tree contd.; Rounding data and dynamic programming. [PDF]
    3. (9/9) Arora's Euclidean TSP. [PDF]
    4. (9/11) Local search. [PDF]
    5. (9/25) Random sampling; Single-source rent-or-buy. [PDF]
    6. (9/27) LP relaxation and rounding. [PDF]
    7. (9/30) Iterative rounding: generalized assignment. [PDF]
    8. (10/2) Iterative rounding contd.: degree bounded spanning tree. [PDF]
    9. (10/4) Primal Dual algorithms. [PDF]
    10. (10/7) Primal Dual contd.: Steiner forest. [PDF]
    11. (10/9) Metric embeddings; multicut. [PDF]
    12. (10/11) Tree embeddings. [PDF]
    13. (10/14) Semi-definite programming; Max-Cut. [PDF]
    14. (10/16) Sparsest Cut. [PDF]
    15. (10/18) Sparsest Cut contd. [PDF]
    16. (10/23) Online ski rental via primal-dual. [PDF]
    17. (10/25) Online set cover. [PDF]
    18. (10/28) Online routing; caching. [PDF]
    19. (11/01) Caching contd. [PDF]
    20. (11/08) k-server and Metrical Task Systems. [PDF]
    21. (11/11) Work Function Algorithm. [PDF]
    22. (11/13) Mirror Descent basics. [PDF]
    23. (11/15) MTS on HSTs via mirror descent. [PDF]

    Student presentations and reports

    1. (11/18) Jennifer Cao & Dongqiangzi Ye: 2-stage stochastic optimization. [PDF]
    2. (11/22) Taylor Kemp & Mikhail Nedbai: Matroid secretary problem. [PDF]
    3. (11/25) Ashwin Maran & Lorenzo Najt: Counting the bases of a matroid. [PDF]
    4. (12/02) Jialu Bao & Rojin Rezvan: PCP and UGC. [PDF]
    5. (12/04) Evangelia Gergatsouli & Xiating Ouyang: Submodular optimization. [PDF]
    6. (12/06) Kexin Li & Luke Swanson: Convex programming hierarchies. [PDF]
    7. (12/09) Jeremy McMahan: Spectral algorithms and UGC. [PDF]