6 ECTS credits
150 h study time

Offer 1 with catalog number 4013500FNW for working students in the 2nd semester at a (F) Master - specialised level.

Semester
2nd semester
Enrollment based on exam contract
Impossible
Grading method
Grading (scale from 0 to 20)
Can retake in second session
Yes
Enrollment Requirements
NOTE: registration for this course is only possible for working students. Day students can register for courses whose code ends with an R. At Inschrijven / studentenadministratie@vub.be you must be registered at the VUB as a working student for the current academic year.
Taught in
English
Faculty
Faculty of Sciences and Bioengineering Sciences
Department
Computer Science
Educational team
Elisa Gonzalez Boix (course titular)
Activities and contact hours
26 contact hours Lecture
26 contact hours Seminar, Exercises or Practicals
150 contact hours Independent or External Form of Study
Course Content

The course introduces the different principles and techniques of meta-programming (i.e. programs that manipulate programs). The course provides a historical perspective of meta-programming and reflection, and exposes students to a number of compile-time and run time techniques for meta-programming, making an emphasis on the principles and techniques of reflection. To this end, the course studies two seminal languages in the context of meta-programming and reflection: Smalltalk and CLOS. The course first discusses the programming models of those languages to then introduce their meta-programming and reflection capabilities. After this, the goal will expose students to more mainstream forms of reflection. An overview of the course contents follows:

 Fundamental concepts of meta-programming and reflection  
-Forms of meta-programming: compile-time, load-time, run-time techniques
-Program representations: from machine code to s-expressions
-Introspection, Intercession, reification

Meta-programming and reflection techniques in Lisp
-Early ad-hoc approaches, PILOT system
-Macros
-3-Lisp

Meta-programming and reflection techniques in Object-Oriented Languages
-SmallTalk
-CLOS

 Mainstream forms of meta-programming and reflection
-Advanced Java meta-programming: annotation processing
-AOSD
-Java dynamic proxies

The course organization consists of:

  • regular lectures

  • lab sessions and mandatory programing assignments

Course material
Digital course material (Required) : Transparencies and papers or book chapters providing the material for the regular lectures
Digital course material (Required) : Research papers
Additional info

Although the topics and agenda is well established, the exact constitution of mainstreams forms of meta-programming and reflection may be subject to modifications depending on the number of students registered and time constraints.

During the lectures, slides will be projected for each chapter. These slides ar made available ahead of time via the course space at the learning platform together with:
- Papers, tutorial or book chapters providing the material for the regular lectures
- Sample code used in the regular lectures where relevant

Learning Outcomes

General competences

Knowledge and Understanding: After completion of a Bachelor degree students have already acquired the basics of meta-programing (mostly studied in the context of interpreters) and object-oriented languages (mostly studied in the context of class-based, statically typed languages). The goal of this course is twofold. First, it introduces them to other advanced techniques for meta-programming and reflection beyond interpreters. The course provides a frame of reference with which students can better understand the different principles and techniques of meta-programming. Within this frame of reference, various models and techniques are explained.  Second it exposes students to exposes students to an object-oriented programming which departures from traditional messages passing model, namely CLOS, and advanced modularization techniques in object-orientation beyond inheritance and traits, namely, aspect-oriented programming.

Application of Knowledge and Understanding: Students should have acquired concrete meta-programming skills which are put in practice in the implementation of small programming projects (eg. prototyping object-oriented features like advising) and that will remain useful beyond the topics studied in this course.

Making Judgements: Students have to be able to able to describe and analyze the facilities for meta-programming and reflection of a language and be able to compare them within the frame of reference. Students should be also able to identify the problem of separation of concerns and how aspect-oriented programming as a technique allows for a clean modularisation of crosscutting concerns.



Communication: Students should communicate clearly about the topics students. This is done by asking students to submit an original essay comparing the meta-programming and reflective capabilities of two programming languages, and engaging them in a discussion during their oral exam.

Learning Skills: After having completed the course, students will acquire a thorough understanding of the principles, techniques, and limitations of meta-programming and reflection. This provides them with a background which is sufficiently general to be able to independently continue the study of modularization techniques for object-oriented languages and advanced meta-programming and reflection techniques.


Grading

The final grade is composed based on the following categories:
PRAC Practical Assignment determines 50% of the final mark.
SELF Paper determines 50% of the final mark.

Within the PRAC Practical Assignment category, the following assignments need to be completed:

  • Programming Projects with a relative weight of 1 which comprises 50% of the final mark.

    Note: The student delivers the implementation of the projects together with a report summarizing made choices. The programming projects will be orally defended in which the student should motivate his design and implementation choices.

Within the SELF Paper category, the following assignments need to be completed:

  • Original essay with a relative weight of 1 which comprises 50% of the final mark.

    Note: The student has to write an original essay which includes a critical analysis of the meta-programming facilities provided by two programming languages and compares them.

Additional info regarding evaluation

The evaluation method is as follows:
- Programming projects with oral defense (50%)
- Written essay (50%)

Through the semester,  two programming assignments are presented with a list of requirements about an end product. Students are expected to complete them individually, and will need to submit their code and a report on their projects justifying made choices and design. The projects will be orally defended in which the student is expected to explain their solution and answer questions about it. Programming projects are graded based on the quality of the submitted documents (both source code and report) and the oral project defense.

At the end of the semester, the knowledge and insights of the student on the different techniques for meta-programming and reflection are tested by means of an original essay.  Students are expected to hand in a written essay analysing the meta-programming facilities of two programming languages and comparing them. The oral exam consists of a presentation on the highlights of the written essay followed by a discussion on its contents. Students need also to be able to answer questions related to topics that were discussed during the course but that may have been omitted from the essay.

Students must hand in their work for each category in order to pass for the course as a whole. Absence in one of the parts implies absence for the entire course. Partial marks for the exam or projects, if the student obtains at least half of the score for this part, are transferred to the second session. Students may not relinquish partial marks.

Allowed unsatisfactory mark
The supplementary Teaching and Examination Regulations of your faculty stipulate whether an allowed unsatisfactory mark for this programme unit is permitted.

Academic context

This offer is part of the following study plans:
Master in Applied Sciences and Engineering: Computer Science: Artificial Intelligence (only offered in Dutch)
Master in Applied Sciences and Engineering: Computer Science: Multimedia (only offered in Dutch)
Master in Applied Sciences and Engineering: Computer Science: Software Languages and Software Engineering (only offered in Dutch)
Master in Applied Sciences and Engineering: Computer Science: Data Management and Analytics (only offered in Dutch)
Master of Applied Sciences and Engineering: Computer Science: Artificial Intelligence
Master of Applied Sciences and Engineering: Computer Science: Multimedia
Master of Applied Sciences and Engineering: Computer Science: Software Languages and Software Engineering
Master of Applied Sciences and Engineering: Computer Science: Data Management and Analytics
Master of Teaching in Science and Technology: computerwetenschappen (120 ECTS, Etterbeek) (only offered in Dutch)