# 15-312 Foundations of Programming Languages

## Calendar

## Schedule of Lectures

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

1 | Jan 16 | Overview; Inductive Definitions; Abstract and Concrete Syntax | 1-3 | |

Jan 17 | Judgments; Inference; Induction Supplement on Simultaneous Induction | Homework 0 Out | ||

Jan 18 | Binding & Scope; Statics and Dynamics | 4-5 | ||

2 | Jan 23 | Type Safety: Preservation and Progress | 6 | |

Jan 24 | Binding; Semantics; Safety | Homework 0 Due; Homework 1 Out | ||

Jan 25 | Higher-Order Total Computation: Gödel's T | 8-9 | ||

3 | Jan 30 | Expressivity of Gödel's T | 8-9 | |

Jan 31 | Higher-Order Programming in T | |||

Feb 1 | Finite data structures | 10-11 | ||

4 | Feb 6 | Generic programming | 14 | |

Feb 7 | Finite Data Structures; Generic Programming | Homework 1 Due; Homework 2 Out | ||

Feb 8 | Inductive and coinductive types | 15 | ||

5 | Feb 13 | Polymorphism | 16 | |

Feb 14 | Inductive and Coinductive Types | |||

Feb 15 | Existential types | 17 | ||

6 | Feb 20 | Data abstraction and bisimulation | 17 | |

Feb 21 | Polymorphism and Existential Types | Homework 2 Due; Homework 3 Out | ||

Feb 22 | Higher-order partial computation: PCF | 19 | ||

7 | Feb 27 | Recursive types: FPC | 20 | |

Feb 28 | Partiality and Recursive Types | |||

Mar 1 | Dynamic Languages: Lambda Calculus | 21 | ||

8 | Mar 6 | Dynamic Languages: DPCF | 22 | |

Mar 7 | Lambda Calculus and DPCF | Homework 3 Due | ||

Mar 8 | Midterm examination (in-class & open-book) | |||

9 | Mar 13 | (Spring break) | ||

Mar 14 | (Spring break) | |||

Mar 15 | (Spring break) | |||

10 | Mar 20 | Exceptions | 29 | |

Mar 21 | Control stacks | Homework 4 Out | ||

Mar 22 | Continuations | 30 | ||

11 | Mar 27 | Imperative programming: MA | 34 | |

Mar 28 | Modernized Algol: commands and expressions | |||

Mar 29 | Capabilities and references; benign effects | 35 | ||

12 | Apr 3 | Parallelism: Work and Span | 6;37 | |

Apr 4 | Brent's Theorem | Homework 4 Due; Homework 5 Out | ||

Apr 5 | Parallelism: Brent's Theorem | 37 | ||

13 | Apr 10 | Dynamic dispatch | 26 | |

Apr 11 | Lazy vs Eager | |||

Apr 12 | Lazy evaluation and memoization | 36 | ||

14 | Apr 17 | Dynamic classification | 36 | |

Apr 18 | Dynamic classification | Homework 6 Out; Homework 5 Due | ||

Apr 19 | (No class) | |||

15 | Apr 24 | Concurrent programming: CA | 40 | |

Apr 25 | Concurrent interaction | |||

Apr 26 | Concurrent programming: CA | 40 | ||

16 | May 1 | TBA | ||

May 2 | Recap | |||

May 3 | TBA | Homework 6 Due |

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