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 2013.
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 linux.cs.tufts.edu:/comp/105/book-code.

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.

David Schmidt, Denotational Semantics: A Methodology for Language Development, Allyn and Bacon, 1986.

It's hard to find good books on denotational semantics. The advantage of this book is that a free PDF is available on Creative Commons license. I haven't used it before, but I hope it will prove useful.

Supplemental Readings

Particular Languages

C

ML

Scheme

Prolog

CLU

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

Writing

Miscellaneous Techniques, etc

Literate Programming

General Algorithms

UNIX

Programming Style

Immutable Strings

Floating-Point Arithmetic

Multiple-precision Arithmetic

Game-playing programs

Embedded languages

Continuation-passing style