Lectures

The following schedule is tentative. Most likely some of the topic will change during the semester. As the course progresses hyperlinks will be provided to the lecture notes. The project assignments are provided early so that you know what to expect. Those handouts are likely to change by the time the project stage is assigned.

A A
Week Lec. Date Topic Reading Assigned Due (in lecture, unless specified below)
1 1 Jan. 19 Course overview and motivation (PDF)    
  Jan. 21 Guest Lecture:    
2 2 Jan. 26 A Simple Imperative Language. Operational Semantics (PDF) Homework 1  
3 Jan. 28 Finish previous set of slides. Proof Techniques for Operational Semantics. Mathematical Induction (PDF) Winskel, Ch.3.    
4 Feb. 2 Guest lecture: Sumit Gulwani, "Dimensions in Program Synthesis" HMW1
4 Feb. 4 Continue Proof Techniques. Structural Induction. (PDF) Homework 2
5 5 Feb. 9 Intro to Denotational Semantics and Domain Theory (PDF) Winskel Ch. 8 and Ch 3
6 Feb. 11 Intro to Denotational Semantics and Domain Theory (PDF) Winskel Ch. 8 and Ch 3 Homework 3 HMW2
6 7 Feb. 16 Axiomatic Semantics (PDF)
8 Feb. 18 Axiomatic semantics (same slides)   Homework 4 HMW3
7 9 Feb. 23 Axiomatic semantics - Weakest Preconditions Completeness proof    
10 Feb. 25 Axiomatic semantics - Verification Conditions   HMW4
8 11 Mar. 2 Abstract Interpretation (PDF) Homework 5
12 Mar. 4 Abstract Interpretation (same slides)
9 13 Mar. 9 Introduction to Lambda Calculus (PDF) HMW5
Mar. 11 Guest lecture: Arthur Whitney, "The K data parallel language"
10 14 Mar. 16 Simply Typed Lambda Calculus (PDF) Homework 6
15 Mar. 18 Simply Typed Lambda Calculus. Continued    
11   Mar. 23 No lecture. Spring break.      
  Mar. 25 No lecture. Spring break.      
12 16 Mar. 30 Exceptions (same slides as above)   HMW6
17 Apr. 1 Continuations (same slides as above)      
13 18 Apr. 6 Recursive Types and Subtyping (PDF)   Homework 7
19 Apr. 8 Finish subtyping. Polymorphism (PDF)      
14 20 Apr. 13 Finish polymorphism     HMW7
21 Apr. 15 Dependent Types (PDF)      
15 22 Apr. 20 Dependent-Types for Low-Level Languages (PDF)      
23 Apr. 22 A formalization of the Java Virtual Machine. (PDF) Efficient Bytecode Verification Final exam  
16 24 Apr. 27 Proof Practice.     Final exam
25 Apr. 29 Project Presentations