15-819C Reasoning about Low-Level Programming Languages (12 units) Spring 2002

John C. Reynolds

Tuesdays and Thursdays, 10:30-11:50 am Wean Hall 4615A

Class Notes (in Postscript)

Papers

Homework (in Postscript)

Course Description

Conventional logics and type systems are inadequate for reasoning about languages that give the programmer explicit control over the management of storage and other resources. At this level, novel approaches to formal specification and verification are needed for the construction of software that is both highly reliable and highly efficient.

We will explore such systems, with particular emphasis on reasoning about shared mutable data structures (structures where many pointers can address the same location, which can be updated in-place by the program), shared-variable concurrency, and embedded code (pointers from data structures to machine code).

Topics to be covered include:

PREREQUISITES: Starred CS graduate course or permission of instructor.

TEXT: Notes and papers will be distributed.

METHOD OF EVALUATION: Grading will be based on homework and final exam.

last updated May 17, 2002