Advanced Algorithms

About This Course  

Algorithm design and analysis is a fundamental and important part of any discipline of computer science including data science.This course assumes that every student has passed an undergraduate course in this area, or has an equivalent background. Compared to the undergraduate algorithms course, the goal of the course is to study some topics more deeply and to learn more advanced algorithms.

Learning Objectives  

The topics we plan to cover include network flow, linear programming and duality theory, hard problems (NP and PSpace), Tree decomposition and tree width, Approximation algorithms, and Randomized algorithms.


(No information at the moment, a place holder for future announcements.)

Reading Material

Required Reading

  • “Algorithm Design”, Jon Kleinberg and Éva Tardos (Cornell University)

Recommended Reading

  • “Introduction to Algorithms”, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein (MIT)


18 AbanIntroduction
20 AbanStable Matching Problem1.1
25 AbanInterval scheduling and the “greedy stays ahead” analysis technique4.1
27 AbanMinimize lateness and the “exchange argument” analysis technique4.2
2 AzarMinimum spanning tree algorithms4.5, 4.6
4 AzarDynamic programming: Sequence alignment6.6

Assessment and Feedback 

(will links to a separate page)

Marking Criteria 

  • 30% Homework assignments
  • 10% Programming Assignment
  • 20% Midterm
  • 40% Final