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
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
L5 Jan 20 Type System for Java Bytecodes
L6 Jan 25 Type System for Java
L7 Jan 27 Type System for Java
Homework Due
Assignment 1
L8 Feb 01 Type System for Generic Java
L9 Feb 03 Type System for Generic Java
Applications of Type Systems
L10 Feb 08 Types for Information Flow Control
Homework Due
Paper Summary (About 120 Words)
L11 Feb 10 Types for Safe Multithreading
Homework Due
Assignment 2
Paper Summary (About 120 Words)
Handout
Project Suggestions
L12 Feb 15 Types for Safe Explicit Memory Management
Homework Due
Paper Summary (About 120 Words)
L13 Feb 17 Types for Protocol Checking and Type Safety for Legacy Code
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
L15 Feb 24 Dataflow Analysis
Reading
Nielson, Nielson, Hankin: Chapters 2.1-2.4
Happy Winter Break!
L16 Mar 08 Pointer Analysis
Homework Due
Paper Summary (About 120 Words)
L17 Mar 10 Interprocedural Program Analysis
Homework Due
Project Progress Report I (Includes Literature Survey, Preliminary Work)
Paper Summary (About 120 Words)
L18 Mar 15 Applications of Program Analysis
Homework Due
Paper Summary (About 120 Words)
Program Verification
L19 Mar 17 Axiomatic Semantics
Reading
Winskel: Chapters 2, 6.1-6.4
L20 Mar 22 Axiomatic Semantics
Reading
Winskel: Chapters 6.5-6.7, 7.1-7.6
L21 Mar 24 Verifying Program Properties With Theorem Provers
Homework Due
Paper Summaries (About 120 Words Each)
L22 Mar 29 Verifying Program Properties of Untrusted Code
Homework Due
Paper Summary (About 120 Words)
Software Model Checking
L23 Mar 31 Bounded Exhaustive Testing of Control-Oriented Properties of Programs
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
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] [boyapati dot chandrasekhar at gmail dot com]

AltStyle によって変換されたページ (->オリジナル) /