Advanced Programming Languages:
Polymorphism
|
Week | Date | Topic | Reading |
Homework |
1 | 9/9 | Introduction: Types of Polymorphism,
Typed programming languages, Polymorphic Lambda Calculus |
||
9/11 | Encoding datatypes in F | |||
2 | 9/16 | Existential types, J, Termination of Simply-Typed Lambda Calculus | ||
9/18 | Termination of F |
Lecture notes [tex, ps] |
||
3 | 9/23 | Parametricity |
Wadler, Theorems for Free |
|
9/25 | Higher-order polymorphism |
Pierce TAPL, 29&30 |
Hw 1 due Hw 2 out |
|
4 | 9/30 | Fun with F-omega |
Project proposal due |
|
10/2 | Guest Lecture, Dan Grossman, Polymorphic types and references | Dan's Slides |
||
5 | 10/7 | No class | ICFP
Program |
|
10/9 | ML Type Inference |
Pierce TAPL, 23 |
Hw 2 due Hw 3 out |
|
6 | 10/14 | Dynamic Types |
Dynamic Typing in
a Statically Typed Language |
|
10/16 | Implementing Parametric
Polymorphism: Boxing and Representation Analysis |
|||
7 | 10/21 | Implementing Parametric
Polymorphism: Intensional Type Analysis |
Compiling Polymorphism
Using Intensional Type Analysis |
|
10/23 | Examples of ITA |
|
Hw 3 due Hw 4 out |
|
8 | 10/28 | Fully Reflexive ITA |
Fully-Reflexive
Intensional Type Analysis |
|
10/30 | Type Erasure Semantics |
Intensional Polymorphism
in Type Erasure Semantics |
||
9 | 11/4 | Compiling and Encoding ITA |
Encoding Intensional
Type Analysis |
|
11/6 | Type Classes in Haskell |
Type classes in Haskell | Hw 4 due Hw 5 out |
|
10 | 11/11 | More Type Classes in Haskell/Type
constructor classes |
A System of Constructor
Classes: Overloading and Implicit Higher-Order Polymorphism |
|
11/13 | Polytypic Programming |
http://www.cs.chalmers.se/~patrikj/poly/ (Tangentially related: Functional programming with bananas, lenses, envelopes and barbed wire) |
||
11 | 11/18 | More Polytypic Programming |
||
11/20 | Generic Haskell |
Polytypic values
possess polykinded types |
Hw 5 due Hw 6 out |
|
12 | 11/25 | Higher-Order Intensional
Type Analysis |
||
11/27 | Comparison of HOITA and Fully
Reflexive ITA Dependent Types and the Lambda-Cube |
Lambda Calculi
with Types Henk: A typed intermediate language |
||
13 | 12/2 | Boilerplate programming |
Scrap
your Boilerplate: a practical design pattern for generic programming |
|
12/4 | Generative types and type
dispatch |
Type Dispatch for Named Hierarchical
Types |
Hw 6 due |
|
14 |
12/9 |
Something about type abstraction? |
Project due |
Home | Course Description | Assignments and Grading | References | Last modified: 09.11.02