CSE 230
Principles of Programming Languages
Notes on Readings

These notes are intended to supplement or correct material in the texts. They assume familiarity with the readings and are intentionally brief. Stansifer was published in 1995, so presumably written in 1994, and hence is a bit out of date. However, it 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. Its expositions are generally very concise, which can be both an advantage and a disadvantage.

First, a general remark about the subject matter of this class: because we need to talk about programming languages in general, rather than just one particular language, we will need to develop some rather sophisticated notation that can describe the syntax and the semantics of programming (and other) languages.


Notes on Stansifer
  1. Overview; introduction, history (Chapter 1).
  2. Syntax and grammar; Post systems (Chapter 2).
  3. Assignment, control, binding, pointers, expressions (Chapter 3).
  4. Data Types (Chapter 4).
  5. Hoare Semantics (Chapter 9).
  6. Blocks, Procedures and Modules (Chapter 5).
  7. Logic Programming (Chapter 6).
  8. Lambda Calculus (Chapter 7).
  9. Denotational Semantics (Chapter 8).

Notes on Algebraic Semantics
  1. Introduction (Chapter 0).
  2. Algebraic Background (Chapter 1).
  3. Stores, Variables, Values, Assignment (Chapter 2).
  4. Composition and Conditionals (Chapter 3).
  5. Proving Program Correctness (Chapter 4).
  6. Iteration (Chapter 5).
  7. First Order Logic (Appendix B).

Other Notes
To CSE 230 homepage
Maintained by Joseph Goguen
© 2000, 2001, 2002 Joseph Goguen
Last modified: Mon Mar 11 10:26:11 PST 2002