1.
|
Mon Jan 7, Wed Jan 9,
Wed Jan 23:
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 Jan 28, Wed Jan 30,
Mon Feb 4:
Interpreters, operational semantics.
Read: EOPL Chapter 4, 5, 7,
Lecture Note 2.
|
3.
|
Wed Feb 6,
Mon Feb 11, Wed Feb 13,
Mon Feb 18, Wed Feb 20,
Mon Feb 25:
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.
|
Wed Feb 27,
Mon Mar 4, Wed Mar 6:
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 18, Wed Mar 20,
Wed Mar 27:
Flow analysis.
Read: OOTS Chapter 3-5,
Linear-time subtransitive control flow analysis,
Type-Safe Method Inlining,
Lecture Note 5.
|
6.
|
Mon Apr 1, Wed Apr 3:
Secure information flow.
Read:
Confined types,
Encapsulating Objects with Confined Types.
OVM.
|
7.
|
Mon Apr 8, Wed Apr 10:
Software obfuscation and watermarking.
Read:
Manufactoring cheap, resilient, and stealthy opaque constructs,
Software Watermarking: Models and Dynamic Embeddings, and
Experience with Software Watermarking.
|
8.
|
Wed Apr 24:
Questions and answers.
|