Winter Quarter 2016

Instructor: Yury Makarychev
TAs: Mrinalkanti Ghosh and Hing Yin Tsang
Course: TTIC 31010 and CMSC 37000-1
Lectures: Tuesday & Thursdays, 9:00-10:20, Stuart Hall, room 104 (STU 104)
Mailing list: . To subscribe to the course mailing list, send an email to (with any subject and body). You should get a confirmation email in about 5 minutes, reply to this email or click on a link inside. If you cannot subscribe to the mailing list, please contact me.
Textbook: Algorithm Design by Kleinberg and Tardos.
Office hours:
  • Yury: Tuesdays, 10:45–11:45am at TTIC 437, or by appointment
  • Mrinalkanti: Fridays, 3:00–4:00pm at TTIC 405
  • Hing Yin: Mondays, 3:00–4:00pm at Young 208A
Requirements: There will be 3 homework assignments, 3 short in-class quizzes, a midterm and final exam.
Grading: homeworks 45%, quizzes 5%, midterm 20%, final 30%
Description: This is a graduate-level course on algorithms, with an emphasis on computational problems that are central to both theory and practice. The course focuses on developing techniques for the design and rigorous analysis of algorithms and data structures for such problems.

W. Kandinsky, Squares with Concentric Circles, 1913.
A dynamic programming algorithm solves sub-problems
of the original problem and stores solutions to the
sub-problems in a table.

Homework Assignments

Tentative Schedule

  1. January 5: Greedy Algorithms (Chapter 4)
    greedy algorithms, activity selection problem, minimum weighted completion time
  2. January 7: Greedy Algorithms, Huffman coding
    minimum cost spanning trees, Prim's algorithm, Huffman coding
  3. January 12: Huffman coding
    Huffman coding, a greedy algorithm for Max Cut
  4. January 14: Dynamic Programming (Chapter 6)
    Weighted Interval Scheduling, Typesetting problem
  5. January 19: Quiz #1, Dynamic Programming
    Typesetting Problem, Knapsack problem
  6. January 21: Dynamic Programming
    Minimum Tree Bisection, the Longest Common Subsequence Problem
  7. January 26: Dynamic Programming
    the Bellman-Ford algorithm
  8. January 28: Maximum Flow and Minimum Cut
    definitions, the Ford—Fulkerson algorithm
  9. February 2: Quiz #2, Max Flow and Min Cut, Maximum Matching
    the Ford—Fulkerson algorithm (continued), matchings, Hall's theorem
  10. February 4: Applications of Max Flow and Min Cut
    matchings, multi–source/multi–sink single–commodity flow, edge disjoint paths, Menger's theorem, and other examples
  11. February 9: Linear Programming (LP)
    linear programming, feasible solution, optimal solution, bounded/unbounded linear programs, feasible polytope, vertices, canonical (standard) form, LP duality
  12. February 11: LP Duality
    the dual LP, the dual of the dual, weak duality, strong duality
  13. February 16: Midterm Exam
  14. February 23: LP Duality. Polynomial-time reductions.
    the LP for Max Flow, its dual, polynomial-time reductions
  15. February 25: Polynomial-time reductions. Classes P and NP.
  16. March 1: NP, NP complete, and NP hard problems. Approximation algorithms.
  17. March 3: Approximation algoritms.