15-312 Principles of Programming Languages


Schedule of Lectures

Date Topic PFPL Chapters Homework
Jan 15 What Is A Programming Language? Syntax, Statics, Dynamics. 1-3 Assignment 0 Out
16 Inductive Definitions; Abstract Syntax and Binding 1-3
17 An Expression Language: Calculation, Structural Operational Semantics 4-7
22 Statics; Safety; Run-Time Errors 7 Assignment 0 Due, Assignment 1 Out
23 Implementing Abstract Syntax; deBruijn representation 1-3
24 Function Definitions 8
29 Goedel's T and PCF 10 Solution 0 Out
30 Fixed Points and Recursion 10
31 Definability and Undefinability 10
Feb 5 Products and Sums 11-12 Assignment 1 Due
6 Pattern Matching 13
7 Dynamic Dispatch (Classes and Methods) 25 Assignment 2 Out, Solution 1 Out
12 Recursive Types 16
13 Self-Application 25
14 Self-Reference and Self-Application 16
19 Dynamic Languages 18-19
20 Dynamic Typing 18
21 Dynamic Languages are Static Languages 19 Assignment 2 Due, Assignment 3 Out
26 System F and Polymorphism 20 Solution 2 Out
27 Polymorphic Church Encodings 20
28 Abstract Types and Representation Independence 21
Mar 5 Propositions as Types 21
6 Review for Midterm
7 Midterm Examination Assignment 3 Due (Fri)
12 (Spring Break)
13 (Spring Break)
14 (Spring Break)
19 Modernized Algol 35
20 Scoped Assignables 35
21 Modernized Algol 36 Solution 3 Out, Assignment 4 Out
26 Assignable References 36
27 Mutable Data Structures 36
28 Benign Effects vs Modal Separation 36
Apr 2 Laziness: Call-By-Need 37
3 Lazy Data Structures 37
4 Nested Data Parallelism 39 Assignment 4 Due, Assignment 5 Out
9 Brent's Principle 39 Solution 4 Out
10 Cost Graphs; Work and Span 39
11 Speculations and Futures 40
16 Concurrent Interaction 41
17 Events and Synchronization 41
18 (Carnival Break) Assignment 5 Due, Assignment 6 Out
23 Communication: π-Calculus 41 Solution 5 Out
24 Programming with Process Calculus
25 Concurrent Algol 42
30 Concurrent Algol 42
May 1 Review
2 Propositions as Types Contd. 30 Assignment 6 Due

Robert Harper
Last modified: Thu Apr 18 13:56:13 EDT 2013

Valid XHTML 1.0!