| Moon's day | Woden' s day | Frigga's day |
|---|
|
Jan 13 |
|
Prolegomena. Introduction; programming languages and abstraction; paradigms Slides |
|
|
|
|
| |
|
Jan 22 |
|
Warm-up. Grammars etc Slides |
|
|
|
Jan 24 |
|
Parsing algorithms |
|
|
|
Jan 27 |
|
More on parsing algorithms Slides |
|
|
|
Jan 29 |
|
Concrete and abstract syntax; parser generators Slides |
|
|
|
Jan 31 |
|
The Visitor pattern |
Project 1; due 2/10
|
|
|
Feb 3 |
|
Imperative features. Types and type-checking |
Project 2; due 2/10
|
|
|
Feb 5 |
|
Formal semantics and interpretation |
|
|
|
Feb 7 |
|
Features: switch statements |
|
|
|
Feb 10 |
|
Features: scope, control flow Slides |
Projects 1 and 2 due. Project 3; due 2/21
|
|
|
|
Feb 14 |
|
More on procedures |
|
|
| |
|
Feb 19 |
|
Dynamic memory and pointers |
|
|
|
Feb 21 |
|
Arrays |
Project 3 due. Project 4; due 2/26
|
|
| |
|
Feb 26 |
|
Structs |
Project 4 due. Project 5; due 3/24
|
|
|
Feb 28 |
|
Back to procedures: parameter passing modes |
|
|
| |
|
Mar 5 |
|
Interlude. History of programming languages Slides |
|
|
|
Mar 7 |
|
More history of programming languages |
|
|
| |
|
|
| |
|
Mar 19 |
|
The lambda-calculus |
|
|
|
Mar 21 |
|
More lambda-calculus |
|
|
| |
|
Mar 26 |
|
Classfiles and the JVM |
Project 5 due. Project 6; due 4/4
|
|
|
Mar 28 |
|
Object-oriented features. Objects and classes |
|
|
|
Mar 31 |
|
Types in OO; polymorphism |
|
|
|
Apr 2 |
|
Type-checking in OOP |
|
|
|
Apr 4 |
|
Inheritance |
Project 6 due
|
|
|
Apr 7 |
|
Alternate formulations of OO |
|
|
|
Apr 9 |
|
More alternate formulations of OO |
Project 7, due 4/25
|
|
|
Apr 11 |
|
Functional features. Bootstrapping a functional language |
|
|
|
Apr 14 |
|
More bootstrapping |
Project 8; due 4/30
|
|
|
Apr 16 |
|
Efficiency in a functional language; tail form |
|
|
|
|
Apr 21 |
|
Continuation-passing style |
|
|
|
Apr 23 |
|
Types in a functional language |
|
|
|
Apr 25 |
|
Type soundness proofs |
Project 7 due
|
|
|
Apr 28 |
|
More type soundness proofs |
|
|
|
Apr 30 |
|
Epilogue. "Growing a Language" |
Project 8 due
|
|
|