Date |
Topic |
Lectures |
Assignments |
mar. 5
|
Introduction
|
LEC: introduction
Prepare: TAPL chap 1, chap 2
|
software setup
|
mar. 12
|
Untyped Arithmetic Expressions
|
LEC: arith
Prepare: TAPL chap. 3, chap. 4
|
Finish programming assignment 1: arith
|
mar. 19
|
Untyped lambda calculus
|
LEC: lambda
Prepare: TAPL chap. 5, 6, 7
|
Finish programming assignment 2: lambda calculus
|
mar. 26
|
Simple Types
|
LEC: Typed arithmetic expressions;
Simply typed lambda-calculus
Prepare: TAPL chap. 8, 9, 10
|
Finish programming assignment 3: types
|
apr. 2
|
Simple Extensions
|
LEC: Extensions, references
Prepare: TAPL chap. 11, 13
|
Finish programming assignment 4: reference
|
apr. 9
|
Midterm test I
|
|
|
apr. 16
|
Exception and Contintuation
|
LEC: Exception and continuation
Prepare: TAPL chap. 14;
Harper's book chap 28, 29, 30; and
sample coroutine code
|
Finish programming assignment 5: exceptions
|
apr. 23
|
No Class
|
|
|
apr. 30
|
Subtyping
|
LEC: Subtyping
Prepare: TAPL chap. 15, 16, 17
|
Finish programming assignment 6: subtyping
|
may 7
|
No Class
|
|
|
may 14
|
Recursive types
|
LEC: recursive
Prepare: TAPL chap. 20
|
|
may 21
|
Type Inference
|
LEC: Type inference
Prepare: TAPL chap. 22
|
Finish programming assignment 7: Type Inference
|
may 28
|
Midterm test II
|
|
|
june 4
|
Universal types
|
LEC: System F
Prepare: TAPL chap. 23
|
|
june 11
|
Existential types
|
LEC: Existential types and ADT
Prepare: TAPL chap. 24
|
Finish programming assignment 8: System F
|
june 18
|
Type operators
|
LEC: type operators
Prepare: TAPL chap. 28
|
Finish programming assignment 9: λω and
doc
|
june 25
|
Higher-order systems
|
LEC: Fω
Prepare: TAPL chap. 30
|
Finish programming assignment 10: Fω and
doc
|
14:30-16:30, July 9
|
Final test
|
Close book, close notes, no electronic devices
|
|