
15851 Computation and Deduction
Spring 2001 
Frank Pfenning 
TuTh 1:002: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 metalanguage in
which we can express specification, implementation, and metatheory of
the object languages we are considering. An implementation of Twelf and
examples will be available online for experimentation.
Prerequisites:
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.
What's New?
 For a list of suggested projects, please see the
suggested
projects page from the 1997 version of the course.
 Assignment 5 consists of Exercise 5.15 on schematic types
(pp. 144145 of course notes in Chapter
5)
 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.
Class Material
Course Information
Lectures 
TuTh 1:002:20, WeH 5409, Frank Pfenning 
Office Hours 
Wed 1:302:30, WeH 8117, Frank Pfenning
Mon 4:005: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, MiniML, 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

Home 
http://www.cs.cmu.edu/~fp/courses/compded/ 
Directory 
/afs/cs.cmu.edu/user/fp/courses/compded/ 
[ Home
 Schedule
 Assignments
 Handouts
 Software
 Overview
]
fp@cs
Frank Pfenning
