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.
Office Hours
Wed 1:30-2:30, WeH 8117,
Frank Pfenning
Mon 4:00-5:00, WeH 8402,
Brigitte Pientka
(Teaching Assistant)
Textbook
Computation and Deduction
Frank Pfenning.
Cambridge University Press, 2001 (in preparation).
This will not be published in time for this class.
Copies will be available here for students.
Credit
12 units
Grading
40% Homework, 30% Midterm, 30% Final Project
Homework
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.
Midterm
Tuesday, March 6, in class.
Closed book, one sheet of notes permitted.
Topics
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
Directory
/afs/cs.cmu.edu/user/fp/courses/comp-ded/
[ Home
| Schedule
| Assignments
| Handouts
| Software
| Overview
]
fp@cs
Frank Pfenning