All Topics  
The Art of Computer Programming

 
The Art of Computer Programming

   Email Print
   Bookmark   Link






 

The Art of Computer Programming



 
 
The Art of Computer Programming is a comprehensive monograph
Monograph

A monograph is a work of writing upon a single subject, usually also by a single author. It is often a scholarly essay or learned treatise, and may be released in the manner of a book, journal article, editorial or written rant....
 written by Donald Knuth
Donald Knuth

Donald Ervin Knuth is a renowned computer science and Emeritus of the Art of Computer Programming at Stanford University.Author of the seminal multi-volume work The Art of Computer Programming , Knuth has been called the "father" of the run-time analysis, contributing to the development of, and systematizing formal mathematical techn...
 that covers many kinds of programming algorithm
Algorithm

In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing....
s and their analysis. Knuth began the project, originally planned as a single book, in 1962. The first three volumes were published in rapid succession, with volume 1 released in 1968, volume 2 in 1969, and volume 3 in 1973. The first installment of Volume 4 was published in February 2005.






Discussion
Ask a question about 'The Art of Computer Programming'
Start a new discussion about 'The Art of Computer Programming'
Answer questions from other users
Full Discussion Forum



Encyclopedia


The Art of Computer Programming is a comprehensive monograph
Monograph

A monograph is a work of writing upon a single subject, usually also by a single author. It is often a scholarly essay or learned treatise, and may be released in the manner of a book, journal article, editorial or written rant....
 written by Donald Knuth
Donald Knuth

Donald Ervin Knuth is a renowned computer science and Emeritus of the Art of Computer Programming at Stanford University.Author of the seminal multi-volume work The Art of Computer Programming , Knuth has been called the "father" of the run-time analysis, contributing to the development of, and systematizing formal mathematical techn...
 that covers many kinds of programming algorithm
Algorithm

In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing....
s and their analysis. Knuth began the project, originally planned as a single book, in 1962. The first three volumes were published in rapid succession, with volume 1 released 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 for release approximately biannually with a break before fascicle
Fascicle

A fascicle is a bundle or a cluster.Fascicle may also refer to:* Muscle fascicle, in anatomy, a bundle of skeletal muscle fibers surrounded by connective tissue...
 5 to finish the "Selected Papers" series.

History

Knuthatopencontentalliance
Considered an expert at writing compilers, Knuth started to write a book about compiler design in 1962, and soon realized that the scope of the book needed to be much larger. In June 1965, Knuth finished the first draft of what was originally planned to be a single volume of twelve chapters. His hand-written manuscript was 3,000 pages long: he had assumed that about five hand-written pages would translate into one printed page, but his publisher said instead that about 1½ hand-written pages translated to one printed page. This meant the book would be approximately 2,000 pages in length. At this point, the plan was changed: the book would be published in seven volumes, each with just one or two chapters. Due to the growth in the material, the plan for Volume 4 has since expanded to include Volumes 4A, 4B, 4C, and possibly 4D. Volume 4A is likely to split further, since 7.1 and 7.2.1 together are already over 650 pages.

In 1976, Knuth prepared a second edition of Volume 2, requiring it to be typeset
Typesetting

Typesetting involves the presentation of textual material in graphic form on paper or some other Recording medium. Before the advent of desktop publishing, typesetting of printed material was produced in print shops by compositors or typesetters working by hand, and later with machines....
 again, but the style of type used in the first edition (called hot type
Hot metal typesetting

Hot metal typesetting is a term used to encompass a range of different 19th century technologies to create or typesetting text for use in the letterpress method of printing....
) was no longer available. In 1977, he decided to spend a few months working up something more suitable. Eight years later, he returned with TeX
TeX

TeX is a typesetting system designed and mostly written by Donald Knuth. Together with the METAFONT language for font description and the Computer Modern typefaces, it was designed with two main goals in mind: to allow anybody to produce high-quality books using a reasonable amount of effort, and to provide a system that would give the exact...
, which is currently used for all volumes.

The famous offer of a reward check
Knuth reward check

In the preface of each of his books and on his website, computer scientist Donald Knuth offers to cheerfully pay a reward of $2.56 to the first finder of each error in one of his published books , whether it be technical, typographical, or historical....
 worth "one hexadecimal dollar" (0x100 Base 16
Hexadecimal

In mathematics and computer science, hexadecimal is a numeral system with a radix, or base, of 16. It uses sixteen distinct symbols, most often the symbols 09 to represent values zero to nine, and A, B, C, D, E, F to represent values ten to fifteen....
 cents, in decimal
Decimal

The decimal numeral system has 10 as its Base . It is the most widely used numeral system....
, is $2.56) for any errors found, and the correction of these errors in subsequent printings, has contributed to the highly polished and still-authoritative nature of the work, long after its first publication. Another characteristic of the volumes is the variation in the difficulty of the exercises. The level of difficulty ranges from "warm-up" exercises to unsolved research problems, providing a challenge for any reader. Knuth's dedication is also famous:

Assembly language in the book


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

MIX is a hypothetical computer used in Donald Knuth’s monograph, The Art of Computer Programming . MIX’s model number is 1009, which was derived by combining the model numbers and names of several contemporaneous, commercial machines deemed significant by the author....
 computer. (Currently, the MIX computer is being replaced by the MMIX
MMIX

MMIX is a 64-bit Reduced instruction set computer instruction set Computer architecture designed by Donald Knuth, with significant contributions by John L....
 computer, which is a RISC version.) Software such as GNU MDK
GNU MDK

The GNU MIX Development Kit is a free software package for developing, running and debugging programs written in MIXAL, an assembly language-like language for programming a fictional computer called MIX....
 exists to provide emulation of the MIX architecture.

Some readers are put off by the use of assembly language
Assembly language

An assembly language is a low-level language for programming computers. It implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture....
, but Knuth considers this necessary because algorithms need to be in context in order for their speed and memory usage to be judged. This does, however, limit the accessibility of the book for many readers, and limits its usefulness as a "cookbook" for practicing programmers, who may not be familiar with assembly, or who may have no particular desire to translate assembly language 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.

Critical response

American Scientist
American Scientist

American Scientist is an illustrated bimonthly magazine about science and technology. Each issue includes four to five feature articles written by prominent scientists and engineers....
 has included this work among the best twelve physical-science monograph
Monograph

A monograph is a work of writing upon a single subject, usually also by a single author. It is often a scholarly essay or learned treatise, and may be released in the manner of a book, journal article, editorial or written rant....
s of the twentieth century, and within the computer science community it is regarded as the first and still the best comprehensive treatment of its subject. Covers of the third edition of Volume 1 quote Bill Gates
Bill Gates

William Henry "Bill" Gates III is an United States business magnate, philanthropist, author, the List of the 100 wealthiest people , and chairman of the board of Microsoft, the software company he founded with Paul Allen....
 as saying, "If you think you're a really good programmer […] read (Knuth's) Art of Computer Programming […] You should definitely send me a resume if you can read the whole thing." (According to folklore, Steve Jobs
Steve Jobs

Steven Paul Jobs is an United States businessman and co-founder, Chairman, and Chief executive officer of Apple Inc.. Jobs is the former CEO of Pixar Animation Studios....
 made this claim.)

