Readings

For reading assignments associated with each lecture, see the Calendar section.

The following books are additional references.

Texts on Algorithms

Buy at Amazon Dasgupta, Sanjoy, Christos Papadimitriou, and Umesh Vazirani. Algorithms. McGraw-Hill, 2006. ISBN: 9780073523408.

Buy at Amazon Kleinberg, Jon, and Eva Tardos. Algorithm Design. Addison-Wesley, 2005. ISBN: 9780321295354.

Algorithms and Programming

Buy at Amazon Bentley, Jon. Programming Pearls. Association for Computing Machinery, 1986. ISBN: 9780201103311.
Applications of algorithm design techniques to software engineering.

Buy at Amazon ———. More Programming Pearls: Confessions of a Coder. Addison-Wesley, 1988. ISBN: 9780201118896.
More applications of algorithm design techniques to software engineering.

Buy at Amazon ———. Writing Efficient Programs. Prentice-Hall, 1982. ISBN: 9780139702518.
Performance hacking extraordinaire.

Buy at Amazon Skiena, Steven. The Algorithm Design Manual. Springer, 1997. ISBN: 9780387948607. [Preview with Google Books]

Buy at Amazon Gonnet, Gaston. Handbook of Algorithms and Data Structures: Coded in Pascal and C. Addison-Wesley, 1984. ISBN: 9780201142181.
Pascal and C code, comparisons of actual running times, and pointers to analysis in research papers.

Advanced Topics

Buy at Amazon Even, Shimon. Graph Algorithms. Computer Science Press, 1979. ISBN: 9780914894216.
Broad treatment of graph algorithms, including network flow and planarity.

Buy at Amazon Garey, Michael, and David Johnson. Computers and Intractability: A Guide to the Theory of NP-Completeness. W. H. Freeman, 1979. ISBN: 9780716710455.
Reference book devoted to NP-completeness. Second half contains an extensive list of NP-complete problems and references to algorithms in the literature for polynomial-time special cases.

Buy at Amazon Gusfield, Dan. Algorithms on Strings, Trees, and Sequences: Computer Science and Computational Biology. Cambridge University Press, 1997. ISBN: 9780521585194. [Preview with Google Books]
General treatment of algorithms that operate on character strings and sequences.

Buy at Amazon Lawler, Eugene. Combinatorial Optimization: Networks and Matroids. Holt, Rinehart, and Winston, 1976.
Dense graph algorithms, network flows, and linear programming. First few chapters are excellent.

Buy at Amazon Papadimitriou, Christos, and Kenneth Steiglitz. Combinatorial Optimization: Algorithms and Complexity. Prentice-Hall, 1981. ISBN: 9780131524620.
Linear programming and its variants.

Buy at Amazon Sipser, Michael. Introduction to the Theory of Computation. PWS, 1997.
A good text on computability and complexity theory, with proof ideas to kick off each proof.

Buy at Amazon Tarjan, Robert. Data Structures and Network Algorithms. Society for Industrial and Applied Mathematics, 1985. [Preview with Google Books]
An advanced book with tons of good stuff.

Background Mathematics

Buy at Amazon Chung, Kai. Elementary Probability Theory with Stochastic Processes. Springer, 1974.
Intuitive introduction to probability.

Buy at Amazon Feller, William. An Introduction to Probability Theory and Its Applications. Wiley, 1968 (Volume 1), 1971 (Volume 2). ISBN: 9780471257080.
Excellent reference for probability theory.

Buy at Amazon Liu, Chung. Introduction to Combinatorial Mathematics. McGraw-Hill College, 1968. ISBN: 9780070381247.
Combinatorial mathematics relevant to computer science. Excellent problems.

Buy at Amazon Niven, Ivan, and Herbert Zuckerman. An Introduction to the Theory of Numbers. John Wiley & Sons, 1991. ISBN: 9789971513016.
Readable introduction to number theory.