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.

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. 144-145 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

Schedule  
Assignments  
Handouts  
Software  
Overview  

Course Information

Lectures 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 (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
Home http://www.cs.cmu.edu/~fp/courses/comp-ded/
Directory /afs/cs.cmu.edu/user/fp/courses/comp-ded/

[ Home | Schedule | Assignments | Handouts | Software | Overview ]

fp@cs
Frank Pfenning