1.
|
Mon Jan 10, Wed Jan 12, Fri Jan 14,
Wed Jan 19, Fri Jan 21,
Mon Jan 24:
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.
|
Wed Feb 2, Fri Feb 4,
Mon Feb 7, Mon Feb 14:
Interpreters, operational semantics.
Read: EOPL Chapter 4, 5, 7,
Lecture Note 2.
|
3.
|
Wed Feb 16, Fri Feb 18,
Mon Feb 21, Wed Feb 23, Fri Feb 25,
Mon Feb 28, Wed Mar 1, Fri Mar 3:
Type systems, type soundness, decision procedure for subtyping,
type inference, principal types,
typed assembly languages.
Read:
Efficient recursive subtyping,
A Simple Algorithm and Proof for Type Inference,
From System F to Typed Assembly Language (Sect. 1,6).
Lecture Note 3.
|
4.
|
Mon Mar 6, Wed Mar 8, Fri Mar 10:
Continuation-passing-style transformation, closure conversion.
Read: EOPL Chapters 8.1-8.5, 9.1, 10.1-10.2,
Lecture Note 4.
|
5.
|
Fri Mar 24,
Mon Mar 27, Wed Mar 29, Fri Mar 31,
Mon Apr 3:
Flow analysis.
Read: OOTS Chapter 3-5,
Linear-time subtransitive control flow analysis,
Lecture Note 5.
|
6.
|
Wed Apr 5,
Mon Apr 10:
Secure information flow.
Read:
Confined types.
|
7.
|
Wed Apr 12, Fri Apr 14,
Mon Apr 17:
Software obfuscation and watermarking.
Read:
Manufactoring cheap, resilient, and stealthy opaque constructs
and
Software Watermarking: Models and Dynamic Embeddings,
transparencies.
|
8.
|
Fri Apr 28:
Questions and answers.
|