Main | Lectures | Homework | Projects | Piazza Forum

CS 6610 - Lectures


Optional lecture recordings are available at the 15F CS 6610-001 (ENGR) Collab site under the "Resources" tab.

Date Topic (and notes, when available) Homework Reading For This Class
Wed Aug 26 Welcome To Wonderland Most homeworks are posted.
Start early!
None! (First class.)
Mon Aug 31 Model Checking
SLAM Introduction
  1. Thomas Ball and Sriram Rajamani's The SLAM Project: Debugging System Software via Static Analysis
  2. Thomas Ball and Sriram Rajamani's Automatically Validating Temporal Safety Properties of Interfaces
  1. Ball et al.'s Automatic Predicate Abstraction of C Programs (most influential PLDI paper award)
Wed Sep 03 Program Verification Using Counterexample-Guided Abstraction Refinement Required:
  1. Henzinger et al.'s Lazy Abstraction
  1. Henzinger et al.'s Thread-modular Abstraction Refinement
Mon Sep 07 A Simple Imperative Language
Operational Semantics
HW 0 Due
  1. Winskel Chapter Two: Introduction to operational semantics
  2. Hoare's Hints On Programming Language Design (shorter than it looks)
  3. Spolsky's The Perils of JavaSchools
Wed Sep 09 Contextual Operational Semantics Required:
  1. Wegner's Programming Languages - The First 25 years
  1. Wirth's On the Design of Programming Languages (bonus points if you mistakenly choose this one just because it has the lowest page count)
  2. 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)
  3. Cobbe and Felleisen's Environmental acquisition revisited (recent paper -- POPL 2005, uses operational semantics on page 7, figure 11, just skim to that figure and see if you recognize it)
  4. Chen and Tarditi's A simple typed intermediate language for object-oriented languages (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)
  5. Plotkin's A Structural Approach To Operational Semantics (basically a textbook, see chapter 2 for another take on what we're covering in class)
Mon Sep 14 Proof Techniques For Operational Semantics: Structural Induction HW 1 Due Required:
  1. Chapitre Trois De Winskel: Some principles of induction
  2. Wikipedia's Natural deduction, sections 1–5 and 8 (shows judgments and rules of inference for propositional logic; this provides another take on derivations)
  1. Phillip's Degrees of Interpretation (Philosophy of Science; relevant if you're interested in the basis of math or theory)
Wed Sep 16 Automated Theorem Proving, DPLL and Simplex Required:
  1. Ganziner et al.'s DPLL(T): Fast Decision Procedures
  2. Wikipedia's Simplex Algorithm
Mon Sep 21 Automated Theorem Proving, SMT, DPLL(T) and Proof Checking HW 2 Due Required:
  1. The Coq Proof Assistant Tutorial, up to and including Section 1.3.4
  1. Dawson Engler et al.'s Automatically Generating Malicious Disks Using Symbolic Execution (uses symex and theorem proving)
Wed Sep 23 Intro To Axiomatic Semantics Required:
  1. 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
  2. Hoare's Proof of a program: FIND
Mon Sep 28 Axiomatic Semantics 2:
With A Vengeance
Project Proposal Due
HW 3 Due (not accepted late)
  1. Winskel Chapters 7.4-7.6: Completeness of the Hoare Rules
  2. Dijkstra's Guarded Commands, Nondeterminancy and Formal Derivation of Programs
  1. Necula's Completeness of Axiomatic Semantics (using operational semantics)
Wed Sep 30 Symbolic Execution
  1. Manuvir Das et al.'s ESP: path-sensitive program verification in polynomial time
  2. Buse and Weimer's Automatically Documenting Program Changes
Mon Oct 05
Reading Day
No Lecture — Reading Day (Oct 05)
Wed Oct 07 Invariant Detection HW 4 Due
  1. Ernst et al.'s Dynamically Discovering Likely Program Invariants To Support Program Evolution
  2. Nguyen et al.'s Using Dynamic Analysis to Discover Polynomial and Array Invariants
Mon Oct 12 Abstract Interpretation Required:
  1. Abramski's An introduction to abstract interpretation
  2. Thompson's Reflections on Trusting Trust
  1. Wikipedia's Abstract Interpretation
Wed Oct 14 Abstract Interpretation 2:
The Wrath of Cousot
  1. Cousot and Cousot's Abstract Interpretation
Mon Oct 19 Lambda Calculus And Functional Programming
  1. Benjamin Pierce's Foundational Calculi for Programming Languages (pages 1-10)
Wed Oct 21 Lambda Two: Electric Boogaloo
  1. Li & Zdancewic's Downgrading Policies and Relaxed Noninterference (only Section 4 is required; the paper describes secure information flow and non-interference using the lambda calculus)
Mon Oct 26 Simply-Typed Lambda Calculus
  1. Luca Cardelli's Type Systems
  2. Andrew Wright and Matthias Felleisen's A syntactic approach to type soundness (it's not as long as it looks)
Wed Oct 28 Monomorphic Type Systems HW 5 Due
Project Status Update Due
  1. Xavier Leroy's Formal Certification of a Compiler Back-end or: Programming a Compiler with a Proof Assistant
Mon Nov 02 Second-Order Types (Polymorphism)
  1. Wikipedia's Subtype polymorphism
  2. Wikipedia's Liskov substitution principle
Wed Nov 04 Recursive Types and Subtyping
  1. Wadler's Theorems for free!
Mon Nov 09 Dependant Types and Data Abstraction
  1. Microsoft's Source Annotation Language (pay special attention to annotations describing field or structure sizes)
Wed Nov 11 Communication and Concurrency Required:
  1. Benjamin Pierce's Foundational Calculi for Programming Languages (this time, pages 10–end)
  1. Attend the Fireside Chat with Jason and abhi after class in Thornton D 221
Mon Nov 16 Machine Learning and Programming Languages
  1. Hooimeijer and Weimer's Modeling Bug Report Quality
Wed Nov 18 Fault Localization and Cooperative Bug Isolation
  1. Liblit et al.'s Bug Isolation via Remote Program Sampling
  2. Jones and Harrold's Empirical evaluation of the Tarantula automatic fault-localization technique
Mon Nov 23 Guest Lecture: The RAPID Programming Language (Kevin Angstadt)
  1. Reading Guide For Lecture
  2. Angstadt et al.'s RAPID Programming of Pattern-Recognition Processors
  3. Frigo et al.'s The Implementation of the Cilk-5 Multithreaded Language
  4. Hnat et al.'s A Vector-Based Macroprogramming Framework for Cyber-Physical Systems
Wed Nov 25
Thanksgiving Break
No Lecture — Thanksgiving Recess Optional:
  1. Austen's Pride and Prejudice
  2. Barzun's From Dawn To Decadence
  3. Diamond's Guns, Germs, and Steel
  4. Goldman's The Princess Bride
Mon Nov 30 Automated Program Repair
  1. Weimer et al.'s Automatically Finding Patches Using Genetic Programming
Wed Dec 02 Program Repair "is" Program Reachability
Mon Dec 07 Grad PL vs. the World Projects Due
Mon Dec 07 5pm
Room 340
10-Minute Student Presentations
3-Minute Questions
2-Minute Setup and Forms
(show up on time)
(special meeting time)
Speech Evaluation Form
  • 5:15 - 5:30 Alex Thomas (joint)
  • 5:30 - 5:50 Ben Lowman (joint)
  • 5:50 - 6:10 Hannah Li
  • 6:10 - 6:25 Soheil Nematihaji
  • 6:25 - 6:40 Hao Bai