Book 27

Literate Programming

by Donald E. Knuth

Published 30 March 1992
Literate programming is a programming methodology that combines a programming language with a documentation language, making programs more robust, more portable, and more easily maintained than programs written only in a high-level language. Computer programmers already know both kinds of languages; they need only learn a few conventions about alternating between languages to create programs that are works of literature. A literate programmer is an essayist who writes programs for humans to understand, instead of primarily writing instructions for machines to follow. When programs are written in the recommended style they can be transformed into documents by a document compiler and into efficient code by an algebraic compiler. This anthology of essays from the inventor of literate programming includes Knuth's early papers on related topics such as structured programming, as well as the Computer Journal article that launched literate programming itself.

Book 78

Digital Typography

by Donald E. Knuth

Published 13 March 1999
Donald Knuth's influence in computer science ranges from the invention of literate programming to the development of the TeX programming language. One of the foremost figures in the field of mathematical sciences, Knuth has written papers which stand as milestones of development over a wide range of topics. In this collection, the second in the series, Knuth explores the relationship between computers and typography. The present volume, in the words of the author, is the legacy of all the work he has done on typography. When type designers, punch cutters, typographers, book historians, and scholars visited the University while Knuth was working in this field, it gave to Stanford what some consider to be its golden age of digital typography. By the author's own admission, the present work is one of the most difficult books that he has prepared. This is truly a work that only Knuth could have produced.

Book 102

Donald Knuth's influence in computer science ranges from the invention of methods for translating and defining programming languages to the creation of the TeX and METAFONT systems for desktop publishing. His award-winning textbooks have become classics; his scientific papers are widely referenced and stand as milestones of development over a wide range of topics. The present volume, which is the fourth in a series of his collected works, is devoted to an important subfield of Computer Science that Knuth founded in the 1960s and still considers his main life's work. This field, to which he gave the name Analysis of Algorithms, deals with quantitative studies of computer techniques, leading to methods for understanding and predicting the efficiency of computer programs. More than 30 of the papers that helped to shape this field are reprinted and updated in the present collection, together with historical material that has not previously been published.

Book 106

Donald Knuth's influence in computer science ranges from the invention of literate programming to the development of the TeX programming language. One of the foremost figures in the field of mathematical sciences, his papers are widely referenced and stand as milestones of development over a wide range of topics. This volume assembles more than three dozen of Professor Knuth's pioneering contributions to discrete mathematics. It includes a variety of topics in combinatorial mathematics (finite geometries, graph theory, enumeration, partitions, tableaux, matroids, codes); discrete algebra (finite fields, groupoids, closure operators, inequalities, convolutions, Pfaffians); and concrete mathematics (recurrence relations, special numbers and notations, identities, discrete probability). Of particular interest are two fundamental papers in which the evolution of random graphs is studied by means of generating functions.

How does a computer scientist understand infinity? What can probability theory teach us about free will? Can mathematical notions be used to enhance one's personal understanding of the Bible? This book contains six informal lectures by computer scientist Donald E. Knuth exploring the relationship between his vocation and his faith, revealing the unique perspective that his work with computing has lent to his understanding of God. Knuth's starting point is his 3:16 project, an application of mathematical "random sampling" to the books of the Bible. The first lectures tell the story of the project's conception and execution, exploring the complex dimensions of language translation, aesthetics, and theological history. Knuth also reveals the many insights that he has gained along the way from such interdisciplinary work. The theological musings culminate in a final lecture which tackles infinity, free will, and the other "big questions" that lie at the juncture of theology and computation. Each lecture ends with a question and answer exchange.

Donald E. Knuth has been making foundational contributions to the field of computer science for as long as computer science has been a field. His award-winning textbooks are often given credit for shaping the field, and his scientific papers are widely referenced and stand as milestones of development for a wide variety of topics. The present volume, the seventh in a series of his collected papers, is devoted to his work on the design of new algorithms. Nearly thirty of Knuth's classic papers are collected in this book and brought up to date with extensive revisions and notes on subsequent developments. The papers cover numerous discrete problems, such as assorting, searching, data compression, theorem proving, and cryptography, as well as methods for controlling errors in numerical computations.