WebHome
Education Page
Description
Schedule
Slides
Assignments
Center
Master Program
Center
Home
Courses
People
Projects
Page
Edit Page
Rename Page
Attach File
Printable
Wiki Source
More ...
Web
Recent Changes
Notify Service
News
Page Index
Search
More ...
Wiki
About TWiki
Text Formatting
Registration
Change Password
Reset Password
Users
Groups
Log In
or
Register
Course Description
Pt03
----+++ Description Producing software means transforming a specification of the requirements into an implementation. Automating this process, i.e., generating an implementation from a specification, in ever new ways is the goal of software technology. In several areas this automatization has already been successful. Think of a compiler that translates `specifications' in a high-level programming language to implementations in machine code, or parser generators that generate a parser from a context-free grammar. More recently, program transformation techniques are used to implement compiler optimizations, refactoring tools, aspect weavers, and reverse engineering tools. In this course you learn to understand and apply program transformation techniques used in software generators and study applications of program transformation such as partial evaluation, refactoring, desugaring, and aspect weaving. ----+++ Topics The following items roughly correspond to material for a lecture (or two). * Taxonomy of program transformation (introduction) Implementation techniques * Term rewriting * Rewriting strategies * Dynamic rules * Concrete syntax Applications * Algebraic simplification * Desugaring * Data-flow optimization * Specialization / partial evaluation <!-- * Instruction selection * Compilation by transformation (GHC `simplifier') * Fusion (deforestation) * Aspect weaving * Refactoring * Slicing * Decompilation (goto elimination) * Visualization --> ----+++ Concepts The following concepts play an important role in this course. They are discussed as part of the main topics. * Manipulation of programs as data * Source to source transformation * Algebraic equalities on program expressions * Substitution * Pattern matching * Unification * Variable binding ----+++ Material * Lecture notes on _Strategies for Program Transformation_ * Lab: apply various kinds of program transformations ----+++ Lecturer * [[Visser.WebHome][Eelco Visser]] ----+++ History This course has evolved from * Software Generation (1999, 2000, 2001, 2001)