CS 655 - Lectures


The class meets Tuesday and Thursdays from 5:00pm to 6:15pm in OLS 005.

Date # Topic (and notes, when available) Homework Reading For The Next Class
Thu Jan 19 1 Welcome To Wonderland
(1.2 MB PDF slides)
anonymous survey results 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)
Tue Jan 24 2 A Simple Imperative Language
Operational Semantics
(Joseph Carnahan)

(256k PDF slides)
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
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 object-oriented languages (optional, recent paper -- POPL 2005, uses operational semantics on page 9, figure 14, just skim to that and note the non-standard 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)
Thu Jan 26 3 Contextual Operational Semantics
(Duane Merrill)

(250k PDF slides)
HW 2 Out Chaptire Trois De Winskel: Some principles of induction
Wikipedia's Natural deduction (optional, sections 1-3 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)
Tue Jan 31 4 Proof Techniques For Operational Semantics
Structural Induction
(Jinlin Yang)

(500k PDF slides)
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)
Thu Feb 02 5 Whirlwind Denotational Semantics
(Wei Hu)

(334k PDF slides)
HW 2 Due
HW 3 Out
Winskel Kapitel Sechs-Eins Bis Sechs-Vier: 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 Feb 07 6 Intro To Axiomatic Semantics
(Daniel Dunbar)

(200k PDF slides)
Winskel Capitolele sase-cinci pana la sase-sapte (6.5-6.7) si sapte-unu pana la sapte-trei (7.1-7.3): Completeness of the Hoare rules
Hoare's Proof of a program FIND
Necula's Completeness of Axiomatic Semantics (using operational semantics)
Thu Feb 09 7 Axiomatic Semantics 2:
With A Vengeance
(Daniel Dunbar)

(180k PDF slides)
HW 3 Due
HW 4 Out
Winskel Chapters 7.4-7.6: Completeness of the Hoare Rules
Dijkstra's Guarded Commands, Nondeterminancy and Formal Derivation of Programs
Tue Feb 14 8 Verification Conditions (370k PDF slides) Cousot and Cousot's Abstract Interpretation
Abramski's An introduction to abstract interpretation
Thu Feb 16 9 Abstract Interpretation (400k PDF slides) HW 4 Due
HW 5 Out
Thompson's Reflections on Trusting Trust
Wikipedia's Abstract Interpretation (optional)
Tue Feb 21 10 Abstract Interpretation 2:
The Wrath of Cousot (470k PDF slides)
Project Proposal Due Benjamin Pierce's Foundational Calculi for Programming Languages (pages 1-10)
Thu Feb 23 11 Lambda Calculus And Functional Programming (630k PDF slides) Xavier Leroy's Formal Certification of a Compiler Back-end or: Programming a Compiler with a Proof Assistant
Li & Zdancewic's Downgrading Policies and Relaxed Noninterference (optional, describes secure information flow and non-interference using the lambda calculus, check out section 4)
Tue Feb 28 No Lecture
(Weimer @ CRA Workshop)
Thu Mar 02 12 Lambda Two: Electric Boogaloo
(Joseph Carnahan)

(580k PDF slides)
HW 5 Due Luca Cardelli's Type Systems
Sat Mar 04 Spring Recess Begins Austen's Pride and Prejudice (optional)
Tue Mar 07 No Lecture Barzun's From Dawn To Decadence (optional)
Thu Mar 09 No Lecture Diamond's Guns, Germs, and Steel (optional)
Sun Mar 12 Spring Recess Ends Goldman's The Princess Bride (optional)
Tue Mar 14 13 Simply-Typed Lambda Calculus (400k PDF slides)
(Matt Spear)
Andrew Wright and Matthias Felleisen's A syntactic approach to type soundness
Thu Mar 16 14 Monomorphic Type Systems (400k PDF slides)
Tue Mar 21 15 Exceptions, Contiuations & Recursive Types (200k PDF slides) John Goodenough's Exception Handling: Issues and a Proposed Notation (optional, 1975, this is the canonical paper on exception handling)
Thu Mar 23 16 Subtyping (530k PDF slides)
Project Status Update Due
Class Survey #2 (Due Tue)
Tue Mar 28 17 Second-Order Types (Nora Sovarel)
(130k PDF slides)
(Bonus Lecture #2 @ 6:15, bring cash for pizza)
Class Survey #2 Due
Thu Mar 30 18 Dependant Types and Data Abstraction (236k PDF slides) Nelson and Oppen's Fast Decision Procedures Based On Congruence Closure
Tue Apr 04 19 Automated Theorem Proving and Proof Checking (Nora Sovarel)
(276k PDF slides)
Benjamin Pierce's Foundational Calculi for Programming Languages (pages 10-end)
Dawson Engler et al.'s Automatically Generating Malicious Disks Using Symbolic Execution (optional, uses symex and theorem proving)
Thu Apr 06 20 Communication and Concurrency (600k PDF slides) 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
Tue Apr 11 21 Model Checking
SLAM Introduction (300 KB PDF slides)
Henzinger et al.'s Lazy Abstraction (optional)
Henzinger et al.'s Thread-modular Abstraction Refinement (optional)
Thu Apr 13 22 Program Verification Using Counterexample-guided Abstraction Refinement (1.2 MB PDF slides) Robert DeLine and Manuel Fahndrich's Enforcing high-level protocols in low-level software
Weimer and Necula's Finding And Preventing Run-Time Error Handling Mistakes
Tue Apr 18 23 Type Systems For Resource Management (340k PDF slides)
Thu Apr 20 24 Region-Based Memory Management (220k PDF slides)
Tue Apr 25 Object-Oriented Programming
(360k PDF slides)
Projects Due Speech Evaluation Form
Thu Apr 27
Wei Hu
Nora Sovarel
Joe Carnahan
Tue May 02
Duane Merrill
Tao Hong
Daniel Dunbar

Scribe Notes

The scribe notes practice involves you taking very careful notes for a lecture, writing them up formally, and then making them available to the class. This process provides a formal set of course notes for you and your colleagues as well as giving you additional practice with PL typesetting and forcing you to study and distill the material (especially when you are the scribe).

Use these LaTeX templates for typesetting scribe notes. This package was artfully stolen from Andrew Myers at Cornell.

You can see the LaTeX for the previous scribe notes and use that as a guide if you like.

I encourage you to make use of the macros provided. Don't waste time jousting with LaTeX (unless you like that sort of thing). For example, this code suffices to render the expanded version of our operational semantics while inference rule:

\infer{ <"while~" b "~do~" c, \sigma> \Downarrow \sigma'' }
      { <b, \sigma> \Downarrow "true"     &
        <c, \sigma> \Downarrow \sigma'    &
        <"while~" b "~do~" c, \sigma'> \Downarrow \sigma'' } 

Scribe notes for a lecture on Day x are due on Day x+3. So if you're scribing Tuesday's lecture, the scribe notes are due just before that Saturday. Email me your tex file and the generated PDF or PS file.

Useful Tutorials:

Example scribe notes from other classes:

Generic Spring 2006 Calendar

       January               February                 March        
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  2  3  4
 8  9 10 11 12 13 14    5  6  7  8  9 10 11    5  6  7  8  9 10 11
15 16 17 18 19 20 21   12 13 14 15 16 17 18   12 13 14 15 16 17 18
22 23 24 25 26 27 28   19 20 21 22 23 24 25   19 20 21 22 23 24 25
29 30 31               26 27 28               26 27 28 29 30 31

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