Capita Selecta of Software Engineering
Hot topics: Capita Selecta of Software Engineering
  Navigation.
  • Main
  • Coordinates
  • CSSE
  • ContextL
  • ContextJ
  •   Capita Selecta of Software Engineering
  • Important
    I don't work for the VUB anymore. Bruno De Fraine is the new assistant for the course. Please submit your assignment to him. Viviane Jonckers remains the professor in charge of the course.

  • Organization
    The Capita Selecta of Software Engineering is a collaboration between KUL, UA and VUB. You have to attend the lessons and do the assignments of all three parts. There is information about the KUL part and information about the UA part elsewhere. Below you can find the information about the VUB part.

  • Abstract
    Metaprogramming a reflection in object-oriented languages Programs are data that can be treated like any other data. This is an essential property of software because it allows computers to load, manipulate and store programs apart from just executing them. Lisp is among the few programming languages that have incorporated the treatment of programs as data by allowing direct access to representations of programs and by providing straightforward means to switch between programs and their representation. This enables us to perform symbolic computations on such representations, i.e., meta-level computations on programs without executing them. This has been used in various Lisp dialects, for example in the form of metacircular evaluators, reflection, macros and metaobject protocols, as a basis for experimenting with programming language constructs in general and for implementing domain-specific languages in particular. Some of these ideas also found their ways into mainstream programing languages, for example in the form of bytecode transformation tools for Java, or as aspect-oriented programming.

    We will take a look at those different ways of metaprogramming. We will especially focus on the way Common Lisp and Java provide these concepts. Common Lisp is a programming language that provides abstractions for imperative, functional and object-oriented programming, and supports metaprogramming by way of macros and a metaobject protocol. Java provides mostly object-oriented facilities, and provides support for metaprogramming as well, although in less obvious ways. A good understanding of class-based OOP is required. Experience with Lisp is not required.


  • Schedule
    Please find the schedule for the VUB part here. The room is in building F on Campus Etterbeek.
    • Monday, October 25, 2010, 14:00 - 18:00, room F.5.203
    • Monday, November 8, 2010, 14:00 - 18:00, room F.5.203
    Check the websites for the KUL and UA parts for the rest of the schedule.


  • Assignments
    There are two assignments for this part of the course:
    • One is an assignment for all students (including KUL, UA and VUB students), which is a paper of 10 pages, with contents as specified in the first set of slides.
    • The other is an assignment only for the VUB students: Please take a look at the implementation of generic functions developed during the course (in miniclos.zip). Extend this implementation with two of the following three features:
      • before/after/around methods
      • multiple dispatch
      • multiple inheritance
      For more precise information how such features may influence generic functions, see the following links:
    For the first exam session, you have to hand in the first assignment before February 14, 2011. For the second assignment, the deadline for handing in your code is June 13, 2011, after which you have to come to my office to explain your code to me during the exam sessions between June 13, 2011 and June 24, 2011. Details for the second exam session will be provided later.
    Please make all appointments with me via email. Of course, you can decide to hand in your assignments earlier than the given deadlines, and you can also make appointments (for explainig code, for example) earlier during the year.


  • Material


  • Powered by LML!
      (c) 2005 - 2011 Pascal Costanza. Original site design by Antipop.