EECS 590: Advanced Programming Languages (Winter 2011)

Basic Information
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

Course Overview
The motivation behind this course is the need for reliable and secure software. Software has become pervasive in our civilian infrastructure. All activities including transportation, telecommunications, energy, medicine, and banking rely on the correct working of software systems. Consequently, the problem of making software reliable and secure has become one of today's most important challenges. Multi-hundred-million-dollar space projects are interrupted by software glitches, power-grid failures are caused by bugs in software, and new security exploits are announced daily. Software reliability is crucial in critical systems, where failures can lead to loss of life---with risks ranging from a few individuals (anti-lock braking systems and airbag-deployment systems) to a few hundred (aircraft collision-avoidance systems) to tens of thousands (nuclear reactors and weapons systems). Software reliability also impacts security because buggy code underlies most security violations and progress in making systems more reliable will make them more resistant to deliberate attack as well. Moreover, software reliability has a significant impact on economy. Studies estimate that bugs in software cost businesses worldwide about $175 billion annually.

This course covers basic and advanced topics in programming languages, and shows how good programming languages and tools can significantly improve the reliability and security of software systems. This course has three objectives: 1) To understand fundamental concepts in programming languages, 2) To study some recent topics and trends in PL research, and 3) To gain experience planning and carrying out a modest PL research project.

Recommended Textbooks
Benjamin Pierce: Types and Programming Languages
Glynn Winskel: Formal Semantics of Programming Languages
Flemming Nielson, Hanne Nielson, Chris Hankin: Principles of Program Analysis
Franklyn Turbak and David Gifford: Design Concepts in Programming Languages

Grading
30%: Assignments, Paper Summaries, Paper Presentation, and Class Participation
70%: Research Project

Schedule

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)


[Mail] [bchandra at eecs dot umich dot edu]