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

Lecture 2 : Infrastructure for Program Transformation Systems

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

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, 13:15
  • Lecturer: Martin Bravenboer
  • Topics:
    • Introduction to the Dryad Library

Week 9

Lecture 7 : Constant Propagation

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
      • Extended dynamic rules
  • Read

Week 10

Lecture 9 : Common-Subexpression Elimination

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

  • no lectures in 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:
    • Aspect weaving

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