TU Delft
Education Type
Education print this page print this page     
2009/2010 Electrical Engineering, Mathematics and Computer Science Master Computer Science
Seminar Metaprogramming
Responsible Instructor
Name E-mail
Prof.dr. E. Visser    E.Visser@tudelft.nl
Contact Hours / Week x/x/x/x
Education Period
Start Education
Exam Period
Course Language
Expected prior knowledge
- Language and Automata Theory
- Compiler Construction
- Model-Driven Software Development
Course Contents
Meta-programming is the discipline of software engineering that
considers programs as data. That is, programs are data objects that
are subject to manipulation by other programs. This allows the
automation of tasks traditionally performed 'manually' by
programmers. Applications are everywhere in software engineering.

Traditional and successful applications include compilers that
translate high-level programs to implementations in machine code, and
parser generators that generate a parser from a context-free
grammar. (We assume students to have basic knowledge about these
topics from a previous course on compiler construction.) Recently, a
number of other applications are becoming increasingly important in
software engineering. Generation of software from domain-specific
languages provides an increase in productivity through language
constructs that concisely express notions in the application
domain. Refactoring tools automatically perform design improvements
that are specified by the developer ensuring safety and completeness
of the change. Code instrumentation and aspect weaving allow
crosscutting concerns (e.g., logging, tracing, synchronization) to be
expressed separately and implemented by insertion into the source
code. Bug detection tools such as FindBugs analyse the source code to
detect patterns that are indicative of tyical bugs made by
developers. Software metrics tools express quality properties of a
code base in numbers that are computed by inspecting the source code.

This course studies the principles, techniques and limitations of
meta-programming by means of a literature study, seminar
presentations, and practical experiments.
Study Goals
This course studies the principles and techniques of meta-programming
by means of a literature study and practical experiments.
Education Method
Seminar (presentations by students), literature study, and lab

You will make use of the researchr.org web application to create a
survey of (selected parts of) the meta-programming field.
Literature and Study Materials
Papers from the scientific and technical literature.
Paper with literature survey, presentation, project report