Thursday, December 13, 2007

The Art of Computer Programming
The Art of Computer Programming is a comprehensive monograph written by Donald Knuth which covers many kinds of programming algorithms and their analysis. Knuth began the project, which was originally planned to be one book, in 1962. The first three volumes were published in rapid succession, starting with volume 1 in 1968, volume 2 in 1969, and volume 3 in 1973. The first installment of Volume 4 was published in February 2005. Additional installments are planned approximately twice per year with a break before fascicle 5 to finish the "Selected Papers" series.

History
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.) Software such as GNU MDK exists to provide emulation of the MIX architecture.
Some readers are put off by the use of assembly language, but Knuth considers this necessary because algorithms need a context to judge speed and memory usage. It does, however, limit the accessibility of the book to many readers, and limits its usefulness as a "cookbook" for practicing programmers, many of whom are not familiar with assembly, and even if they are, have no particular desire to translate assembly code into a high-level language. A number of more accessible algorithms textbooks using high-level language examples exist and are popular for precisely these reasons.

Assembly language in the book
American Scientist has included this work among the best twelve physical-science monographs of the twentieth century)

Critical response

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 (three fascicles have been published as of February 2006, and alpha-test versions of additional fascicles are downloadable from Knuth's page below).

        • Volume 4A - Enumeration and Backtracking

          • Chapter 7 - Combinatorial searching
            Volume 4B - Graph and Network Algorithms

            • Chapter 7 continued
              Volume 4C and possibly 4D - Optimization and Recursion

              • Chapter 7 continued
                Chapter 8 - Recursion
                Volume 5 - Syntactic Algorithms, planned (as of August 2006, estimated in 2015).

                • Chapter 9 - Lexical scanning
                  Chapter 10 - Parsing techniques
                  Volume 6 - Theory of Context-Free Languages, planned.
                  Volume 7 - Compiler Techniques, planned. Chapter outline

                  7. - Introduction (82pp)

                  • 7.1 - Zeros and ones

                    • 7.1.1 - Boolean basics (88 pp)
                      7.1.2 - Boolean evaluation (67 pp)
                      7.1.3 - Bitwise tricks and techniques (122 pp)
                      7.1.4 - Binary decision diagrams
                      7.2 - Generating all possibilities

                      • 7.2.1 - Combinatorial generators (397 pp)

                        • 7.2.1.1 - Generating all n-tuples - published in Volume 4, Fascicle 2
                          7.2.1.2 - Generating all permutations - published in Volume 4, Fascicle 2
                          7.2.1.3 - Generating all combinations - published in Volume 4, Fascicle 3
                          7.2.1.4 - Generating all partitions - published in Volume 4, Fascicle 3
                          7.2.1.5 - Generating all set partitions - published in Volume 4, Fascicle 3
                          7.2.1.6 - Generating all trees - published in Volume 4, Fascicle 4
                          7.2.1.7 - History and further references - published in Volume 4, Fascicle 4
                          7.2.2 - Basic backtrack
                          7.2.3 - Efficient backtracking
                          7.3 - Shortest paths Outline of Volume 4A Enumeration and Backtracking

                          English editions
                          In order by volume number:

                          Volume 1: Fundamental Algorithms. Third Edition (Reading, Massachusetts: Addison-Wesley, 1997), xx+650pp. ISBN 0-201-89683-4
                          Volume 1, Fascicle 1: MMIX -- A RISC Computer for the New Millennium. (Addison-Wesley, February 14, 2005) ISBN 0-201-85392-2 (will be in the fourth edition of volume 1)
                          Volume 2: Seminumerical Algorithms. Third Edition (Reading, Massachusetts: Addison-Wesley, 1997), xiv+762pp. ISBN 0-201-89684-2
                          Volume 3: Sorting and Searching. Second Edition (Reading, Massachusetts: Addison-Wesley, 1998), xiv+780pp.+foldout. ISBN 0-201-89685-0
                          Volume 4, Fascicle 0: Boolean basics (preview available, publication est: Q4 2007)
                          Volume 4, Fascicle 1: Bitwise tricks and techniques (partial preview available, publication est: Q2 2008)
                          Volume 4, Fascicle 2: Generating All Tuples and Permutations, (Addison-Wesley, February 14, 2005) v+127pp, ISBN 0-201-85393-0
                          Volume 4, Fascicle 3: Generating All Combinations and Partitions. (Addison-Wesley, July 26, 2005) vi+150pp, ISBN 0-201-85394-9
                          Volume 4, Fascicle 4: Generating all Trees -- History of Combinatorial Generation, (Addison-Wesley, February 6, 2006) vi+120pp, ISBN 0-321-33570-8