| Moon's day | Woden' s day | Frigga's day |
|---|
|
Jan 14 |
|
Introduction and history Slides |
|
|
|
|
Jan 18 |
|
Syntax. Formal languages and the compilation process [2.1] |
|
|
| |
|
Jan 23 |
|
Syntax; representing a language in Java and ML [2.2] Slides |
proj 1, due 1/30
|
|
|
|
Jan 28 |
|
More on parsing algorithms; parser generators Slides |
|
|
|
|
Feb 1 |
|
Abstract syntax [2.3] |
proj 3, due 2/8
|
|
|
Feb 4 |
|
Semantics. Types [3.1] |
|
|
|
|
|
Feb 11 |
|
State transformations, operational semantics [3.(2-3)] |
proj 4, due 2/20
|
|
|
Feb 13 |
|
Axiomatic semantics and denotational semantics [3.(4-5)] Slides |
|
|
|
Feb 15 |
|
Imperative programming. Imperative languages [4.(1-4)] |
|
|
| |
|
|
|
Feb 25 |
|
Memory issues Run-time memory [5.(1-2.2)] |
|
|
|
Feb 27 |
|
Call and return [5.2.3] |
|
|
|
|
Mar 3 |
|
Structs and semantics [5.(5-6)] Slides |
|
|
|
|
Mar 7 |
|
Garbage collection [5.7] |
|
|
| |
|
|
| |
|
|
|
Mar 24 |
|
Object-oriented programming. Introduction to OO [7.1, 7.2.(1-2)] Slides |
proj 7, due 3/31
|
|
|
Mar 26 |
|
Type checking in OO |
|
|
|
Mar 28 |
|
Polymorphism [7.2.(5-6)] |
|
|
| |
|
|
Apr 4 |
|
OO without classes Slides |
|
|
|
Apr 7 |
|
Functional programming. Lambda calculus [8.1] For Wed: [ps] [pdf] |
|
|
|
Apr 9 |
|
More lambda calculus |
proj 9, due 4/23
|
|
|
Apr 11 |
|
Constructing a functional language Slides |
|
|
|
Apr 14 |
|
Recursion and lists |
|
|
|
Apr 16 |
|
Types in a functional language Slides |
|
|
|
Apr 18 |
|
Type-soundness proofs |
|
|
|
Apr 21 |
|
Finishing type-soundness proofs |
|
|
|
Apr 23 |
|
Tail form / continuation passing style |
|
|
|
Apr 25 |
|
Compilation. Compiling Jay |
proj 10, due 5/2
|
|
|
Apr 28 |
|
Classfiles and the JVM instruction set |
|
|
|
Apr 30 |
|
"Growing a Language" |
|
|
|