Metadata
Title
15-814 Types and Programming Languages
Category
courses
UUID
6d286e1a5eeb4d6f87f4b038afbf9d00
Source URL
https://www.andrew.cmu.edu/course/15-814/
Parent URL
http://www.cs.cmu.edu/~rjsimmon/
Crawl Time
2026-03-25T06:32:06+00:00
Rendered Raw Markdown
# 15-814 Types and Programming Languages

**Source**: https://www.andrew.cmu.edu/course/15-814/
**Parent**: http://www.cs.cmu.edu/~rjsimmon/

---

## Course Information

|  |  |
| --- | --- |
| Date / Time: | Mon & Wed / 12:00 pm - 1:20 pm |
| Room: | GHC **4303** |
| Instructor: | [Karl Crary](http://www.cs.cmu.edu/~crary/) |
| Teaching Assistant: | Yong Kiam Tan |
| Discussion Board: | [Piazza Page](http://piazza.com/cmu/fall2017/15814) |
| **Office Hours** |
| Karl Crary: | Tue / 3:30 pm - 4:30 pm | GHC 9217 |
| Yong Kiam: | Thu / 4:00 pm - 5:00 pm | GHC 7513 |

## Synopsis

This is an introductory course on the foundations of programming languages. The central organizing principle 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, and also corresponds (in a way that can be made mathematically precise) to the vernacular of logic. The course is about the dual interpretations of type theory as programming and as logic, and about the interplay between those interpretations.

## Text

|  |
| --- |
| Robert Harper,  [Practical Foundations for Programming Languages (Second Edition)](http://www.cs.cmu.edu/~rwh/pfpl.html),  Cambridge University Press, April 2016. |
| [[Online Preview](http://www.cs.cmu.edu/~rwh/pfpl/2nded.pdf)] |

## Homework

You are required to achieve a grade of B on each homework
assignment. If you receive a C or D on
an *on-time* submission, you will be given extra time in which to revise to achieve a B grade on that
assignment. Failure to submit on time, or a failing grade on
an assignment, precludes resubmission and will result in a
failing grade in the course.

All homeworks are due by 11 pm on the
stated due date. No late homeworks will be accepted, unless
prior permission is obtained from the instructor, which will be
granted only under exceptional circumstances. Homeworks are to
be submitted by email to the [teaching assistant](mailto:yongkiat@cs.cmu.edu). Homeworks should preferably be typeset in LaTeX,
but can also be handwritten neatly, scanned and submitted as a PDF.

All homeworks are to be submitted by sending the PDF via
e-mail to the teaching assistant 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. One re-do is generally permitted per assignment. You would be allowed more than one re-dos only under exceptional circumstances.

## Midterm Exam

There will be a 24-hour take-home midterm
examination during the exam period in the mid of semester. You
will be assigned a letter grade as for homework.

## Final Exam

There will be a 24-hour take-home final
examination during the exam period at the end of semester. You
will be assigned a letter grade as for homework.

## 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 (or whatever discussion medium is used) must be erased, and you must not transcribe or take with you anything that has been written on the board during your discussion. In other words, after any such discussion, you must be able to reproduce the results solely on your own.

## Tentative Schedule of Lectures

| Date | | Topic | Reading | Homework |
| --- | --- | --- | --- | --- |
| Sep | 4 | Labor Day (No lecture) |  |  |
|  | 6 | Inductive Definitions | PFPL 1-3 |  |
|  | 11 | Statics and Dynamics | PFPL 4-5 | HW1 out   ([handout](https://www.andrew.cmu.edu/course/15-814/hws/hw1/hw1.pdf) [[LaTeX template](https://www.andrew.cmu.edu/course/15-814/hws/hw1/hw1-sol.tex)] [[macros](https://www.andrew.cmu.edu/course/15-814/hws/hw1/hw1-macros.tex)] )   [[solutions](https://www.andrew.cmu.edu/course/15-814/hws/hw1/hw1-solutions.pdf)] |
|  | 13 | Type Safety | PFPL 6 |  |
|  | 18 | Simply-Typed Lambda Calculus | PFPL 8, 21 |  |
|  | 20 | Substitution | PFPL 8, 21 |  |
|  | 25 | Contextual and Evaluation Dynamics   Products and Sums | PFPL 5.3, 7   PFPL 10, 11 | HW1 due   HW2 out   ([handout](https://www.andrew.cmu.edu/course/15-814/hws/hw2/hw2.pdf) [[LaTeX template](https://www.andrew.cmu.edu/course/15-814/hws/hw2/hw2-sol.tex)] [[macros](https://www.andrew.cmu.edu/course/15-814/hws/hw2/hw2-macros.tex)])   [[solutions](https://www.andrew.cmu.edu/course/15-814/hws/hw2/hw2-solutions.pdf)] |
|  | 27 | System T | PFPL 9 |  |
| Oct | 2 | Definability | PFPL 9 |
|  | 4 | Polymorphism and System F | PFPL 16 |  |
|  | 9 | Existential Types   Data Abstraction | PFPL 17   PFPL 48 | HW2 due   HW3 out   ([handout](https://www.andrew.cmu.edu/course/15-814/hws/hw3/hw3.pdf) [[LaTeX template](https://www.andrew.cmu.edu/course/15-814/hws/hw3/hw3-sol.tex)] [[macros](https://www.andrew.cmu.edu/course/15-814/hws/hw3/hw3-macros.tex)])   [[solutions](https://www.andrew.cmu.edu/course/15-814/hws/hw3/hw3-solutions.pdf)] |
|  | 11 | Abstraction Theorem | PFPL 48 |  |
|  | 16 | Free Theorems | [Theorems for free!](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.38.9875) | HW3 due   HW4 out   ([handout](https://www.andrew.cmu.edu/course/15-814/hws/hw4/hw4.pdf) [[LaTeX template](https://www.andrew.cmu.edu/course/15-814/hws/hw4/hw4-sol.tex)] [[macros](https://www.andrew.cmu.edu/course/15-814/hws/hw4/hw4-macros.tex)])   [[solutions](https://www.andrew.cmu.edu/course/15-814/hws/hw4/hw4-solutions.pdf)] |
|  | 18 | Curry-Howard Isomorphism |  |  |
|  | 23 | PCF and Recursive Types | PFPL 19-20 | Midterm (available 23 Oct - 27 Oct) |
|  | 25 | State and Effects | PFPL 34 |
|  | 30 | Modernized Algol | PFPL 34-35 | HW4 due   HW5 out   ([handout](https://www.andrew.cmu.edu/course/15-814/hws/hw5/hw5.pdf) [[LaTeX template](https://www.andrew.cmu.edu/course/15-814/hws/hw5/hw5-sol.tex)] [[macros](https://www.andrew.cmu.edu/course/15-814/hws/hw5/hw5-macros.tex)])   [[solutions](https://www.andrew.cmu.edu/course/15-814/hws/hw5/hw5-solutions.pdf)] |
| Nov | 1 | Modernized Algol | PFPL 34-35 |  |
|  | 6 | Assignables and References | PFPL 34-35 |  |
|  | 8 | Control Stacks | PFPL 28 |
|  | 13 | Exceptions and Continuations | PFPL 29-30 | HW5 due |
|  | 15 | Continuations and Classical Logic | PFPL 13 | HW6 out   ([handout](https://www.andrew.cmu.edu/course/15-814/hws/hw6/hw6.pdf) [[LaTeX template](https://www.andrew.cmu.edu/course/15-814/hws/hw6/hw6-sol.tex)] [[macros](https://www.andrew.cmu.edu/course/15-814/hws/hw6/hw6-macros.tex)])   [[solutions](https://www.andrew.cmu.edu/course/15-814/hws/hw6/hw6-solutions.pdf)] |
|  | 20 | Subtyping | PFPL 24 |  |
|  | 22 | Thanksgiving (No Class) |  |  |
|  | 27 | Higher Kinds | PFPL 18 |  |
|  | 29 | Linear Logic |  |
| Dec | 4 | Substructural Logic |  | HW6 due |
|  | 6 | Modal Logic |  |  |

---

[Yong Kiam Tan](mailto:yongkiat@cs.cmu.edu)