CAS 761: Generative Programming (Winter 2024)

Class: Monday, Thursday 13:30-15:00, usual CAS grad room.

The course will cover, through discussion and readings of important papers in the area, the related topics of generative programming, Domain Specific Languages, generic programming and program families. 60% of the mark will be given for leading class discussion of each assigned paper, and 40% on a small project due at the end of the course.

In more detail about the papers:

Also useful is this glossary of terminology around generative programming.

Papers that will be presented:

Papers that may be picked from. The first 3 overviews and 'finally tagless' (technique) will be assuredly done.


Meta-Programming Techniques

Related Implementation Techniques

Frameworks and Language Workbenches

Analysis and Transformation

Software Engineering and Software Development

Examples of note


Staging, Partial Evaluation, Normalization by Evaluation

Concepts, Theories, Modules

Generic Programming


While macros have a long history, the modern approach is best exemplified by the Racket language. So the papers for these draws from that community. And lest it be thought that only Racket has modern macros, there is also this gem on macros in Lean:


Tactics, as used in proof assistants, are really proof-generating (meta) programs. Engineering of tactics is quite delicate.


Note that some of the links above are to the author's private copy of the paper, and may not represent the final typesetting of the article by the publisher. Links to the published version will be added too, as time permits.

Procedural Generation

In previous years, the following papers were also read, because several people in the class were doing related research.