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
|
|
| |
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: