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. 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.

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.

Notes on Sethi
  1. Overview, introduction, history (Chapter 1).
  2. Syntax, grammar, expressions (Chapter 2).
  3. Assignment, control, invariants (Chapter 3).
  4. Data types (Chapter 4).
  5. Procedures and blocks (Chapter 5).
  6. Modules and classes (Chapter 6).
  7. Logic programming and Prolog (Chapter 11).
  8. Lambda Calculus (Chapter 14).

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, 2003 Joseph Goguen
Last modified: Thu Mar 6 11:14:35 PST 2003