Course Description

This course focuses on understanding of algorithm design process. We present a range of design and analysis techniques such as greedy method, divide and conquer, and dynamic programming for problems that rise in various computational applications, such as shortest paths, network flow, and minimum spanning trees. We will also look into intractability and NP-completeness


Primary: Algorithm Design, by Kleinberg and Tardos
Optional: Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein

Course Materials

List of topics . Please note that this list is subject to chang wihtout prior notice

We will be using Piazza for this course. All materials, homeworks, slides, and discussion will be there.


Tentative, subject to change

  • Homework: 35%
  • Project: 10%
  • Midterm: 25%
  • Final: 30%

  • Class participation will be counted as extra credit. All grades will be posted on Blackboard.