Editor: Albert Y. C. Lai, trebla [at] vex [dot] net

You may send suggestions for more entries to the editor.

Jan L. A. van de Snepscheut.
*What Computing is All About*.
Text and Monographs in Computer Science.
Springer-Verlag, 1993.

Ronald L. Graham, Donald E. Knuth, and Oren Patashnik.
*Concrete Mathematics: A Foundation for Computer Science*, second edition.
Addison-Wesley, 1994.

David Gries and Fred B. Schneider.
*A Logical Approach to Discrete Math*.
Text and Monographs in Computer Science.
Springer-Verlag, 1993.

Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest.
*Introduction to Algorithms*.
The MIT Press, 1990 (first edition), 2001 (second
edition).

*Dictionary of Algorithms and Data Structures.*
National Institute of Standards and Technology.

(Some of the entries below seem to refer to particular languages. That is a coincidence. They are listed for their scientific content, not for their choices of languages as vehicles.)

György E. Révész.
*Lambda-Calculus, Combinators, and Functional Programming*.
Cambridge Tracts in Theoretical Computer Science, number 4.
Cambridge University Press, 1988.

Also a Google search for “lambda calculus tutorial” turns up many nice tutorials and motivations.

Harold Abelson and Gerald Jay Sussman with Julie Sussman.
*Structure and Interpretation of Computer Programs*, second edition.
The MIT Press, 1996.

Krysia Broda, Susan Eisenbach, Hessam Khoshnevisan, and Steven Vickers.
*Reasoned Programming*.
International Series in Computer Science.
Prentice Hall, 1994.

Paul Hudak.
*The Haskell School of Expression: Learning Functional Programming
through Multimedia*.
Cambridge University Press, 2000.

Simon Thompson.
*Haskell: The Craft of Functional Programming*, second Edition.
Addison-Wesley, 1999.

Richard Bird.
*Introduction to Functional Programming using Haskell*, second edition.
Prentice Hall, 1988.

*An Erlang Course.*
Ericsson Utvecklings AB.

O.-J. Dahl, E. W. Dijkstra, and C. A. R. Hoare.
*Structured Programming*.
Academic Press, 1972.

David Gries.
*The Science of Programming*.
Text and Monographs in Computer Science.
Springer-Verlag, 1981.

Krysia Broda, Susan Eisenbach, Hessam Khoshnevisan, and Steven Vickers.
*Reasoned Programming*.
International Series in Computer Science.
Prentice Hall, 1994.

Eric C. R. Hehner.
*A Practical Theory of Programming*. Updated several times a year.

Peter Coad and Jill Nicola.
*Object-Oriented Programming*.
Prentice Hall, 1993.

Donald Erwin Knuth.
*Literate Programming*.
CSLI Lecture Notes, number 27.
Center for the Study of Language and Information, 1992.

Hans van Vliet.
*Software Engineering: Principles and Practice*, second edition.
John Wiley & Sons, 2000.

Donald E. Knuth.
*The Art of Computer Programming*, three volumes.
Addison-Wesley, 1997 (volume 1, third edition), 1997 (volume 2, third edition), 1998 (volume 3, second edition).

Alan Gibbons.
*Algorithmic Graph Theory*.
Cambridge University Press, 1985.

See also programming language theory texts online.

Henk Barendregt and Erik Barendsen.
*Introduction to Lambda Calculus*.
1994.

Gérard Huet.
*Constructive Computation Theory*.
2002.
Also tarball of both this article and program code.

Morten Heine B. Sørensen and Pawel Urzyczyn.
*Lectures on the Curry-Howard Isomorphism*.
1998.

Richard Bird and Oege de Moor.
*Algebra of Programming*.
International Series in Computer Science.
Prentice Hall, 1997.

Chris Okasaki.
*Purely Functional Data Structures*.
Cambridge University Press, 1999.

Simon Thompson.
*Type Theory and Functional Programming*.
Addison-Wesley, 1991.

Ralph-Johan Back and Joakim von Wright.
*Refinement Calculus: A Systematic Introduction*.
Graduate Texts in Computer Science.
Springer-Verlag, 1998.

Edsger W. Dijkstra and Carel S. Scholten.
*Predicate Calculus and Program Semantics*.
Texts and Monographs in Computer Science.
Springer-Verlag, 1990.

Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides.
*Design Patterns: Elements of Reusable Object-Oriented Software*.
Addison-Wesley, 1995.

Mary Shaw and David Garlan. Software Architectures: Perspectives on an Emerging Discipline. Prentice Hall, 1996.

Michael Jackson.
*Problem Frames: Analyzing and Structuring Software Development
Problems*.
Addison-Wesley, 2000.

Eric Evans.
*Domain-Driven Design: Tackling Complexity in the Heart of Software*.
Addison-Wesley, 2003.

Stuart J. Russell and Peter Norvig.
*Artificial Intelligence: A Modern Approach*.
Prentice Hall, 1995.

Paul Taylor.
*Practical Foundations of Mathematics*.
Cambridge Studies in Advanced Mathematics, number 59.
Cambridge University Press, 1999.

Jean Gallier.
*Logic for Computer Science: Foundations of Automatic Theorem Proving*.
Wiley, 1986.

Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman.
*Compilers: Principles, Techniques, and Tools*.
Addison-Wesley, 1985.

Andrew W. Appel.
*Modern Compiler Implementation in Java*.
Cambridge University Press, 1998.

Andrew W. Appel.
*Modern Compiler Implementation in ML*.
Cambridge University Press, 1998.

Andrew W. Appel, with Maia Ginsburg.
*Modern Compiler Implementation in C*.
Cambridge University Press, 1998.

Simon Peyton Jones and David Lester.
*Implementing Functional Languages*.
Prentice Hall, 1992.

John L. Hennessy and David A. Patterson.
*Computer Architecture: A Quantitative Approach*, second edition.
Morgan Kaufmann, 1996.