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.