# The Art of Computer Programming

*The Art of Computer Programming* is a comprehensive monograph written by Donald Knuth which covers all kinds of algorithms. The first three volumes are published, two others are planned. Originally, it was planned as a single volume of ten chapters, but Knuth soon discovered that a single volume could not hold all the material that needed inclusion. Along the way, Knuth was interrupted by his increasing dissatisfaction with the quality of scientific typesetting, and decided to spend a few months working up something more suitable. Eight years later, he returned with TeX. The intended ninth and tenth chapters, on language parsing and compilation techniques, are promised at some time in the distant future.

- Volume 1 - Fundamental Algorithms
- Chapter 1 - Basic concepts
- Chapter 2 - Information structures

- Volume 2 - Seminumerical Algorithms
- Chapter 3 - Random numbers
- Chapter 4 - Arithmetic

- Volume 3 - Sorting and Searching
- Chapter 5 - Sorting
- Chapter 6 - Searching

- Volume 4 - Combinatorial Algorithms, in preparation.
- Volume 4A, Enumeration and Backtracking
- Chapter 7 - Combinatorial searching

- Volume 4B, Graph and Network Algorithms
- Volume 4C and possibly 4D, Optimization and Recursion
- Chapter 7 cont.
- Chapter 8 - Recursion

- Volume 5 - Syntactic Algorithms, in preparation.
- Chapter 9 - Lexical scanning
- Chapter 10 - Parsing techniques

- Volume 6 - Theory of Context-Free Languages, planned.
- Volume 7 - Compiler Techniques, planned.

All examples in the books use a language called "MIX assembly language," which runs on the hypothetical

MIX computer.
(Currently, the MIX computer is being replaced by the

MMIX computer, which is a

RISC version).
Some readers are chagrined at the use of

assembly language, but Knuth considers this necessary because algorithms need a context to judge speed and memory usage.
Fortunately, there are free

MIX emulators available for download.

Further information:

Overview of topics (Knuth's personal homepage)