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
Lecture 6 : Composing Transformation Systems
- Thursday, February 24, 13:15
- Topics:
- Compilation by transformation
- Transformation tool composition
Lab
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
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