CS411 Bibliography
Principal References:
Demers et al. Lecture Notes.
Winskel, Glynn, The Formal Semantics of Programming Languages: An Introduction. MIT Press, 1993.
The "official" text of the course; much (but not all) of the theoretical material will come from this book.
Harper, Robert. Programming in Standard ML.
Everything you need to know about SML.
Pucella, Riccardo. Notes on Programming Standard ML of New Jersey.
Everything else you need to know about SML of NJ. Magnum Opus of our T.A.
Milner, Robin, Mads Tofte, Robert Harper and David MacQueen. The Definition of Standard ML (Revised). MIT Press, 1997.
In addition to being a precise definition of SML, this book is a magnificent example of serious application of many techniques discussed in this course.
Abadi, Martin and Luca Cardelli. A Theory of Objects. Springer-Verlag, 1996.
The first 5 chapters are an accessible semi-formal treatment of many important and subtle issues in OO programming languages.
Further Reading:
Gunter, Carl. Semantics of Programming Languages: Structures and Techniques. MIT Press, 1992.
I considered this as a possible alternative to Winskel; it covers similar material.
Mitchell, John. Foundations for Programming Languages. MIT Press, 1996.
Nearly 1000 pages of heavy theory by a heavyweight in the field ... I won't refer to this much; but it has a denotational semantics for while-programs with a discussion of abstraction issues.
Reynolds, John. Theories of Programming Languages. Cambridge University Press, 1998.
A recent text by another heavyweight in the field. This includes a somewhat more thorough treatment of shared-variable concurrency with full abstraction.
Schmidt, David. The Structure of Typed Programming Languages. MIT Press, 1994.
Similar in some ways to Winskel, but more emphasis on typing rules and operational semantics, essentially no domain theory. Discussion of language "principles" -- abstraction, parameterization, correspondence, qualification, ... actually quite a nice text in many ways.
Milner, Robin, Mads Tofte, Robert Harper and David MacQueen. The Definition of Standard ML (Revised). MIT Press, 1997.
In addition to being a precise definition of SML, this book is a magnificent example of serious application of many techniques discussed in this course.
Friedman, Daniel, Mitchell Wand and Christopher Haynes. Essentials of Programming Languages. McGraw-Hill,1992.
One could do a reasonable Scheme-based version of this course from this book and Abelson & Sussman, below, based on operational rather than denotational semantics. But we're not doing that.
Abelson, H., G. Sussman and J. Sussman. Structure and Interpretation of Computer Programs, second edition. McGraw-Hill, 1996.
Scott, Michael. Programming Language Pragmatics. Academic Press, 2000.
A reasonable PL textbook of the old "Survey of Programming Languages" style, with a decent exposition of principles, but very little theory. Just in case you're interested.