Algorithm design and analysis is a fundamental and important part of computer science. This course introduces students to advanced techniques for the design and analysis of algorithms, and explores a variety of applications.
We will focus on the use of randomness in algorithm design, specifically for the design and analysis of approximation and online algorithms.
There is no textbook for this course. We will read lecture notes from various sources as well as recent papers. Here are some useful references:
One undergraduate course in algorithms (577) or complexity (520, 810, or 830) is required. If you are unsure of whether you have sufficient background for this course or not, please contact the instructor within the first week.
Grading & Evaluation
Homework and exams: There will be 3 homeworks and one take-home final (25% each). The homework can be done in pairs; the take-home final must be done individually.