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