Chapter outline

  • Volume 1 - Fundamental Algorithms
    • Chapter 1 - Basic concepts
    • Chapter 2 - Information structures
  • Volume 2 - Seminumerical Algorithms
    • Chapter 3 - Random number
      Random number

      Random number may refer to:* A number generated for or part of a set exhibiting statistical randomness.* A random sequence obtained from a stochastic process....
      s
    • Chapter 4 - Arithmetic
  • Volume 3 - Sorting and Searching
    • Chapter 5 - Sorting
      Sorting

      Sorting is any process of arranging items in some sequence and/or in different sets, and accordingly, it has two common, yet distinct meanings:...
    • Chapter 6 - Searching
      Searching

      selfref|For searching in Wikipedia, see...
  • Volume 4 - Combinatorial
    Combinatorics

    Combinatorics is a branch of pure mathematics concerning the study of Countable set objects. It is related to many other areas of mathematics, such as algebra, probability theory, ergodic theory and geometry, as well as to applied subjects in computer science and statistical physics....
     Algorithms, in preparation (four fascicle
    Fascicle

    A fascicle is a bundle or a cluster.Fascicle may also refer to:* Muscle fascicle, in anatomy, a bundle of skeletal muscle fibers surrounded by connective tissue...
    s have been published as of May 2008, and alpha-test versions of additional fascicles are downloadable from Knuth's page below).
    • Volume 4A - Enumeration
      Enumeration

      In mathematics and theoretical computer science, the broadest and most abstract definition of an enumeration of a Set is an exact listing of all of its element s ....
       and Backtracking
      Backtracking

      Backtracking is a general algorithm for finding all solutions to some computational problem, that incrementally builds candidates to the solutions, and abandons each partial candidate c as soon as it determines that c cannot possibly be completed to a valid solution ....
      • Chapter 7 - Combinatorial searching
    • Volume 4B - Graph
      Graph theory

      In mathematics and computer science, graph theory is the study of graph : mathematical structures used to model pairwise relations between objects from a certain collection....
       and Network
      Network flow

      In graph theory, a flow network is a Graph #Directed graph where each edge has a capacity and each edge receives a flow. The amount of flow on an edge cannot exceed the capacity of the edge....
       Algorithms
      • Chapter 7 continued
    • Volume 4C and possibly 4D - Optimization and Recursion
      Recursion

      Recursion, in mathematics and computer science, is a method of defining Function in which the function being defined is applied within its own definition....
      • 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 Language
    Context-free language

    In formal language theory, a context-free language is a formal language generated by some context-free grammar. The set of all context-free languages is identical to the set of languages accepted by pushdown automaton....
    s, planned.
  • Volume 7 - Compiler Techniques, planned.


Outline of Volume 4A Enumeration and Backtracking

  • 7 - Introduction (82pp) - published in Volume 4, Fascicle 0
    • 7.1 - Zeros and ones
      • 7.1.1 - Boolean basics (88 pp) - published in Volume 4, Fascicle 0
      • 7.1.2 - Boolean evaluation (67 pp) - published in Volume 4, Fascicle 0
      • 7.1.3 - Bitwise tricks and techniques (122 pp) - published as Pre-Fascicle 1a.
      • 7.1.4 - Binary decision diagrams (150 pp) - published as Pre-Fascicle 1b.
    • 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 4B Graph and Network Algorithms

    • 7.4 - Graph algorithms
      • 7.4.1 - Components and traversal
      • 7.4.2 - Special classes of graphs
      • 7.4.3 - Expander graphs
      • 7.4.4 - Random graphs
    • 7.5 - Network algorithms
      • 7.5.1 - Distinct representatives
      • 7.5.2 - The assignment problem
      • 7.5.3 - Network flows
      • 7.5.4 - Optimum subtrees
      • 7.5.5 - Optimum matching
      • 7.5.6 - Optimum orderings
    • 7.6 - Independence theory
      • 7.6.1 - Independence structures
      • 7.6.2 - Efficient matroid algorithms


Outline of Volumes 4C and 4D Optimization and Recursion

    • 7.7 - Discrete dynamic programming
      Dynamic programming

      In mathematics and computer science, dynamic programming is a method of solving problems that exhibit the properties of overlapping subproblems and optimal substructure ....
    • 7.8 - Branch-and-bound techniques
    • 7.9 - Herculean tasks (aka NP-hard
      NP-hard

      NP-hard , in computational complexity theory, is a class of problems informally "at least as hard as the hardest problems in NP ." A problem H is NP-hard if and only if there is an NP-complete problem L that is polynomial-time Turing reduction to H, i.e....
       problems)
    • 7.10 - Near-optimization
      Approximation algorithm

      In computer science and operations research, approximation algorithms are algorithms used to find approximate solutions to optimization problems....
  • 8 - Recursion
    Recursion

    Recursion, in mathematics and computer science, is a method of defining Function in which the function being defined is applied within its own definition....


English editions


Current editions

In order by volume number:

  • Volume 1: Fundamental Algorithm
    Algorithm

    In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing....
    s
    . Third Edition (Reading, Massachusetts: Addison-Wesley, 1997), xx+650pp. ISBN 0-201-89683-4
  • Volume 1, Fascicle
    Fascicle

    A fascicle is a bundle or a cluster.Fascicle may also refer to:* Muscle fascicle, in anatomy, a bundle of skeletal muscle fibers surrounded by connective tissue...
     1: MMIX
    MMIX

    MMIX is a 64-bit Reduced instruction set computer instruction set Computer architecture designed by Donald Knuth, with significant contributions by John L....
     -- 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
    Sorting algorithm

    In computer science and mathematics, a sorting algorithm is an algorithm that puts elements of a List in a certain Total order. The most-used orders are numerical order and lexicographical order....
     and Searching
    . Second Edition (Reading, Massachusetts: Addison-Wesley, 1998), xiv+780pp.+foldout. ISBN 0-201-89685-0
  • Volume 4, Fascicle 0: Introduction to Combinatorial Algorithms
    Combinatorics

    Combinatorics is a branch of pure mathematics concerning the study of Countable set objects. It is related to many other areas of mathematics, such as algebra, probability theory, ergodic theory and geometry, as well as to applied subjects in computer science and statistical physics....
     and Boolean
    Boolean

    Boolean , as a noun or an adjective, may refer to:* Boolean algebra , a logical calculus of truth values or set membership* Boolean algebra , a set with operations resembling logical ones...
     Functions
    Function (mathematics)

    The mathematical concept of a function expresses dependence between two quantities, one of which is known and the other which is produced. A function associates a single output to each input element drawn from a fixed Set , such as the real numbers , although different inputs may have the same output....
    , (Addison-Wesley Professional, April 28, 2008) vi+240pp, ISBN 0-321-53496-4
  • Volume 4, Fascicle 1: Bitwise tricks and techniques and Binary Decision Diagrams (partial preview available, publication est: 2009)
  • Volume 4, Fascicle 2: Generating All Tuple
    Tuple

    In mathematics, a tuple is a sequence of a specific number of values, called the components of the tuple. These components can be any kind of mathematical objects, where each component of a tuple is a value of a specified type....
    s and Permutation
    Permutation

    In several fields of mathematics the term permutation is used with different but closely related meanings. They all relate to the notion of mapping the element s of a set to other elements of the same set, i.e., exchanging elements of a set....
    s
    , (Addison-Wesley, February 14, 2005) v+127pp, ISBN 0-201-85393-0
  • Volume 4, Fascicle 3: Generating All Combination
    Combination

    In combinatorics, a combination is an un-ordered collection of distinct elements, usually of a prescribed size and taken from a given set. Given such a Set S, a combination of elements of S is just a subset of S, where as always for sets the order of the elements is not taken into account ....
    s and Partition
    Partition (number theory)

    In number theory, a partition of a positive integer n is a way of writing n as a sum of positive integers. Two sums which only differ in the order of their summands are considered to be the same partition; if order matters then the sum becomes a composition ....
    s
    . (Addison-Wesley, July 26, 2005) vi+150pp, ISBN 0-201-85394-9
  • Volume 4, Fascicle 4: Generating all Trees
    Tree (graph theory)

    In mathematics, more specifically graph theory, a tree is a graph in which any two Vertex are connected by exactly one path . Alternatively, any connectedness graph with no Cycle is a tree....
     -- History of Combinatorial Generation
    , (Addison-Wesley, February 6, 2006) vi+120pp, ISBN 0-321-33570-8


Previous editions

In order by publication date:
  • Volume 1, first edition, 1968. 634pp. ISBN 0-201-03801-3.
  • Volume 2, first edition, 1969, xi+624pp, ISBN 0-201-03802-1.
  • Volume 3, first edition, 1973, xi+723pp+centerfold, ISBN 0-201-03803-X
  • Volume 1, second edition, 1973, xiii+634pp, ISBN 0-201-03809-9.
  • Volume 2, second edition, 1981, xiii+ 688pp. ISBN 0-201-03822-6.


External links

  • (Knuth's personal homepage)
  • -(on the influence of Bob Floyd
    Robert Floyd

    Robert W Floyd was an eminent computer scientist.Born in New York, Floyd finished school at age 14. At the University of Chicago, he received a Bachelor's degree in liberal arts in 1953 and a second Bachelor's degree in physics in 1958....
    )
  • (on the influence of Bill Gosper
    Bill Gosper

    Ralph William Gosper, Jr., known as Bill Gosper, is an American mathematician and programmer from Pennsauken Township, New Jersey. Along with Richard Greenblatt , he may be considered to have founded the Hacker community, and holds a place of pride in the lisp programming language community....
     on the 2nd Edition of Volume 2.)