Course Schedule

Pt04
The course will be thaught in February, March and April 2005.

This is the planned schedule for the course. Adjustments might be made along the way so check this page regularly.

Participants are expected to attend all lectures.

Chapters from the lecture notes Strategies for Program Transformation will be handed out in advance of the course. Additional papers may be handed out during the course. The number of copies will be based on the number of students registered for the course.

Part of the lecture will be dedicated to making exercises.

In the first part of the course, each lecture is followed by a lab session with exercises about that lecture. These exercises should be handed in before the next lecture. Lectures are given by Eelco Visser unless otherwise indicated.

Week 6

Lecture 1 : Introduction

  • Tuesday, February 8, 9:00 - 10:45
  • Topics:
    • What is program transformation?
    • A taxonomy of program transformation
    • An overview of program transformation with Stratego/XT
  • Book:PartI

Lab

Lecture 2 : Infrastructure for Program Transformation Systems

  • Thursday, February 10, 13:15 - 15:00
  • Lecturer: Martin Bravenboer
  • Topics:
    • Syntax definition
    • Concrete and abstract syntax trees
    • Terms
    • Parsing
    • Unparsing
    • Pretty-printing
  • Book:ProgramRepresentation (Chapter 4)

Lab

Week 7

Lecture 3 : Pattern Matching and Strategy Definitions

  • Tuesday, February 15, 9:00
  • Topics:
    • Term patterns
    • Substitution
    • Pattern matching and pattern instantiation
    • Sequential composition
    • Term variable scope
    • Rewrite rules and other syntactic abstractions
    • Strategy definitions
    • Combinators for composing strategies
    • Choice
    • Recursion
  • Book:FirstClassPatternMatching (Chapter 9)

Lab

Lecture 4 : Term Traversal

  • Thursday, February 17, 13:15
  • Topics:
    • Congruence operators
    • Data-type specific traversal
    • Generic traversal
    • Rewriting strategies
    • Applications: format checking, simplifying expressions
  • Book:InControlOfRewriting
  • Book:ComposingStrategies (Chapter 8)
  • Book:GenericTraversalStrategies (Chapter 10)

Lab

Week 8

Lecture 5 : Type Unifying Strategies

  • Tuesday, February 22, 9:00
  • Topics:
    • Generic term deconstruction
    • Type unifying strategies
    • Collect and friends
    • Applications: free variables and other analyses
  • Book:GenericTraversalStrategies (Chapter 10)
  • Paper: Language Independent Traversals for Program Transformation

Lab

  • tba

Lecture 6 : Composing Transformation Systems

  • Thursday, February 24, 13:15
  • Topics:
    • Compilation by transformation
    • Transformation tool composition
Lab

  • tba

Week 9

Lecture 7 : Scoped Dynamic Rewrite Rules (1)

  • Tuesday, March 1, 9:00
  • Topics:
    • Context-sensitive rewriting
    • Introduction and use of dynamic rules
    • Dynamic rule scope
    • Extended dynamic rules
    • Applications: renaming, inlining, evaluation
  • Article: Program Transformation with Scoped Dynamic Rewrite Rules

Lab

  • tba

Lecture 8 : Scoped Dynamic Rewrite Rules (2)

  • Thursday, March 3, 13:15
  • Topics:
    • Rule intersection and union
    • Dependent dynamic rules
    • Constant folding
    • Constant propagation
    • Copy propagation
    • Common-subexpression elimination
  • Article: Composing Source-to-Source Data-Flow Transformations with Rewriting Strategies and Dependent Dynamic Rewrite Rules

  • Extra: announcing projects

Week 10 (Houston)

Lecture 9 : Concrete Syntax

  • Tuesday, March 8, 9:00
  • Lecturer: Martin Bravenboer
  • Topics
    • Concrete vs abstract syntax
    • String-based vs structured generation and transformation
    • Embedding concrete syntax in a meta-language
    • Rewrite rules with concrete syntax
    • Application: instrumentation, template-based generation
  • Book: Chapter 6

Lab

  • Simplification rules with concrete syntax
  • tba

Lecture 10 : Domain-Specific Language Embeddings

  • Thursday, March 10, 13:15
  • Lecturer: Martin Bravenboer
  • Topics:
    • Embedding of domain-specific languages
    • Applications: Java Swul, Regexp, ...
  • Article: Concrete syntax for objects

Week 11

Lecture 11 : Introduction to Partial Evaluation

  • Tuesday, March 15, 9:00
  • Topics:
    • Concepts of partial evaluation
    • Program specialization or partial evaluation
    • Binding time
    • Binding time annotations
    • Specialization
    • Binding time analysis
    • Function specialization
  • Read: chapters from PE book

Lecture 12 : Online Partial Evaluation

  • Thursday, March 17, 13:15
  • Topics:
    • Implementation of partial evaluation
    • Combining inlining and constant propagation

Week 12

Lecture 13 : Offline Partial Evaluation

  • Tuesday, March 22, 9:00
  • Topics:
    • Implementation of partial evaluation
    • Separate binding-time analysis

No lecture on Thursday, March 24

Week 13

No lecture on Tuesday, March 29

Lecture 14 : Project Review

  • Thursday, March 31, 13:15
    • Review of ongoing projects

Week 14 (ETAPS)

No lecture on Tuesday, April 5

Lecture 15 : Infrastructure for Java Transformation Systems

  • Tuesday, April 7, 13:15
  • Lecturer: Martin Bravenboer
  • Topics:
    • Infrastructure for Java Transformations
    • Disambiguation of Concrete Syntax

Week 15

Lecture 16 : Project review

  • Tuesday, April 12, 9:00
    • Review of ongoing projects

Lecture 17 : Project Presentations

  • Thursday, April 14, 13:15 - 17:00
  • Topics:
    • Presentations of projects

Week 16 (Dagstuhl)

Exam

Lab: Submit project