Donald Ervin Knuth ( kə-NOOTH; born January 10, 1938) is an American computer scientist and mathematician. He is a professor emeritus at Stanford University. He is the 1974 recipient of the ACM Turing Award, informally considered the Nobel Prize of computer science. Knuth has been called the "father of the analysis of algorithms".
Knuth is the author of the multi-volume work The Art of Computer Programming. He contributed to the development of the rigorous analysis of the computational complexity of algorithms and systematized formal mathematical techniques for it. In the process, he also popularized the asymptotic notation. In addition to fundamental contributions in several branches of theoretical computer science, Knuth is the creator of the TeX computer typesetting system, the related METAFONT font definition language and rendering system, and the Computer Modern family of typefaces.
As a writer and scholar, Knuth created the WEB and CWEB computer programming systems designed to encourage and facilitate literate programming, and designed the MIX/MMIX instruction set architectures. He strongly opposes the granting of software patents, and has expressed his opinion to the United States Patent and Trademark Office and European Patent Organisation.
Donald Knuth was born in Milwaukee, Wisconsin, to Ervin Henry Knuth and Louise Marie Bohning. He describes his heritage as "Midwestern Lutheran German". His father owned a small printing business and taught bookkeeping. While a student at Milwaukee Lutheran High School, Knuth thought of ingenious ways to solve problems. For example, in eighth grade, he entered a contest to find the number of words that the letters in "Ziegler's Giant Bar" could be rearranged to create; the judges had identified 2,500 such words. With time gained away from school due to a fake stomach ache, Knuth used an unabridged dictionary and determined whether each dictionary entry could be formed using the letters in the phrase. He identified over 4,500 words, winning the contest. As prizes, the school received a new television and enough candy bars for all of his schoolmates to eat.
Knuth received a scholarship in physics to the Case Institute of Technology (now part of Case Western Reserve University) in Cleveland, Ohio, enrolling in 1956. He also joined the Beta Nu Chapter of the Theta Chi fraternity. While studying physics at Case, Knuth was introduced to the IBM 650, an early commercial computer. After reading the computer's manual, Knuth decided to rewrite the assembly and compiler code for the machine used in his school because he believed he could do it better.
In 1958, Knuth created a program to help his school's basketball team win its games. He assigned "values" to players in order to gauge their probability of scoring points, a novel approach that Newsweek and CBS Evening News later reported on.
Knuth was one of the founding editors of the Case Institute's Engineering and Science Review, which won a national award as best technical magazine in 1959. He then switched from physics to mathematics, and received two degrees from Case in 1960: his Bachelor of Science, and simultaneously a master of science by a special award of the faculty, who considered his work exceptionally outstanding.
At the end of his senior year at Case in 1960, Knuth proposed to Burroughs Corporation to write an ALGOL compiler for the B205 for $5,500. The proposal was accepted and he worked on the ALGOL compiler between graduating from Case and going to Caltech.
In 1963, with mathematician Marshall Hall as his adviser, he earned a PhD in mathematics from the California Institute of Technology, with a thesis titled Finite Semifields and Projective Planes.
In 1963, after receiving his PhD, Knuth joined Caltech's faculty as an assistant professor.
While at Caltech and after the success of the Burroughs B205 ALGOL compiler, he became consultant to Burroughs Corporation, joining the Product Planning Department. At Caltech he was operating as a mathematician, but at Burroughs as a programmer, working with the people he considered to have written the best software at the time: the ALGOL compiler for the B220 computer (successor to the B205).
Knuth turned down a $100,000 contract to write compilers at Green Tree Corporation, deciding instead to optimize income and continue at Caltech and Burroughs. He received a National Science Foundation Fellowship and Woodrow Wilson Foundation Fellowship, but they had the condition that the recipient could not do anything else but study as a graduate student, so he would not be able to continue as a consultant to Burroughs. He chose to turn down the fellowships and continued with Burroughs. In summer 1962, he wrote a FORTRAN compiler for Univac, but considered that "I sold my soul to the devil" to write a FORTRAN compiler.
After graduating, Knuth returned to Burroughs in June 1961, but did not tell them he had graduated with a master's degree, rather than the expected bachelor's degree. Impressed by the ALGOL syntax chart, symbol table, recursive-descent approach, and the separation of the scanning, parsing, and emitting functions of the compiler, Knuth suggested an extension to the symbol table: that one symbol could stand for a string of symbols. This became the basis of the DEFINE in Burroughs ALGOL, which has since been adopted by other languages. However, some really disliked the idea and wanted DEFINE removed. The last person to think it was a terrible idea was Edsger Dijkstra on a visit to Burroughs.
Knuth worked on simulation languages at Burroughs, producing SOL 'Simulation Oriented Language', an improvement on the state-of-the-art, co-designed with J. McNeeley. He attended a conference in Norway in May 1967, organized by the people who invented the Simula language. Knuth influenced Burroughs to use Simula. Knuth had a long association with Burroughs as a consultant from 1960 to 1968 until his move into more academic work at Stanford in 1969.
In 1962, Knuth accepted a commission from Addison-Wesley to write a book on computer programming language compilers. While working on this project, he decided that he could not adequately treat the topic without first developing a fundamental theory of computer programming, which became The Art of Computer Programming. He originally planned to publish this as a single book, but as he developed his outline for the book, he concluded that he required six volumes, and then seven, to thoroughly cover the subject. He published the first volume in 1968.
Just before publishing the first volume of The Art of Computer Programming, Knuth left Caltech to accept employment with the Institute for Defense Analyses' Communications Research Division, then situated on the Princeton campus, which was performing mathematical research in cryptography to support the National Security Agency.
In 1967, Knuth attended a Society for Industrial and Applied Mathematics conference and someone asked what he did. At the time, computer science was partitioned into numerical analysis, artificial intelligence, and programming languages. Based on his study and The Art of Computer Programming book, Knuth decided the next time someone asked he would say, "Analysis of algorithms".
In 1969, Knuth left his position at Princeton to join the Stanford University faculty, where he became Fletcher Jones Professor of Computer Science in 1977. He became Professor of The Art of Computer Programming in 1990, and has been emeritus since 1993.