As a general remark about the subject matter of this class, we need to talk about programming languages in general, rather than just one particular language. Therefore we will need to develop some rather sophisticated notation that can describe the syntax and the semantics of programming (and other) languages.
These notes are intended to supplement or correct material in the text. They assume familiarity with the readings and are intentionally brief. Sethi takes a broad view of the role of programming languages and their study, focusing on principles behind design, and including historical and cultural information, as well as some underlying mathematics, all of which every well educated computer scientist should know. The chapter numbers in parentheses below refer to chapters in Sethi.