# 15-312 Principles of Programming Languages

## Schedule of Lectures

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

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

Jan 18 | Rule Induction; Structural Induction | Homework 0 Out | ||

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

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

Jan 25 | Proving Safety | Homework 0 Due Homework 1 Out | ||

Jan 26 | Higher-Order Total Computation: GĂ¶del's T | 8-9 | ||

3 | Jan 31 | Finite data structures: products. | 10 | |

Feb 1 | Higher-order programming; products and sums | |||

Feb 2 | Finite data structures: sums. | 11 | ||

4 | Feb 7 | Generic programming | 14 | |

Feb 8 | Type operators; inductive types | Homework 1 Due Homework 2 Out | ||

Feb 9 | Inductive and coinductive types | 15 | ||

5 | Feb 14 | Polymorphism | 16 | |

Feb 15 | Polymorphic programming; parametricity | |||

Feb 16 | Abstract types | 17 | ||

6 | Feb 21 | Higher-order partial computation: PCF | 19 | |

Feb 22 | Fixed points and self-reference | Homework 2 Due Homework 3 Out | ||

Feb 23 | Recursive types: FPC | 20 | ||

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

Mar 1 | Self-reference and universality | |||

Mar 2 | Dynamic Languages: DPCF | 22 | ||

8 | Mar 7 | Dynamic typing as static typing | ||

Mar 8 | Objects and dynamic dispatch | 23 | Homework 3 Due | |

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

9 | Mar 14 | (Spring break) | ||

Mar 15 | (Spring break) | |||

Mar 16 | (Spring break) | 28-29 | ||

10 | Mar 21 | Exceptions | ||

Mar 22 | Stack machines | Homework 4 Out | ||

Mar 23 | Continuations | 30 | ||

11 | Mar 28 | Parallelism: Work and Span | 6;37 | |

Mar 29 | Parallel programming | |||

Mar 30 | Parallelism: Brent's Theorem | 37 | ||

12 | Apr 4 | Imperative programming: MA | 34 | |

Apr 5 | Modernized Algol: commands and expressions | Homework 4 Due Homework 5 Out | ||

Apr 6 | Capabilities and references; benign effects | 35 | ||

13 | Apr 11 | Lazy evaluation and memoization | 36 | |

Apr 12 | Lazy vs Eager | |||

Apr 13 | Dynamic classification | 36 | ||

14 | Apr 18 | Concurrency: process calculus | 39 | |

Apr 19 | Concurrent interaction | 40 | Homework 5 Due Homework 6 Out | |

Apr 20 | (No class) | |||

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

Apr 26 | Implementing parallelism | |||

Apr 27 | Distributed programming: DA | 41 | ||

16 | May 2 | Modules: interfaces and implementations | 42-43 | |

May 3 | Modular programming | Homework 6 Due | ||

May 4 | Modules: hierarchy and parameterization | 44 |

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