1.
|
Thu Jan 11,
Tue Jan 16, Thu Jan 18,
Tue Jan 30:
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.
|
Thu Feb 1,
Tue Feb 6, Thu Feb 8:
Interpreters, operational semantics.
Read: EOPL Chapter 4, 5, 7,
Lecture Note 2.
|
3.
|
Tue Feb 13, Thu Feb 15,
Tue Feb 20, Thu Feb 22,
Tue Feb 27, Thu Mar 1:
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.
|
Tue Mar 6, Thu Mar 8:
Continuation-passing-style transformation, closure conversion.
Read: EOPL Chapters 8.1-8.5, 9.1, 10.1-10.2,
Lecture Note 4.
|
5.
|
Tue Mar 20, Thu Mar 22,
Tue Mar 27, Thu Mar 29:
Flow analysis.
Read: OOTS Chapter 3-5,
Linear-time subtransitive control flow analysis,
Lecture Note 5.
|
6.
|
Tue Apr 3, Thu Apr 5:
Secure information flow.
Read:
Confined types,
Slides.
Slides on the OVM.
OVM.tar.
OVM tips.
|
7.
|
Tue Apr 10, Thu Apr 12:
Software obfuscation and watermarking.
Read:
Manufactoring cheap, resilient, and stealthy opaque constructs,
Software Watermarking: Models and Dynamic Embeddings, and
Experience with Software Watermarking.
|
8.
|
Thu Apr 26:
Questions and answers.
|