15-814 Types and Programming Languages


Course Information

Time: Tue-Thu 10:30-11:50
Room: 4102 GHC
Instructor: Robert Harper
Teaching Assistant: Bernardo Toninho
Office Hours
Harper: Tue 12:00-1:00
Toninho: Thu 12:00-1:00

Synopsis

This is an introductory course on the foundations of programming languages. The central organizing principle of language design is the identification of language features with types. The theory of programming languages, therefore, reduces to the theory of types. Type theory is a comprehensive foundational theory of computation. Type theory has its orgins in proof theory (the theory of human reason) and is closely related to category theory (the general theory of mathematical structures). The tripartite relationship between type theory, proof theory, and category theory is fundamental to the study of programming languages. We will place special emphasis on the propositions-as-types correspondence, in which programs of a type are identified with proofs of the corresponding proposition. (Similar correspondences hold between type theory and category theory (types are objects, programs are maps) and between category theory and proof theory (propositions are objects, proofs are maps), but we shall not consider these in this course.)

References

Primary

Robert Harper, Practical Foundations for Programming Languages , Fall 2011.

Secondary

Jean-Yves Girard (with Yves Lafont and Paul Taylor), Proofs and Types, Cambridge University Press, 1990. (Out-of-print, available on-line as linked.)
Benjamin C. Pierce, Types and Programming Languages , MIT Press, 2002.
Benjamin C. Pierce, ed., Advanced Topics in Types and Programming Languages , MIT Press, 2005.
John C. Reynolds, Theories of Programming Languages , Cambridge University Press, 1998.

Homework

You are required to achieve a grade of B on each homework assignment. If, after grading, your assignment does not meet this standard, you are required to re-submit within one week a revised solution that corrects any errors or omissions to achieve a grade of B. This policy ensures that the emphasis is properly on learning the course material, and not on "getting through it."

All homeworks are due at the beginning of lecture on the due date. Homeworks are to be submitted in PDF format (only!), and must be typeset. All homeworks are to be submitted by sending the PDF via e-mail to Bernardo Toninho with "15-814 Homework" as the subject line. No late homeworks will be accepted. Any re-do's must be finished within three days of their being returned to you. Only one re-do is permitted per assignment.

Final Exam

There will be a 24-hour take-home final examination during the exam period at the end of the semester.

Academic Integrity

Unless explicitly instructed otherwise, all homework and exam work is to be solely your own, and may not be shared with or borrowed from any other person in the course. You are not permitted to draw upon assignments or solutions from previous instances of the course, nor to use course materials (such as assignments or programs) obtained from any web site or other external source in preparing your work.

You may discuss homework assignments with other students in the class, but you must adhere to the whiteboard policy. At the end of discussion the whiteboard must be erased, and you must not transcribe or take with you anything that has been written on the board during your discussion. You must be able to reproduce the results solely on your own after any such discussion.

Grading

CS PhD students are assigned a pass/fail grade in the University grading system, but are given an internal letter grade for Black Friday purposes. A final letter grade of B is required to pass this course. To achieve this, you must have (1) completed all homework assignments with a grade of B; and (2) earned a grade of B or better on the final exam.

Undergraduate students and students in other programs will be assigned letter grades according to the same policies used to assign internal letter grades for CS PhD students.

Schedule of Lectures

Date Topic Reading Homework
Sep 13 Untyped λ-Calculus PFPL1,2,19 HW1 out (handout [sample] [macros]) Updated 14/09.
15 Untyped λ-Calculus PFPL1,2,19
20 Logic of Judgements; Propositions and Types PFPL2,3,10,13
22 Propositions and Types; Proof Reduction; Safety PFPL6-8,14
27 Goedel's T: Inductive Types PFPL11 HW1 due. HW2 out (handout [macros]) Updated 04/10.
29 Plotkin's PCF: General Recursion PFPL12
Oct 4 Recursive Types PFPL18
6 Dynamic Typing; Hybrid Typing PFPL20-21
Oct 11 System F: Polymorphism PFPL22 HW2 due. HW3 out (handout [macros]). Updated 17/10.
13 System F: Data Abstraction PFPL23
18 Parametricity and Representation Independence PFPL51
20 Exceptions and Continuations PFPL30-31
25 Modernized Algol: Stack Assignables PFPL37 HW3 due. HW4 out (handout [macros])
27 Modernized Algol: Free Assignables PFPL37
Nov 1 Cost Semantics; Parallelism PFPL41
3 Parallelism; Brent's Principle PFPL41
Nov 8 Process Calculus PFPL43 HW4 due. HW5 out (handout [macros])
10 Process Calculus PFPL43
15 Concurrent Algol PFPL44
17 Distributed Algol PFPL45
22 (No Class) HW5 due.
24 (Thanksgiving)
29 Subtyping PFPL25
Dec 1 Laziness PFPL39
3 TBA
Dec 5 Summary and Review

Robert Harper
Last modified: Thu Sep 29 18:13:32 EDT 2011

Valid XHTML 1.0 Strict

Valid CSS