Instructor | Chandra Boyapati |
Lectures | T Th 3:00-4:30, 3433 EECS |
Credits | 4 |
For CSE grads | Counts as a software kernel course and towards software area qualification |
For CS-ENGR and CS-LSA undergrads | Counts as an upper-level CS technical elective |
Introduction | ||
L1 | Jan 06 | Course Overview |
Optional Reading Hoare: Hints for Programming Language Design Wegner: Programming Languages - The First 25 Years Wirth: On the Design of Programming Languages Nauer: Report on the Algorithmic Language ALGOL 60 | ||
Programming Languages and Type Systems | ||
L2 | Jan 11 | Syntax and Semantics |
Reading Pierce: Chapter 3 | ||
L3 | Jan 13 | Syntax and Semantics |
Reading Pierce: Chapter 3 | ||
L4 | Jan 18 | Type Systems |
Reading Pierce: Chapter 8 Cardelli: Type Systems | ||
Handout Assignment 1 | ||
L5 | Jan 20 | Type System for Java Bytecodes |
Reading Stata & Abadi: A Type System for Java Bytecode Subroutines (POPL 1998): Sections 1-4, 8, 9, 10 | ||
Optional Reading Freund & Mitchell: A Type System for the Java Bytecode Language and Verifier (JAR 2003) | ||
L6 | Jan 25 | Type System for Java |
Reading Liskov & Wing: A Behavioral Notion of Subtyping (TOPLAS 1994) Igarashi et al: FeatherWeight Java (TOPLAS 2001): Sections 1-2 | ||
L7 | Jan 27 | Type System for Java |
Reading Igarashi et al: FeatherWeight Java (TOPLAS 2001): Sections 1-2 | ||
Handout Assignment 2 | ||
Homework Due Assignment 1 | ||
L8 | Feb 01 | Type System for Generic Java |
Reading Myers et al: Parameterized Types for Java (POPL 1997) Igarashi et al: FeatherWeight Java (TOPLAS 2001): Sections 3-6 | ||
Optional Reading Kennedy et al: Design and Implementation of Generics for the .NET Common Language Runtime (PLDI 2001) | ||
L9 | Feb 03 | Type System for Generic Java |
Reading Igarashi et al: FeatherWeight Java (TOPLAS 2001): Sections 3-6 | ||
Optional Reading Kennedy et al: Design and Implementation of Generics for the .NET Common Language Runtime (PLDI 2001) | ||
Applications of Type Systems | ||
L10 | Feb 08 | Types for Information Flow Control |
Reading Myers: JFlow: Practical Mostly-Static Information Flow Control (POPL 1999) Presenter: Steve Chapel | ||
Optional Reading Clarkson et al: Toward a Secure Voting system (Oakland 2008) | ||
Homework Due Paper Summary (About 120 Words) | ||
L11 | Feb 10 | Types for Safe Multithreading |
Reading Boyapati & Rinard: A Parameterized Type System for Race-Free Java Programs (OOPSLA 2001) | ||
Optional Reading Grossman: Type-Safe Multithreading in Cyclone (TLDI 2003) | ||
Homework Due Assignment 2 Paper Summary (About 120 Words) | ||
Handout Project Suggestions | ||
L12 | Feb 15 | Types for Safe Explicit Memory Management |
Reading Grossman et al: Region-Based Memory Management in Cyclone (PLDI 2002) Presenter: Jordan Marchese | ||
Optional Reading Boyapati et al: Ownership Types for Safe Region-Based Memory Management in Real-Time Java (PLDI 2003) | ||
Homework Due Paper Summary (About 120 Words) | ||
L13 | Feb 17 | Types for Protocol Checking and Type Safety for Legacy Code |
Reading DeLine & Fahndrich: Enforcing High Level Protocols in Low-Level Software (PLDI 2001) Presenter: Rahul Jha Necula et al: CCured: Type-Safe Retrofitting of Legacy Code (POPL 2002) Presenter: James Juett | ||
Optional Reading Fahndrich & Leino: Declaring and Checking Non-Null Types in an Object-Oriented Language (OOPSLA 2003) | ||
Homework Due Project Proposal (Includes Problem Statement, Research Goals, Schedule) Paper Summaries (About 120 Words Each) | ||
Program Analysis | ||
L14 | Feb 22 | Dataflow Analysis |
Reading Zee & Rinard: Write Barrier Removal by Static Analysis (OOPSLA 2002) Nielson, Nielson, Hankin: Appendix A, Chapters 1.1-1.3 | ||
Optional Reading Salcianu: Notes on Abstract Interpretation (MIT 2001) Cousot & Cousot: Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints (POPL 1977) | ||
L15 | Feb 24 | Dataflow Analysis |
Reading Nielson, Nielson, Hankin: Chapters 2.1-2.4 | ||
Optional Reading Salcianu & Arkoudas: Machine-Checkable Correctness Proofs for Dataflow Analyses (MIT 2004) Lerner et al: Automatically Proving the Correctness of Compiler Optimizations (PLDI 2003) | ||
Happy Winter Break!
| ||
L16 | Mar 08 | Pointer Analysis |
Reading Steensgaard: Pointer Analysis in Almost Linear Time (POPL 1995) Presenter: Mendel Feygelson | ||
Optional Reading Hind: Pointer Analysis: Haven't We Solved This Problem Yet? (PASTE 2001) | ||
Homework Due Paper Summary (About 120 Words) | ||
L17 | Mar 10 | Interprocedural Program Analysis |
Reading Reps et al: Precise Interprocedural Dataflow Analysis via Graph Reachability (POPL 1995) Presenter: Chun-Hung Hsiao | ||
Optional Reading Whaley & Lam: Cloning-Based Context-Sensitive Pointer Alias Analysis Using Binary Decision Diagrams (PLDI 2004) | ||
Homework Due Project Progress Report I (Includes Literature Survey, Preliminary Work) Paper Summary (About 120 Words) | ||
L18 | Mar 15 | Applications of Program Analysis |
Reading Voung et al: RELAY: Static Race Detection on Millions of Lines of Code (FSE 2007) Presenter: Paul Bloem | ||
Optional Reading Lev-Ami et al: Putting Static Analysis to Work for Verification: A Case Study (ISSTA 2000) | ||
Homework Due Paper Summary (About 120 Words) | ||
Program Verification | ||
L19 | Mar 17 | Axiomatic Semantics |
Reading Winskel: Chapters 2, 6.1-6.4 | ||
Optional Reading Floyd: Assigning Meaning to Programs (Symposium in Applied Mathematics 1967) Hoare: An Axiomatic Basis for Computer Programming (CACM 1969) | ||
L20 | Mar 22 | Axiomatic Semantics |
Reading Winskel: Chapters 6.5-6.7, 7.1-7.6 | ||
Optional Reading Hoare: Proof of a Program FIND (CACM 1971) Dijkstra: Guarded Commands, Nondeterminancy and Formal Derivation of Programs (CACM 1975) | ||
L21 | Mar 24 | Verifying Program Properties With Theorem Provers |
Reading Flanagan et al: Extended Static Checking for Java (PLDI 2002) Presenter: Alessandra Mazzia Moore: Proving Theorems about Java-Like Byte Code (LNCS 1997) Presenter: Michael Bennett | ||
Homework Due Paper Summaries (About 120 Words Each) | ||
L22 | Mar 29 | Verifying Program Properties of Untrusted Code |
Reading Necula & Lee: Safe Kernel Extensions Without Run-Time Checking (OSDI 1996) Presenter: Kellen McClain | ||
Optional Reading Appel: Foundational Proof-Carrying Code (LICS 2001) | ||
Homework Due Paper Summary (About 120 Words) | ||
Software Model Checking | ||
L23 | Mar 31 | Bounded Exhaustive Testing of Control-Oriented Properties of Programs |
Reading Musuvathi et al: CMC: A Pragmatic Approach to Model Checking Real Code (OSDI 2002) Presenter: Sumeet Vaidya Ball et al: Automatic Predicate Abstraction of C programs (PLDI 2001) Presenter: Zhaoguang Wang | ||
Optional Reading Flanagan & Godefroid: Dynamic Partial-Order Reduction for Model Checking Software (POPL 2005) | ||
Homework Due Project Progress Report II Paper Summaries (About 120 Words Each) | ||
-- | Apr 05 | No Class |
Work on your projects. | ||
Optional Reading Check out PLDI 2010, OOPSLA 2010, POPL 2010 | ||
-- | Apr 07 | No Class |
Work on your projects. | ||
Optional Reading Check out PLDI 2010, OOPSLA 2010, POPL 2010 | ||
L24 | Apr 12 | Bounded Exhaustive Testing of Data-Oriented Properties of Programs |
Reading Roberson et al: Efficient Software Model Checking of Soundness of Type Systems (OOPSLA 2008) | ||
Optional Reading Daniel Jackson: Alloy: A Lightweight Object Modelling Notation (TOSEM 2002) | ||
Homework Due Paper Summary (About 120 Words) | ||
L25 | Apr 14 | Project Presentations (Maximum Fifteen Minutes Per Presentation) |
Presenters 1. James Juett and Alessandra Mazzia 2. Sumeet Vaidya 3. Jordan Marchese 4. Kellen McClain 5. Zhaoguang Wang | ||
Project Presentations | ||
L26 | Apr 19 | Project Presentations (Maximum Fifteen Minutes Per Presentation) |
Presenters 1. Chun-Hung Hsiao 2. Michael Bennet 3. Steve Chapel and Rahul Jha 4. Paul Bloem 5. Mendel Feygelson | ||
--
|
Apr 22
|
Project Paper
|
Homework Due Project Paper (Maximum Eight Pages, Including Figures, References, and Appendices) (ACM Format) |