In addition to the list of useful references for the course, see the readings by session below.
The following books are useful references for the course:
Aho, Alfred V., John E. Hopcroft, and Jeffrey D. Ullman. The Design and Analysis of Computer Algorithms. Reading, MA: AddisonWesley, 1974. ISBN: 0201000296.
The classic text, but it lacks topics in network flows and linear programming, as well as more recent algorithms.
Aho, Alfred V., John E. Hopcroft, and Jeffrey D. Data Structures and Algorithms. Reading, MA: AddisonWesley, 1983. ISBN: 0201000237.
Revised and more elementary version of the first six chapters of The Design and Analysis of Computer Algorithms.
Baase, Sara. Computer Algorithms: Introduction to Design and Analysis. 2nd ed. Reading, MA: AddisonWesley, 1988. ISBN: 0201060353.
General reference, although the exposition is sometimes terse or sketchy.
Bentley, Jon Louis. Programming Pearls. Reading, MA: AddisonWesley, 1986. ISBN: 0201103311.
Applications of algorithm design techniques to software engineering.
Bentley, Jon Louis.More Programming Pearls: Confessions of a Coder. Reading, MA: AddisonWesley, 1988. ISBN: 0201118890.
More applications of algorithm design techniques to software engineering.
Bentley, Jon Louis. Writing Efficient Programs. Englewood Cliffs, NJ: PrenticeHall, 1982. ISBN: 0139702512.
Performance hacking extraordinaire.
Brassard, Gilles, and Paul Bratley. Algorithmics: Theory and Practice. Englewood Cliffs, NJ: PrenticeHall, 1988. ISBN: 0130232432.
Good examples and problems. Focus on methods rather than specific problems.
Chung, Kai Lai. Elementary Probability Theory with Stochastic Processes. New York, NY: SpringerVerlag, 1974. ISBN: 0387900969.
Intuitive introduction to probability.
Even, Shimon. Graph Algorithms. Rockville, MD: Computer Science Press, 1979. ISBN: 0914894218.
Broad treatment of graph algorithms, including network flow and planarity.
Feller, William. An Introduction to Probability Theory and Its Applications, Vol 1. 3rd ed. New York, NY: John Wiley & Sons, 1968. ISBN: 0471257087.
Excellent reference for probability theory.
Feller, William. An Introduction to Probability Theory and Its Applications, Vol. 2. 2nd ed. New York, NY: John Wiley & Sons, 1971. ISBN: 0471257095.
Excellent reference for probability theory.
Garey, Michael R., and David S. Johnson. Computers and Intractibility: A Guide to the Theory of NPCompleteness. San Francisco, CA: W. H. Freeman & Co., 1979. ISBN: 0716710447.
Reference book devoted to NPcompleteness. The second half contains an extensive list of NPcomplete problems and references to algorithms in the literature for polynomialtime special cases.
Gonnet, Gaston H. Handbook of Algorithms and Data Structures. Reading, MA: AddisonWesley, 1984. ISBN: 020114218X.
Code in Pascal and C, comparisons of actual running times, and pointers to analysis in research papers.
Gusfield, Dan. Algorithms on Strings, Trees, and Sequences: Computer Science and Computational Biology. Cambridge, UK: Cambridge University Press, 1997. ISBN: 0521585198.
General treatment of algorithms that operate on character strings and sequences.
Horowitz, Ellis, and Sartaj Sahni. Fundamentals of Computer Algorithms. Potomac, MD: Computer Science Press, 1978. ISBN: 0914894226.
Good on data structures, dynamic programming, and branchandbound algorithms.
Kingston, Jeffrey H. Algorithms and Data Structures: Design, Correctness, Analysis. Reading, MA: AddisonWesley Publishing Co., 1991. ISBN: 0201417057.
A nice introductory book on data structures, with a good chapter on algorithm correctness.
Knuth, Donald E. The Art of Computer Programming Vol. 1. 3rd ed. Reading, MA: AddisonWesley, 1997. ISBN: 0201896834.
Encyclopedic work in three volumes: (1) Fundamental Algorithms, (2) Seminumerical Algorithms, and (3) Sorting and Searching.
Knuth, Donald E. The Art of Computer Programming Vol. 2. 3rd ed. Reading, MA: AddisonWesley, 1997. ISBN: 0201896842.
Encyclopedic work in three volumes: (1) Fundamental Algorithms, (2) Seminumerical Algorithms, and (3) Sorting and Searching.
Knuth, Donald E. The Art of Computer Programming Vol. 3. 3rd ed. Reading, MA: AddisonWesley, 1997. ISBN: 0201896850.
Encyclopedic work in three volumes: (1) Fundamental Algorithms, (2) Seminumerical Algorithms, and (3) Sorting and Searching.
Lawler, Eugene L. Combinatorial Optimization: Networks and Matroids. New York, NY: Holt, Rinehart, and Winston, 1976. ISBN: 0030848660.
Graph algorithms (dense graphs), network flows, and linear programming. First few chapters are excellent.
Liu, Chung. L. Introduction to Combinatorial Mathematics. New York, NY: McGrawHill, 1968. ISBN: 0070381240.
Combinatorial mathematics relevant to computer science. Excellent problems.
Manber, Udi. Introduction to Algorithms: A Creative Approach. Reading, MA: AddisonWesley, 1989. ISBN: 0201120372.
Elementary text with an emphasis on creativity.
Mehlhorn, Kurt. Data Structures and Algorithms, Vol 1. New York, NY: SpringerVerlag, 1984. ISBN: 038713302X.
Three volumes: (1) Sorting and Searching, (2) Graph Algorithms and NPCompleteness, and (3) Multidimensional Searching and Computational Geometry. Lecture notes on basic and advanced topics.
Mehlhorn, Kurt. Data Structures and Algorithms, Vol. 2. New York, NY: SpringerVerlag, 1984. ISBN: 354013641X.
Three volumes: (1) Sorting and Searching, (2) Graph Algorithms and NPCompleteness, and (3) Multidimensional Searching and Computational Geometry. Lecture notes on basic and advanced topics.
Mehlhorn, Kurt. Data Structures and Algorithms, Vol. 3. New York, NY: SpringerVerlag, 1984. ISBN: 0387136428.
Three volumes: (1) Sorting and Searching, (2) Graph Algorithms and NPCompleteness, and (3) Multidimensional Searching and Computational Geometry. Lecture notes on basic and advanced topics.
Niven, Ivan, and Herbert S. Zuckerman.An Introduction to the Theory of Numbers. 4th ed. New York, NY: John Wiley & Sons, 1980. ISBN: 0471028517.
Readable introduction to number theory.
Papadimitriou, Christos H., and Kenneth Steiglitz.Combinatorial Optimization: Algorithms and Complexity. Englewood Cliffs, NJ: PrenticeHall, 1982. ISBN: 0131524623.
Linear programming and its variants.
Press, William P., Brian P. Flannery, Saul A. Teukolsky, and William T. Vetterling.Numerical Recipies in C: The Art of Scientific Computing. Cambridge, UK: Cambridge University Press, 1988. ISBN: 052135465X.
Code for numerical algorithms.
Reingold, Edwin. M., Jurg Nievergelt, and Narsingh Deo. Combinatorial Algorithms: Theory and Practice. Englewood Cliffs, NJ: PrenticeHall, 1977. ISBN: 013152447X.
Good on recurrence relations and binary search trees.
Sedgewick, Robert. Algorithms. 2nd ed. Reading, MA: AddisonWesley, 1988. ISBN: 0201066734.
Elementary text with an excellent breadth of topics. Light on analysis, but lots of figures.
Sipser, Michael. Introduction to the Theory of Computation. Boston, MA: PWS Publishing Company, 1997. ISBN: 053494728X.
A good text on computability and complexity theory.
Tarjan, Robert Endre. Data Structures and Network Algorithms. Philadelphia, PA: Society for Industrial and Applied Mathematics, 1983. ISBN: 0898711878.
Advanced book with tons of good stuff.
Readings by Session
The readings in the table below are from the course textbook:
Cormen, Thomas H., Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms. 2nd ed. Cambridge, MA: MIT Press, 2001. ISBN: 0262032937.
L1 
Introduction: Analysis of Algorithms, Insertion Sort, Merge Sort 
Chapters 12 
R1 
Correctness of Algorithms 

