For papers not on this list, it may be worth searching the Collection of Computer-Science Bibliographies.

Required texts

Norman Ramsey, Programming Languages: Build, Prove, and Compare, Draft manuscript, January 2015.
This is the main text for the course. It is a work in progress. Source code and examples from the book are available in a git repository at

Because the book is a work in progress, it is not available at the bookstore. Instead, you will need to buy a copy from Donna Cirelli in the Computer Science office. The cost, which covers only the cost of reproduction, should be about $35.

Jeffrey D. Ullman, Elements of ML Programming (ML97 edition) , Prentice Hall, Englewood Cliffs/NJ, 1998.

The best introduction to Standard ML for C programmers. You can complete 105 without owning this book—there are plenty of ML tutorials on the web—so whether you buy it depends on whether you prefer to save money or to save time.

Supplemental Readings

Particular Languages






The main source for CLU is the book: Barbara Liskov and John Guttag, Abstraction and Specification in Program Development , MIT-Press / McGraw-Hill, 1986. There is a portable implementation of CLU.

Formal methods for Program Correctness

Memory Management

Theory and Formal Methods

Programming-Language Design


Miscellaneous Techniques, etc

Literate Programming

General Algorithms


Programming Style

Immutable Strings

Floating-Point Arithmetic

Multiple-precision Arithmetic

Game-playing programs

Embedded languages

Continuation-passing style