6 ECTS credits
150 u studietijd

Aanbieding 1 met studiegidsnummer 4013500FNW voor werkstudenten in het 2e semester met een gespecialiseerd master niveau.

Semester
2e semester
Inschrijving onder examencontract
Niet mogelijk
Beoordelingsvoet
Beoordeling (0 tot 20)
2e zittijd mogelijk
Ja
Inschrijvingsvereisten
Dit opleidingsonderdeel is enkel toegankelijk voor werkstudenten.
Onderwijstaal
Engels
Faculteit
Faculteit Wetenschappen en Bio-ingenieurswetensch.
Verantwoordelijke vakgroep
Computerwetenschappen
Onderwijsteam
Elisa Gonzalez Boix (titularis)
Onderdelen en contacturen
26 contacturen Hoorcollege
26 contacturen Werkcolleges, practica en oefeningen
150 contacturen Zelfstudie en externe werkvormen
Inhoud

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

Studiemateriaal
Digitaal cursusmateriaal (Vereist) : Transparencies and papers or book chapters providing the material for the regular lectures
Digitaal cursusmateriaal (Vereist) : Research papers
Bijkomende 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

Leerresultaten

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.


Beoordelingsinformatie

De beoordeling bestaat uit volgende opdrachtcategorieën:
WPO Praktijkopdracht bepaalt 50% van het eindcijfer

ZELF Paper bepaalt 50% van het eindcijfer

Binnen de categorie WPO Praktijkopdracht dient men volgende opdrachten af te werken:

  • Programming Projects met een wegingsfactor 1 en aldus 50% van het totale eindcijfer.

    Toelichting: 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 defend and explain them.

Binnen de categorie ZELF Paper dient men volgende opdrachten af te werken:

  • Original essay met een wegingsfactor 1 en aldus 50% van het totale eindcijfer.

    Toelichting: The student has to write an original essay which includes a critical analysis of the meta-programming facilities provided by a programming language.

Aanvullende info mbt evaluatie

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.

Toegestane onvoldoende
Kijk in het aanvullend OER van je faculteit na of een toegestane onvoldoende mogelijk is voor dit opleidingsonderdeel.

Academische context

Deze aanbieding maakt deel uit van de volgende studieplannen:
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Artificiële Intelligentie
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Multimedia
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Software Languages and Software Engineering
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Data Management en Analytics
Master in Applied Sciences and Engineering: Computer Science: Artificial Intelligence (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Multimedia (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Software Languages and Software Engineering (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Data Management and Analytics (enkel aangeboden in het Engels)
Educatieve master in de wetenschappen en technologie: computerwetenschappen (120 ECTS, Etterbeek)