This course is a graduate seminar on metaprogramming—programs that manipulate
other programs. Primarily, we will focus on reading papers, both historical and
modern, that treat a broad range of metaprogramming topics, from C++ templates
to Scheme macros to Scala DSLs. Students will be expected to present research
papers to the class, write programs with a variety of languages and systems,
and perhaps complete a semester project.
Prerequisites: This course has no official university prerequisites,
however, permission from the instructor is required. You will need to have
taken B521, and to be concurrently taking B522, or the equivalent.