6 ECTS credits
150 h study time

Offer 2 with catalog number 4013501FNR for all 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
Taught in
English
Faculty
Faculty of Science and Bio-engineering 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 aims to expose students to meta-programming techniques and reflection.The course provides a historical perspective of meta-programming and reflection, and studies a number of compile-time and run time techniques for meta-programming, making an emphasis on the principles and techniques of reflection in object-oriented languages. To this end, the course discusses two seminal languages in the context of meta-programming and reflection: Smalltalk and CLOS. The course first discusses the object 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) : Slides
Digital course material (Required) : Course Notes, Research papers, tutorial, or book chapters providing the material for the regular lectures
Additional info

The course content is new from academic year 2017/2018. 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.

All the information concerning this course can be found on the course space at the learning platform together with:
- Slides
- 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 advanced modularization techniques in object-oriented programming beyond inheritance and traits, namely, aspect-oriented programming, and it exposes students to an OOP model which departures from traditional messages passing model, namely CLOS.

Application of Knowledge and Understanding: Students should have acquired concrete meta-programming skills which are put in practice in the implementation of small programs (eg. prototyping object-oriented features like multiple inheritance,  before/after/around advice, etc.) 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 students should motivate their 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 (50%)
- Written essay (50%)

Through the semester,  programming projects 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. The projects will be orally defended in which the student is expected to explain their project 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 students are expected to hand in a written essay analysing the meta-programming facilities of two programming languages and comparing them, and participate in an oral exam. The 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.
 

Academic context

This offer is part of the following study plans:
Master of Applied Computer Science: Default track (only offered in Dutch)
Master in Applied Sciences and Engineering: Computer Science: Profile Artificial Intelligence (only offered in Dutch)
Master in Applied Sciences and Engineering: Computer Science: Profile Multimedia (only offered in Dutch)
Master in Applied Sciences and Engineering: Computer Science: Profile Software Languages and Software Engineering (only offered in Dutch)
Master in Applied Sciences and Engineering: Computer Science: Profile Web & Information Systems (only offered in Dutch)
Master of Applied Sciences and Engineering: Computer Science: Profile Artificial Intelligence
Master of Applied Sciences and Engineering: Computer Science: Profile Multimedia
Master of Applied Sciences and Engineering: Computer Science: Profile Software Languages and Software Engineering
Master of Applied Sciences and Engineering: Computer Science: Profile Web & Information Systems