Course Schedule
Pt
The course will be thaught in February, March and April 2006.
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.
The
Stratego/XT manual is available online.
Additional literature will be made available during the course on the
course literature page.
Lectures are followed by a lab session.
Lectures are given by Eelco Visser unless otherwise indicated.
Week 6
Lab Assignment
Lecture 1 : Introduction and Infrastructure for Program Transformation Systems
- Tuesday, February 7, 9:00 - 10:45
- Lecturers: Eelco Visser and Martin Bravenboer
- Topics:
- Introduction to the course
- Infrastructure for Program Transformation Systems
- Syntax definition
- Concrete and abstract syntax trees
- Terms
- Parsing
- Unparsing
- Pretty-printing
- Read:
Lecture 2 : Infrastructure for Program Transformation Systems
- Thursday, February 9, 13:15 - 15:00
- Lecturer: Martin Bravenboer
- Topics:
- Infrastructure for Program Transformation Systems
- Syntax definition
- Concrete and abstract syntax trees
- Terms
- Parsing
- Unparsing
- Pretty-printing
- Infrastructure for Java Transformation
- Read:
Week 7
Lecture 3 : Making Rewrite Rules: Basic Operations of Term Transformation
- Tuesday, February 14, 9:00-10:45
- Topics:
- Term patterns
- Substitution
- Pattern matching
- Pattern instantiation
- Combinators for composing strategies
- Sequential composition
- Term variable scope
- Choice
- Recursion
- Strategy definitions
- Rewrite rules
- Build-apply
- Apply-match
- Other syntactic abstractions
- Read
Lecture 4 : Term Traversal Strategies
- Thursday, February 16, 13:15-15:00
- Topics:
- Traversal combinators
- Congruence operators
- Data-type specific traversal
- Generic traversal
- Applications
- Rewriting strategies
- Format checking
- Simplifying expressions
- Read
Week 8
Lecture 5 : Collecting Strategies
- Tuesday, February 21, 9:00-10:45
- Topics:
- Generic term deconstruction
- Type unifying strategies
- Collect and friends
- Applications: free variables and other analyses
- Read:
Lecture 6 : Binding and Substitution
- Thursday, February 23, 9:00 - 10:45
- Topics:
- Evaluation rules (constant folding)
- Binding and substitution
- Renaming
- Type annotation
- Substitution
- Inlining
- Evaluation strategies
- Dynamic rewrite rules
- Defining, undefining, overriding rules
- Dynamic rule scope
- Read:
- Thursday, February 23, 13:15
- Lecturer: Martin Bravenboer
- Topics:
- Introduction to the Dryad Library
Week 9
Lecture 7 : Constant Propagation
- Tuesday, February 28, 9:00
- Topics:
- Context-sensitive transformations
- Constant propagation
- Data-flow
- Flow-sensitive transformation
- Dynamic rewrite rules
- Defining, undefining, overriding rules
- Dynamic rule scope
- Rule intersection
- Read:
Lecture 8 : Partial Evaluation
- Thursday, March 2, 13:15
- Topics:
- Implementation of partial evaluation
- Online partial evaluation
- Extending constant propagation to functions
- Function specialization
- Combining inlining and constant propagation
- Techniques
- Read
Week 10
Lecture 9 : Common-Subexpression Elimination
- Tuesday, March 7, 9:00
- Topics:
- Context-sensitive transformations
- Copy propagation
- Common-subexpression elimination
- Dynamic rewrite rules
- Extended dynamic rules
- Dependent dynamic rules
- Read:
Lecture 10 : Concrete Object Syntax
- Thursday, March 9, 13:15
- 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
- Read:
Week 11
Lecture 11 : Abstract Interpretation
- Tuesday, March 14, 9:00
- Topics:
- Inferring properties about programs
Extra lab session
- Thursday, March 16, 13:15: lab instead of lecture
Week 12
Week 13
Lecture 12 : Run-time Code Generation
- Thursday, March 28, 9:00
- Topics:
- Composing and compiling code fragments at run-time
Lecture 13 : Domain-Specific Language Embeddings
- Thursday, March 30, 13:15
- Lecturer: Martin Bravenboer
- Topics:
- Embedding DSLs in a general-purpose language
- Syntactic embeddings
- Assimilation of embedded DSL code in host program
- Applications: Java Swul, Regexp
- Read:
Week 14
- Tuesday, April 4, lab instead of lecture
Lecture 14 : Safe Embeddings
- Thursday, April 6, 13:15
- Lecturer: Martin Bravenboer
- Topics:
- Safe SQL and XML embeddings
Week 15
Lecture 15 : Model Transformation
- Tuesday, April 11, 9:00
- Topics:
- Transformations applied to software models
Lecture 16 : Aspect Weaving (subject to changes)
- Thursday, April 13, 13:15
- Topics:
Lecture 17 : Alternative Program Representations (subject to changes)
- Thursday, April 13, 13:15
- Topics:
- Control-flow graphs
- Data-dependence graph
- Static single assignment form
Week 16
Exam
Lab: Submit project