Advanced Programming Languages: Polymorphism
CIS 670 Fall 2002


Course Schedule

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 DescriptionAssignments and Grading | References | Last modified: 09.11.02