Lectures

Lectures come in units which may or may not begin or end on a class boundary. Many of the slides in the lecture notes are copyrighted material by Norman Ramsey. Other slides are copyrighted material by Allyn Dimock. Many of the slides on Hoare logic are copyrighted material by Michael J. C. Gordon. A few examples in the Logic Programming and Prolog units are taken from the text by Fernando Pereira & Stuart Shieber.

The following is a rather aggressive schedule. We may drop the unit on Module Systems, and reduce content of the units on Data Abstraction and Correctness Assertions if necessary.

Units

Unit Notes Reading On
Introduction .ps / .pdf Ramsey & Kamin Chapter 1. 27-Jan
Administration; calculation and meaning; concrete and abstract syntax; interpreters and evaluation semantics; environments.
Impcore .ps / .pdf Ramsey & Kamin Chapter 2. 27-Jan
A Core Imperative Language, environments, name-spaces, example interpreter and evaluation semantics; L-values vs. R-values; the Impcore interpreter; parameter passing mechanisms.
Scheme .ps / .pdf Ramsey & Kamin Chapter 3 3-Feb, 10-Feb
Scheme: recursive programming with lists; programs as data; first-class functions, (un)currying and composing; closures; folds (catamorphisms); environment vs. store; the uScheme interpreter; metacircular interpreters.
Coding in SML .ps / .pdf Ullman: Sections 2, 3.1-3.5, 4.1, 5.1-5.6, 6, 7.1. Ramsey & Kamin Chapter 5 (10 pages). 3-Feb, 10-Feb, 17-Feb
Same example functions, new format. Types; datatypes and pattern matching; exceptions, raise, and handle; the uScheme interpreter in SML.

Ramsey claims that writing an interpreter in Standard ML can result in code that is 1/5'th the length of writing the same interpreter in C. Chapter 5 proves the point by presenting the uScheme interpreter written in Standard ML. ps / pdf

Lambda Calculus ps / pdf Paulson: ps / pdf pp2-21 24-Feb, 3-Mar
A core functional language; substitution; renaming; b-reduction; booleans, pairs, sums, numbers coded as functions; reduction strategies: from substitution to call-by-value functions; Torben Mogensen's metacircular interpreter.
Type Systems .ps / .pdf Ramsey & Kamin Chapter 6. Cardelli. 3-Mar, 10-Mar
Types; type judgements; type checking; simply-typed lambda-calculus; typed Impcore; parametric polymorphism; kinds; system-F; typed uScheme.
Quiz? 24-Mar
Through Lambda Calculus. Example quiz .pdf
Type Inference .ps / .pdf Ramsey & Kamin Chapter 7 24-Mar, 31-Mar
The Hindley-Milner type system; type inference; unification; composing substitutions; from type checking rules to type inference rules; uML.
Denotational Semantics .ps / .pdf Pitts sections 1, 2, 5, and as much of 6 as makes sense 31-Mar, 7-Apr
Denotational semantics of addition, of regular expressions. Partial orders; concrete semantics; Denotational semantics of small imperative languages; statement continuations; expression continuations; continuation-passing style.
Logic Programming .ps / .pdf Ramsey & Kamin Section 10.7, lecture notes 14-Apr
Propositional calculus: syntax and denotational semantics; verifying identities from the semantics; satisfiability, validity; calculuation by exhaustion; Predicate calculus: syntax and denotational semantics; theories; calculation by proof; refutation; clausal form; conversion to clausal form; calculuation by resolution; efficiency issues: Horn clauses.
Prolog .ps / .pdf Pereira & Shieber .ps / .pdf Sections 2.1 - 2.5, 3.1 - 3.4.1, 3.5, 5.1.1 - 5.1.3, 6.1. Ramsey & Kamin Chapter 10 21-Apr
Syntax; clause ordering and literal selection; proof trees; database Prolog; from functions to relations; pure Prolog; example programs; logic variables; partial data structures; Byrd boxes; the uProlog interpreter; extralogical and metalogical features; metacircular interpreters.
Quiz 28-Apr
Through Logic Programming. Example quiz with some solutions from Spring 2004. Example quiz with no solutions from Fall 2004.
Data Abstraction .ps / .pdf Ramsey & Kamin Chapter 8 28-Apr
CLU; clusters; abstract data. Data correctness assertions: Homomorphisms and bisimulations. Existential and Nonce types.
Smalltalk, OO Programming, Subtype Polymorphism .ps / .pdf, subtype polymorphism (many typos) .ps / .pdf, Ramsey & Kamin Chapter 9 (concentrate on language, not implementation). 5-May
Correctness Assertions Gordon .ps.gz/.pdf Chapters 1, 2, Sections 7.2 and 7.3. 12-May (maybe) Not covered Spring '05
Program correctness assertions: Hoare Logic for a language of while loops with static scope and arrays. Proof vs. testing. Errors in writing specifications. Using assertions in code.
Module Systems Four Lectures on Standard ML (mostly ignoring chapter 3). Also relevant sections from Ullman. 12-May (maybe) Not covered Spring '05
Module systems, interfaces and implementations, concentrating on the SML module system.
Wrapup .ps / .pdf 12-May
How did this all relate to design of programming languages anyway? Where can I go from here?
Final Exam 19-May
Regular time but room OS405
A previous exam with no answers. Ignore problem 3. Look also at questions from the PhD language qualifying exams Find old qualifying exams here. You might want to look at the Fall '04 qualifier, numbers 1, 2, 4, 5, 6, 7, 8 (A lot of overlap with the posted final), Spring '04 1, 2, 4, 6, 7, 8, 10, Fall '03 2, 3, 5, 6, 7, 9, 10, 11, 12, Spring '03 3, 5, 6, 7, 8, 9, 10, 11, 12 Fall '02 6,7,8,9,11, 12, 13 Spring '02 4, 6, 7, 9, 10, 11, 12 This sounds like a lot of problems to review, but you will find a lot of overlap and a number of duplicates between the exams. I have picked out the problems relevant to 91.531 in the subjects that we covered. The qualifying exam also covers 91.301 so has more problems on Scheme programming and concepts. Note that the Qual problems do not include programming in the languages in Ramsey and Kamin's book. You should, however be prepared to program small problems in uSmalltalk, uScheme or Scheme, as well as Prolog and ML. Good luck. Please let others know if you are planning on holding open review sessions.