L2 
Asymptotic Notation, Recurrences: Substitution, Iteration, Master Method 
Chapters 34, excluding §4.4 
L3 
Divide and Conquer: Strassen's Algorithm, Fibonacci Numbers, VLSI Layout 
§28.2 and §30.1 
R2 
Recurrences, Sloppiness 

L4 
Quicksort, Randomized Algorithms 
§5.13, Chapter 7 
L5 
Median, Order Statistics 
Chapter 9 
R3 
Sorting: Heapsort, Dynamic Sets, Priority Queues 
Chapter 6 
L6 
Lineartime Sorting, Lower Bounds, Counting Sort, Radix Sort 
§8.13 
L7 
Hashing: Chaining, Universal Hashing 
§11.13 
R4 
Quiz 1 Review 


Quiz 1 

L8 
Binary Search Trees (BST): Tree Walks, Analysis of Random BST 
§12.13 
R5 
Relation of BST's to Quicksort 
§12.4 
L9 
Balanced Search Trees 
Chapter 13, §18.13 
R6 
Augmenting Data Structures 
Chapter 14 
L10 
Amortized Analysis: Disjoint Sets 
Chapter 17, §21.13 
L11 
More Amortized Analysis 

R7 
Competitive Analysis 

L12 
Dynamic Programming 
Chapter 15 
L13 
Greedy Algorithms, Graphs, Minimum Spanning Trees 
§16.13, Chapter 23 
R8 
Examples of Greedy Algorithms and Dynamic Programming 

L14 
Shortest Paths: Dijkstra's Algorithm, Breadthfirst Search 
§22.12, pp. 580587, §24.3 
L15 
Shortest Paths: BellmanFord, Shortest Paths in Dags, Difference Constraints 
§24.12, §24.45 
R9 
Depthfirst Search: Edge Classification 
§22.35 
L16 
Allpairs Shortest Paths: Dynamic Programming, FloydWashall, Johnson's Algorithm 
Chapter 25 
L17 
Computational Geometry: Segment Intersection 
§33.12 
R10 
Computational Geometry 

L18 
Computational Geometry: Closest Pair 
§33.4 
L19 
Takehome Quiz
Ethics, Problem Solving (mandatory attendance) 

L20 
Network Flow: Maxflow Mincut Theorem 
§26.12 
L21 
Network Flow: EdmondsKarp Algorithm 
§26.3 
L22 
String Matching: RabinKarp Algorithm 
§32.12 
R11 
Final Exam Review 

L23 
Fast Fourier Transform 
§30.12 
L24 
NPcompleteness, Approximation Algorithms 
§34.12, §35.1 

Final Exam 
