CAS 761: Generative Programming

Class: Tuesday 10:30-12:00, ITB 222.

The course will cover, through discussion and readings of important papers in the area, the related topics of generative programming, Domain Specific Languages, generic programming and program families. 60% of the mark will be given for leading class discussion of each assigned paper, and 40% on a small project.

The papers to read (with discussant in parenthesis) are:

  1. Overview of generative software development, K. Czarnecki. (Jacques)
  2. A gentle introduction to multi-stage programming, W. Taha (Nathan)
  3. DSL implementation in MetaOCaml, Template Haskell and C++, Czarnecki, K., J. O'Donnell, J. Striegnitz, and W. Taha (Christian).
  4. An Extended Comparative Study of Language Support for Generic Programming, R. Garcia, J. Jaarvi, J. Siek, A. Lumsdaine, J. Willcock. (Mani)
  5. Tecton: A Framework for Specifying and Verifying Generic System Components, D. Kapur, D.R. Musser.(Pooya)
  6. paper: Typed Tagless Final Interpreters (only accessible at McMaster); the course notes are freely downloadable. By Oleg Kiselyov. (Bingzhou
  7. Finally tagless, partially evaluation: tagless staged interpreters for simpler typed languages, J. Carette, O. Kiselyov and C-c. Shan (Lijun and me)
  8. Mechanizing the Development of Software, D. Smith (Yuhang)
  9. A software engineering experiment in software component generation, R. Kieburtz, L. McKinney, J. Bell, J. Hook, A. Kotov, J. Lewis, D. Olive, T. Sheard, I. Smith, L. Walton.(Christian)
  10. Program Generation, Termination and Binding-time Analysis N.D. Jones and A.J. Glenstrup. (Nathan)
  11. Design of Concept Libraries for C++ A. Sutton and B. Stroustrup. (Manni)
  12. Multi-stage programming with Functors and Monads: eliminating abstraction overhead from generic code, J.Carette and O. Kiselyov. (Pooya twice)
  13. OMeta: an Object-Oriented Language for Pattern Matching, A. Warth and I. Piumarta. (Bianca)
  14. When and How to Develop Domain-Specific Languages, M. Mernik , J. Heering , A.M. Sloane(Lijun)
  15. Declaratively Programming the Mobile Web with Mobl, Zef Hemel, Eelco Visser.(Nathan)
  16. Spiral, M. PĆ¼schel, F. Franchetti, Y. Voronenko. (Mani).
  17. Design Patterns as Higher-Order Datatype-Generic Programs, J. Gibbons. (Christian)
Note that some of the links above are to the author's private copy of the paper, and may not represent the final typesetting of the article by the publisher. Links to the published version will be added too, as time permits.

Here are some additional papers in the area. Some will make the reading list, but not all.

Also useful is this glossary of terminology around generative programming. Further references can be found on the web page for a fall 2002 grad course by W. Taha.

Probably need to add some papers on FFTW, ATLAS, SPIRAL, etc.