by S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani

This is a penultimate draft of our soon to appear textbook.
For more information, visit

Table of contents


Chapter 0: Prologue
Chapter 1: Algorithms with numbers
Chapter 2: Divide-and-conquer algorithms
Chapter 3: Decompositions of graphs
Chapter 4: Paths in graphs
Chapter 5: Greedy algorithms
Chapter 6: Dynamic programming
Chapter 7: Linear programming
Chapter 8: NP-complete problems
Chapter 9: Coping with NP-completeness
Chapter 10: Quantum algorithms

Entire book (draft)