CS 681 is an introductory graduate-level course on algorithms. Although we will be covering a number of current research topics in the design and analysis of algorithms, the primary focus will be on principles in algorithm design that are conceptually clean and broadly applicable. Our goal is to make the course both accessible and useful for graduate students in any area that makes use of algorithms.
Some of the broad areas we will be considering are: basic graph algorithms and data structures from a current perspective; the use of randomization; intractable problems and the design of approximation algorithms; and fundamental techniques from combinatorial optimization. We will be looking at algorithms as they appear in a variety of settings; some of these may include computational geometry, computational biology, on-line algorithm, communication networks, and the design of error-correcting codes.
The textbook is
Some other useful books are