Course Description

Pt04

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

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

History

This course has evolved from

  • Software Generation (1999, 2000, 2001, 2001)