TU Delft
Education Type
Education print this page print this page     
2007/2008 Electrical Engineering, Mathematics and Computer Science Master Computer Science
Program Transformation & Generation
Responsible Instructor
Name E-mail
Prof.dr. E. Visser    E.Visser@tudelft.nl
Contact Hours / Week x/x/x/x
0/0/2/2 Pract. 1 dagdeel pw. 2e semester
Education Period
Exam Period
Course Language
Expected prior knowledge
good working knowledge of programming languages, basic knowledge of compiler construction
Course Contents
Program transformation and generation 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 (also known as meta-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 program transformation and generation tools. The main vehicle for this study is the Stratego/XT language and toolset, which provides high-level languages for implementing program transformation systems based on the paradigm of term rewriting with programmable rewriting strategies. The techniques are illustrated with a number of applications for transformation and generation of Java programs. The course comes with a lab consisting of several assignments in which a number of transformations and generations are implemented.
Study Goals
This course studies the principles, techniques and limitations of
program transformation and generation tools.
Education Method
lectures and lab assignments
written exam and grades for lab assignments