Course description
The course gives a broad introduction to the design and analysis of algorithms.
A tentative list of topics includes: sorting and order statistics;
common algorithm design techniques, including divide-and-conquer, dynamic programming, and greedy;
design and use of data structures; flows and cuts;
lower bound techniques; graph algorithms; NP-completeness; randomized algorithms; approximation algorithms.
Prerequisites: CS 251, CS 182.