Design and Analysis of Algorithms


Course Outline

The course is divided into 4 modules.

Module 1

Basic algorithms: asymptotic notations, recurrences, greedy algorithms, divide-and-conquer algorithms, dynamic programming.

Module 2

Max-flow and min-cut: Flows, graph cuts, algorithms for computing max-flow (and min-cut), applications of max-flow and min-cut.

Module 3

Boundaries of efficient computation: what is beyond efficient computation?, NP hard and NP-completeness, reductions and equivalence of several NP-complete problems.

Module 4

Coping with NP-hardness: approximation algorithms, randomness, exponential time (better-than-brute-force) algorithms.