15-851 Computation and Deduction
| Spring 2001 |
| Frank Pfenning |
| TuTh 1:00-2:20 |
| WeH 5409 |
| 12 units |
We explore the theory of programming languages using deductive
systems. We use such systems to specify, implement, and verify
properties of functional and logic programming languages. The deductive
approach to the specification of programming languages has become
standard practice, and one of the goals of this course is to provide a
good working knowledge of how to engineer such language descriptions.
Throughout the course we will use Twelf as a uniform meta-language in
which we can express specification, implementation, and meta-theory of
the object languages we are considering. An implementation of Twelf and
examples will be available on-line for experimentation.
This is an introductory graduate course with no formal prerequisites,
but an exposure to functional programming and type systems would be
helpful. Enterprising undergraduates are welcome to attend this course.
- For a list of suggested projects, please see the
projects page from the 1997 version of the course.
- Assignment 5 consists of Exercise 5.15 on schematic types
(pp. 144-145 of course notes in Chapter
- A model solution on Exercise 5.11 on
checking linearity is now available.
- The complete Chapter 6 on Compilation are now available.
This now includes a section on type preservation and progress.
- Chapter 4 on The Elf Programming
Language is now available.
|| TuTh 1:00-2:20, WeH 5409, Frank Pfenning
| Office Hours
Wed 1:30-2:30, WeH 8117, Frank Pfenning
Mon 4:00-5:00, WeH 8402, Brigitte Pientka
Computation and Deduction
Cambridge University Press, 2001 (in preparation).
This will not be published in time for this class.
Copies will be available here for students.
|| 12 units
|| 40% Homework, 30% Midterm, 30% Final Project
Weekly homework is assigned each Thursday and due the following Thursday.
Late homework will be accepted only under exceptional circumstances.
| Final Project
Final project topics will be selected after the midterm.
Projects consist of a term paper and a Twelf implementation.
Projects are due on Thursday, May 3.
Tuesday, March 6, in class.
Closed book, one sheet of notes permitted.
Functional Programming, Mini-ML, Natural Semantics, Type Preservation
Judgments as Types, Dependent Types, LF, Twelf
Abstract Machines, Compilation, Compiler Correctness
Natural Deduction, Sequent Calculus, Cut Elimination
Logic Programming, Resolution, Soundness, Completeness
Logical Relations, Observational Equivalance
Parametric Polymorphism, Subtyping, Intersection Types, Recursive Types
Temporal Logic, Modal Logic