## CS 655 - Lectures

### 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
30