The preferred textbook for this course is Turbak, Gifford and Sheldon: Design Concepts in Programming Languages. If you don't want to buy it, you can download it as a pdf file from various sites on the internet.
The topics we will have covered fall within the first three parts of the textbook (Foundations, Dynamic Semantics and Static Semantics). These parts can then be divided into two main categories: core chapters and peripheral chapters. Core chapters are chapters that are fully covered by the course and you should read them very thoroughly. Peripheral chapters, on the other hand, are only partially covered by the course and you are expected to go through only those topics (and to the same depth) that we've actually talked about at the lectures.
When studying from the textbook, please consult its errata regularly.
The papers below can be used both as an alternative and as a supplement to the textbook. They can be roughly divided into two groups: theory and calculi. Theory papers address the fundamental issues in programming language theory, whereas calculi papers use the fundamental concepts to describe certain core languages.