Date  Topic (and notes, when available)  Homework  Reading For The Next Class 
Tue Aug 28  Welcome To Wonderland 
Thomas Ball and Sriram Rajamani's The SLAM Project: Debugging System Software via Static Analysis
Thomas Ball and Sriram Rajamani's Automatically Validating Temporal Safety Properties of Interfaces  
Thu Aug 30 
Model Checking
SLAM Introduction 
Henzinger et al.'s Lazy Abstraction
Henzinger et al.'s Threadmodular Abstraction Refinement (optional)  
Tue Sep 04  Program Verification Using Counterexampleguided Abstraction Refinement 
Winskel Chapter Two: Introduction to operational semantics
Hoare's Hints On Programming Language Design (shorter than it looks) Weimer's Midterm Pi (optional, but if you replace "Cool" with "Your Favorite Language" you should be able to answer most of the questions in it) Spolsky's The Perils of JavaSchools (optional, short, controversial, relevant)  
Thu Sep 06 
A Simple Imperative Language Operational Semantics  HW 1 Out 
Choose at least one of these three:
1. Wegner's Programming Languages  The First 25 years 2. Wirth's On the Design of Programming Languages (bonus points if you mistakenly choose this one just because it has the lowest page count) 3. Nauer's Report on the algorithmic language ALGOL 60 (the language that Hoare said was an improvement not only on its predecessors but also on nearly all of its successors) Cobbe and Felleisen's Environmental acquisition revisited (optional, recent paper  POPL 2005, uses operational semantics on page 7, figure 11, just skim to that figure and see if you recognize it) Chen and Tarditi's A simple typed intermediate language for objectoriented languages (optional, recent paper  POPL 2005, uses operational semantics on page 9, figure 14, just skim to that and note the nonstandard syntax  but you should be able to interpret the (H; V ; x : t = v in e) rule, for example) Plotkin's A Structural Approach To Operational Semantics (optional, basically a textbook, see chapter 2 for another take on what we're covering in class) 
Tue Sep 11  Contextual Operational Semantics  HW 2 Out  Chaptire Trois De Winskel: Some principles of induction
Wikipedia's Natural deduction (optional, sections 13 show judgments and rules of inference for a simpler system  propositional logic, read this if you want another take on derivations) Phillip's Degrees of Interpretation (optional, Philosophy of Science; if you like math or theory this is worth it) 
Thu Sep 13 
Proof Techniques For Operational Semantics Structural Induction  HW 1 Due 
Capítulo Cinco De Winskel: The denotational semantics of IMP
Capítulo Ocho De Winskel: Introduction to domain theory (read for general concepts, not details) 
Tue Sep 18  Whirlwind Denotation Semantics (1/2) 
Capítulo Cinco De Winskel: The denotational semantics of IMP
(really this time!)
Capítulo Ocho De Winskel: Introduction to domain theory (read for general concepts, not details)  
Thu Sep 20  Whirlwind Denotational Semantics (2/2)  HW 2 Due HW 3 Out  Winskel Kapitel SechsEins Bis SechsVier: The axiomatic semantics
of IMP
Hoare's An Axiomatic Basis for Computer Programming Floyd's Assigning Meaning to Programs Lee's A Denotational Semantics for Dataflow with Firing (skim up to and including section 2.4 for an alternative presentation of partial orders, least upper bounds, monotonic and continuous functions, and least fixed points) 
Tue Sep 25  Intro To Axiomatic Semantics  Winskel Capitolele sasecinci pana la sasesapte (6.56.7) si
sapteunu pana la saptetrei (7.17.3):
Completeness of the Hoare rules
Hoare's Proof of a program: FIND Necula's Completeness of Axiomatic Semantics (using operational semantics)  
Thu Sep 27 
Axiomatic Semantics 2: With A Vengeance  HW 3 Due HW 4 Out Project Proposal Due  Winskel Chapters 7.47.6: Completeness of the Hoare Rules
Dijkstra's Guarded Commands, Nondeterminancy and Formal Derivation of Programs 
Tue Oct 02  Verification Conditions 
Cousot and Cousot's Abstract
Interpretation
Abramski's An introduction to abstract interpretation  
Thu Oct 04  Abstract Interpretation  HW 4 Due HW 5 Out  Thompson's
Reflections on Trusting Trust
Wikipedia's Abstract Interpretation (optional) 
Tue Oct 09  No Lecture  Reading Day  
Thu Oct 11 
Abstract Interpretation 2: The Wrath of Cousot  Benjamin Pierce's Foundational Calculi for Programming Languages (pages 110)  
Thu Oct 16  Lambda Calculus And Functional Programming 
Xavier Leroy's Formal Certification
of a Compiler Backend or: Programming a Compiler with a Proof Assistant
Li & Zdancewic's Downgrading Policies and Relaxed Noninterference (optional, describes secure information flow and noninterference using the lambda calculus, check out section 4)  
Tue Oct 18  Lambda Two: Electric Boogaloo  HW 5 Due  Luca Cardelli's Type Systems 
Tue Oct 23  SimplyTyped Lambda Calculus  Project Status Update Due  Andrew Wright and Matthias Felleisen's A syntactic approach to type soundness 
Thu Oct 25  Monomorphic Type Systems  John Goodenough's Exception Handling: Issues and a Proposed Notation (optional, 1975, this is the canonical paper on exception handling)  
Tue Oct 30  Exceptions and Continuations  
Thu Nov 01 
Recursive Types and Subtyping
 
Tue Nov 06  SecondOrder Types (Polymorphism)  
Thu Nov 08  Dependant Types and Data Abstraction  Nelson and Oppen's Fast Decision Procedures Based On Congruence Closure  
Tue Nov 13  Automated Theorem Proving and Proof Checking  Benjamin Pierce's Foundational Calculi for Programming Languages (pages 10end)
Dawson Engler et al.'s Automatically Generating Malicious Disks Using Symbolic Execution (optional, uses symex and theorem proving)  
Thu Nov 15  Communication and Concurrency 
Robert DeLine and Manuel Fahndrich's Enforcing highlevel protocols in lowlevel software
Weimer and Necula's Finding And Preventing RunTime Error Handling Mistakes  
Tue Nov 20  No Lecture  Thanksgiving Recess 
Austen's
Pride and Prejudice (optional)
Barzun's From Dawn To Decadence (optional)  
Thu Nov 22  No Lecture  Thanksgiving Recess 
Diamond's
Guns, Germs, and Steel (optional)
Goldman's The Princess Bride (optional)  
Tue Nov 27  Cooperative Bug Isolation  Projects Due 
Speech Evaluation Form
ObjectOriented Programming Slides (optional) 
Thu Nov 29 
 Presentation Signup Reminder & Hints 

Tue Dec 04 
(show up on time) (class goes until 3:25) 
 
Thu Dec 06 


July August September Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 1 2 3 4 1 8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8 15 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15 22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22 29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29 30 October November December Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 1 2 3 1 7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8 14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15 21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22 28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29 30 31