The table below provides information on the course's reading assignments, which are taken from the course textbook:
Cormen, Thomas, Charles Leiserson, Ronald Rivest, and Clifford Stein. Introduction to Algorithms. 3rd ed. MIT Press, 2009. ISBN: 9780262033848.
In addition to the assigned course readings, see the list of useful references for the course below.
SES #  TOPICS  READINGS 

L1  Administrivia Introduction Analysis of Algorithms, Insertion Sort, Mergesort 
Chapters 12 
R1  Correctness of Algorithms Horner's rule 

L2  Asymptotic Notation Recurrences Substitution, Master Method 
Chapters 34, excluding section 4.6 
L3  DivideandConquer: Strassen, Fibonacci, Polynomial Multiplication  Sections 4.2 and 30.1 
R2  Recurrences, Sloppiness  
L4  Quicksort, Randomized Algorithms  Sections 5.15.3 Chapter 7 
R3  Heapsort, Dynamic Sets, Priority Queues  Chapter 6 
L5  Lineartime Sorting: Lower Bounds, Counting Sort, Radix Sort  Sections 8.18.3 
L6  Order Statistics, Median  Chapter 9 
R4  Applications of Median Bucketsort 
Section 8.4 
L7  Hashing, Hash Functions  Sections 11.111.3 
L8  Universal Hashing, Perfect Hashing  Section 11.5 
R5  Quiz 1 Review  
Q1  Quiz 1, Inclass  
R6  Binary Search Trees, Tree Walks  Sections 12.112.3 
L9  Relation of BSTs to Quicksort Analysis of Random BST 
Section 12.4 
L10  Redblack Trees, Rotations, Insertions, Deletions  Chapter 13 
R7  23 Trees, Btrees  
L11  Augmenting Data Structures, Dynamic Order Statistics, Interval Trees  Chapter 14 
L12  Skip Lists  Skip Lists handout (PDF) 
R8  Range Trees  
L13  Amortized Algorithms, Table Doubling, Potential Method  Chapter 17 
L14  Competitive Analysis: Selforganizing Lists  Sleator, Daniel D., and Robert E. Tarjan. "Amortized efficiency of list update and paging rules." Communications of the ACM 28, no. 2 (February 1985): 202208. 
R9  Competitive Analysis: Ski Rental, Randomized Competitive Algorithm  
L15  Dynamic Programming, Longest Common Subsequence  Chapter 15 
L16  Greedy Algorithms, Minimum Spanning Trees  Sections 16.116.3 and 22.1 Chapter 23 
L17  Shortest Paths I: Properties, Dijkstra's Algorithm, Breadthfirst Search  Section 22.2 Chapter 24 
L18  Shortest Paths II: BellmanFord, Linear Programming, Difference Constraints  
R10  Graph Searching: Depthfirst Search, Topological Sort, DAG Shortest Paths  Sections 22.322.4 
L19  Shortest Paths III: Allpairs Shortest Paths, Matrix Multiplication, FloydWarshall, Johnson  Chapter 25 
L20  Quiz 2 Review  
L21  Ethics, Problem Solving (Mandatory Attendance)  
Q2  Quiz 2, Inclass  
L22  Advanced Topics  Dynamic Multithreaded Algorithms handout (PDF) 
L23  Advanced Topics (cont.)  
R11  Advanced Topics  
L24  Advanced Topics (cont.)  Demaine, Erik D. "CacheOblivious Algorithms and Data Structures." To appear in Lecture Notes from the EEF Summer School on Massive Data Sets, a volume of Lecture Notes in Computer Science. Berlin, Germany: SpringerVerlag. 
L25  Advanced Topics (cont.) Discussion of Followon Classes 

Final Exam 
Useful References
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.
———. 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.
———. More Programming Pearls: Confessions of a Coder. Reading, MA: AddisonWesley, 1988. ISBN: 0201118890.
More applications of algorithm design techniques to software engineering.
———. 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. 3rd ed. 2 vols. New York, NY: John Wiley & Sons, 1968, 1971. ISBN: 0471257087. 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. 3rd ed. 3 vols. Reading, MA: AddisonWesley, 1997. ISBN: 0201896834. ISBN: 0201896842. 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. 3 vols. New York, NY: SpringerVerlag, 1984. ISBN: 038713302X. ISBN: 354013641X. 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.