1.
|
Mon Jan 11, Wed Jan 13, Fri Jan 15,
Mon Jan 25, Wed Jan 27, Fri Jan 29:
Object-oriented programming, Java, the Java Compiler Compiler,
the Java Tree Builder, functional programming, Scheme.
Read: any good book on Java,
EOPL Chapters 1-2,
Lecture Note 1.
|
2.
|
Mon Feb 1, Wed Feb 3, Fri Feb 5,
Mon Feb 8, Wed Feb 10:
Interpreters, lambda-calculus.
Read: EOPL Chapter 4, 5, 7,
Lecture Note 2.
|
3.
|
Fri Feb 12, Mon Feb 15, Wed Feb 17,
Fri Feb 19, Mon Feb 22, Wed Feb 24:
Simple types, type soundness, recursive types, subtyping, decision procedure
for subtyping.
Read:
Efficient recursive subtyping,
Lecture Note 3.
|
4.
|
Fri Feb 26, Mon Mar 1, Wed Mar 3,
Fri Mar 5:
Continuation-passing-style transformation, closure conversion.
Read: EOPL Chapters 8.1-8.5, 9.1, 10.1-10.2,
Lecture Note 4.
|
5.
|
Mon Mar 8, Wed Mar 10, Fri Mar 12:
Type inference, principal types, first-order unification.
Read:
A Simple Algorithm and Proof for Type Inference,
Lecture Note 5.
|
6.
|
Mon Mar 22, Wed Mar 24, Fri Mar 26,
Mon Mar 29, Wed Mar 31, Fri Apr 2:
Flow analysis.
Read: OOTS Chapter 3-5,
Linear-time subtransitive control flow analysis,
Lecture Note 6.
|
7.
|
Mon Apr 5, Wed Apr 7, Fri Apr 9:
Software obfuscation and watermarking.
Read:
Manufactoring cheap, resilient, and stealthy opaque constructs
and
Software Watermarking: Models and Dynamic Embeddings.
|
8.
|
Mon Apr 26:
Typed assembly languages.
There will not be homework or exam questions about this topic.
Read:
From System F to Typed Assembly Language, and
An overview of Types in Compilation.
|
9.
|
Wed Apr 28:
Questions and answers.
|