The course will rely on a set of course notes and one text book, but PhD students should learn to read texts on their own in case they must work on something not quite familiar but in their area—that’s the essence of a PhD program. Hence the list includes two recommended, introductory text books.
Program Analysis and Understanding (Frequently updated, this points to most recent version.)
Felleisen, Findler, Flatt. Semantics Engineering with PLT Redex. MIT Press 2009.
Krishnamurthi. Programming Languages: Applications and Interpretation.
Friedman, Wand. Essentials of Programming Languages (Third edition). MIT Press 2008.
These two undergraduate texts present the same topics from a hands-on perspective. They teach you how to construct interpreters, essential interpretation techniques, and a few applications of these techniques to domains other than programming languages. Many of you have covered this material in undergraduate courses. This course takes a look at this material from a research-oriented perspective.
Pierce. Types and Programming Languages. MIT Press 2002.
This graduate text covers type systems, only one of many topics covered in this class, in much greater detail than time allows us.
Nielson, Nielson, Hankin. Principles of Program Analysis. Springer 2004.
This graduate text covers many of the same topics as this class although with less of an emphasis on the interaction between semantics and analysis. It may prove to be a valuable reference after completing this course.