| Week |
Topic |
Literature |
06-09
  |
Overall activity plan for the first 4 weeks:
- Reading the paper by Landin [ICVM.1]
- Programming the SECD machine
- Reading the papers by Reynolds [ICVM.4], [ICVM.5]
- Programming the interpreters
- Reading the lecture notes by Felleisen and Flatt
(mostly Chap. 8), [ICVM.3]
|
|
06
5/02 |
- Handout: The mechanical evaluation of expressions
- Evaluator source code
|
[ICVM.1] |
07
12/02 |
- Handout: Definitional Interpreters for Higher-Order
Programming Languages
- Handout: Definitional Interpreters Revisited
- Handout: Programming Languages and Lambda Calculi
|
[ICVM.3] [ICVM.4] [ICVM.5] |
08
19/2 |
- Fixed point operators (ex. 5 is related
to this topic)
- Continuation passing style (ex. 6 is
related to this topic)
- String parsing, an example used to illustrate continuation
passing style and defunctionalization (see [ICVM.6]).
- Handout: Call-by-Name, Call-by-Value and the
λ-Calculus ([ICVM.7]).
|
[ICVM.6] [ICVM.7] |
09
26/2 |
Within the overall topic of From interpreter to compiler, the
following areas were covered:
- Code generation, based on Scheme macros
- Quasi quote and unqoute
- Factorization - expressing the common structure of an
interpreter and a compiler
|
[ICVM.8] |
10
5/3 |
- Representation of recursion in interpreters
- Analysis of the interpreters in the paper by Reynolds
|
|
11
12/3 |
- One-pass translators
- in continuation passing style
- in monadic style
- Short-cut evaluation
|
|
12
19/3 |
- A New One-Pass Transformation into Monadic Normal Form
([ICVM.10])
- A First-Order One-Pass CPS Transformation
([ICVM.11])
- CPS Transformation of Beta-Redexes
([ICVM.12], covered only by a quick survey)
|
[ICVM.10] [ICVM.11] |
13
26/3 |
Lectures cancelled, so you have extra time to work on
assignments :-) |
|
14
2/4 |
Abstract machines for lambda languages with call/cc
- Implementation strategies
- CPS
- 2nd class continuations
- 1st class continuations
|
[ICVM.13] |
15
9/4 |
- From lambda calculus to object-orientation
- An object-oriented interpreter
|
|
16
16/4 |
No lectures: Easter holiday |
|
17
23/4 |
|
|
18
30/4 |
- From interpreter to generic language processor, with a small
imperative language. Source code:
imp.sml
- The small object-oriented language st presented
in week 15
(source code: st.sml)
was covered in more depth by discussing some examples:
- pgms.st
- some example programs in st
- ex1.sml
- SML expressions for some other st programs
- ex1-prog5.run
- output running ex1.sml:prog5, which is the
same as the last program in
pgms.st
- An extended description of the method illustrated by
imp.sml can be found in
RS-96-13.
This extended version includes block structure,
procedures, and subtyping.
|
|
19
7/5 |
No lectures: Open Day |
|
20
14/5 |
- The lectures are based on:
From Interpreter to Compiler and Virtual Machine:
A Functional Derivation,
RS-03-14, ([ICVM.14])
- Helpful background information:
A Functional Correspondence between Evaluators and
Abstract Machines,
RS-03-13
|
[ICVM.14] |