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
|
|
|