For CS-ENGR and CS-LSA undergrads
Counts as an upper-level CS technical elective
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.
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
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
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.
--
Apr 07
No Class
Work on your projects.
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)