Textbook and Readings

Required Textbooks:

1.
Brian W. Kernighan and Dennis M. Ritchie. The C Programming Language. Prentice Hall, second edition, March 1988.
2.
Brian W. Kernighan and Rob Pike. The Unix Programming Environment. Prentice Hall, March 1984.

Other Readings: This list will be expanded as the course progresses.

1.
Jon Bentley and Don Knuth. Programming pearls: Literate programming. Communications of the ACM, 29(5):364–369, May 1986.
2.
Jon Bentley, Don Knuth, and Doug McIlroy. A literate program. Communications of the ACM, 29(6):471–483, June 1986.
3.
Derrick Coetzee. An efficient implementation of Blum, Floyd, Pratt, Rivest, and Tarjan’s worst-case linear selection algorithm. http://moonflare.com/, January 2004.
4.
Donald E. Knuth. Mini-indexes for literate programs. Software—Concepts and Tools, 15:2–11, 1994.
5.
Jon Bentley. Litle languages. Communications of the ACM, 29(8):711–721, August 1986.
6.
Donald E. Knuth and Silvio Levy. The CWEB system of structured documentation. User manual. http://www-cs-faculty.stanford.edu/~knuth/cweb.html, February 2002. Version 3.64.
7.
Silvio Levy and Donald E. Knuth. Counting words. Sample program in the CWEB distribution. http://www-cs-faculty.stanford.edu/~knuth/cweb.html, August 1995.
8.
Donald E. Knuth, Tracy Larrabee, and Paul M. Roberts. Mathematical Writing. Mathematical Association of America, Washington, D.C., 1989.
9.
Donald E. Knuth and Silvio Levy. The CWEB System of Structured Documentation. Addison-Wesley, 1993.