CS 565 Fall 1997 Lectures

CS 565 Lectures

Aug 25 - Oct  3:  Programming style and the meaning of programs.
Oct  6 - Dec 12:  Type systems and control-flow analysis.
Mon Aug 25, Wed Aug 27, Fri Aug 29:
Functional programming in Scheme.
Read: EOPL Chapters 1-2, 3.4-3.6.
Lecture note 1 (dvi).
Homework due on Thu Sep 4: Scheme programming.

Wed Sep 3, Fri Sep 5:
Object-oriented programming in Java.
Read: Any good book on Java.
Lecture note 2 (dvi).
Homework due on Thu Sep 11: Java programming.

Mon Sep 8, Wed Sep 10, Fri Sep 12:
A mostly object-oriented programming style in Scheme.
Read: EOPL Chapter 4 (as basis for the homework).
Lecture note 3 (dvi).
Homework due on Thu Sep 18: Implement beta-reduction.

Mon Sep 15, Wed Sep 17, Fri Sep 19:
A mostly functional programming style in Java, with the help of design patterns.
Read: The lecture notes.
Lecture note 4 (dvi). Material on the Visitor pattern will be distributed in hardcopy.
Homework due on Thu Sep 25: Implement a translator of simple Scheme programs into Java.

Mon Sep 22, Wed Sep 24, Fri Sep 26:
An interpreter, written in Scheme, for the core of Java.
Read: EOPL Chapter 5, 7.
Lecture note 5 (dvi).
Homework due on Thu Oct 2: Extend the interpreter.

Mon Sep 29, Wed Oct 1, Fri Oct 3:
A translation of Scheme programs to simple Java programs via CPS-conversion.
Read: EOPL Chapters 8.1-8.5, 9.1-9.2, 10.1-10.2.
Lecture note 6 (dvi).
Homework due on Thu Oct 9: Implement CPS-conversion.

Mon Oct 6, Wed Oct 8, Fri Oct 10:
Simple types for the core of Scheme.
Read: The lecture note.
Lecture note 7 (dvi).
Homework due on Thu Oct 16: Implement type inference.

Wed Oct 15, Fri Oct 17:
Structural subtyping and recursive types.
Read: ``Efficient recursive subtyping.''
Lecture note 8 (dvi).
Homework due on Thu Oct 23: Implement the decision procedure for subtyping.

Mon Oct 27, Wed Oct 29, Fri Oct 31:
The Java type system.
Read: OOTS Chapter 1-4.
Lecture note 9 (dvi).
Homework due on Thu Nov 6: Implement a simple Java type checker.

Mon Nov 3, Wed Nov 5, Fri Nov 7:
Control-flow analysis.
Read: OOTS chapter 5.
Lecture note 10 (dvi).
Homework due on Thu Nov 13: Implement a constraint solver.

Wed Dec 3, Fri Dec 5:
Fast control-flow analysis for a simply-typed core of Scheme.
Read: The lecture note.
Lecture note 11.
Homework due on Thu Dec 11: Implement the fast control-flow analysis.

Mon Dec 8, Fri Dec 12:
Equivalences between type systems and control-flow analysis.
Read: ``A type system equivalent to flow analysis.''

Wed Dec 10:
Flow Analysis of Java Bytecodes.
Special Lecture by Tony Hosking, Purdue University.