# 15-312 Principles of Programming Languages

## Calendar

## Schedule of Lectures

Week/Date | Topic | PFPL Chapters | Homework | |
---|---|---|---|---|

1 | Aug 28 | Inductive definitions; abstract syntax; binding and scope | 1-3 | |

Aug 29 | Judgments; Inference; Induction Supplement on Simultaneous Induction | Homework 0 Out | ||

Aug 30 | Church's λ-Calculus | HW0 Writeup | ||

2 | Sep 4 | Static and dynamic semantics; type safety. | 4-6 | |

Sep 5 | Binding; Semantics; Safety | Homework 0 Due; Homework 1 Out | ||

Sep 6 | Proving safety: progress and preservation | 4-6 | ||

3 | Sep 11 | Higher-Order total computation: Gödel's T | 8-9 | |

Sep 12 | Higher-Order Programming in T | |||

Sep 13 | Finite data structures: Products and Sums | 10-11 | ||

4 | Sep 18 | Generic programming | 14 | |

Sep 19 | Finite Data Structures; Generic Programming | Homework 1 Due; Homework 2 Out | ||

Sep 20 | Inductive and coinductive types | 15 | ||

5 | Sep 25 | Polymorphism; Genericity | 16 | |

Sep 26 | Inductive and Coinductive Types | |||

Sep 27 | Existential types; Data Abstraction | 17 | ||

6 | Oct 2 | Parametricity: Verification of ADT's | 17 | |

Oct 3 | Polymorphism and Existential Types | Homework 2 Due; Homework 3 Out | ||

Oct 4 | Higher-order partial computation: Plotkin's PCF | 19 | ||

7 | Oct 9 | General recursive types: FPC | 20 | |

Oct 10 | Partiality and Recursive Types | |||

Oct 11 | Dynamic languages: DPCF | 22 | ||

8 | Oct 16 | Dynamic dispatch: classes and methods | 26 | |

Oct 17 | λ-Calculus and DPCF | Homework 3 Due | ||

Oct 18 | Midterm examination (in-class & open-book) | |||

9 | Oct 23 | Exceptions: control and data | 28-29 | |

Oct 24 | Exceptions and Control Stacks | Homework 4 Out | ||

Oct 25 | Continuations | 30 | ||

10 | Oct 30 | Parallelism: work and span | 6; 37 | |

Oct 31 | Continuations and Parallelism | |||

Nov 1 | Parallelism: Brent's Theorem | 37 | ||

11 | Nov 6 | Imperative Programming: Modernized Algol | 34 | |

Nov 7 | Modal Separation | Homework 4 Due; Homework 5 Out | ||

Nov 8 | Capabilities and References | 37 | ||

12 | Nov 13 | Dynamic Classification; Confidentiality and Integrity | 33 | |

Nov 14 | MA and references; Dynamic classification | |||

Nov 15 | Laziness: Call-by-Need; Benign Effects | 36 | ||

13 | Nov 20 | Haskell and ML | ||

Nov 21 | (Thanksgiving Break) | Homework 5 Due | ||

Nov 22 | (Thanksgiving Break) | |||

14 | Nov 27 | Concurrency: π-Calculus | 33 | Homework 6 Out |

Nov 28 | Concurrent interaction | |||

Nov 29 | Concurrent Programming: Concurrent Algol | |||

15 | Dec 4 | Modularity and Linking | 33 | |

Dec 5 | (Modules and Sharing) | Home 6 Due | ||

Dec 6 | Type Abstractions and Type Classes | |||

Author: Robert Harper
Last modified: Mon Dec 12 11:54:59 EST 2016