6 ECTS credits
165 h study time

Offer 2 with catalog number 4005284FNR 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
Dutch
Faculty
Faculty of Science and Bio-engineering Sciences
Department
Computer Science
Educational team
Dirk VERMEIR (course titular)
Activities and contact hours
26 contact hours Lecture
39 contact hours Seminar, Exercises or Practicals
165 contact hours Independent or External Form of Study
Course Content

After a general overview where the various components of a compiler
are illustrated, the following topics are treated in some depth:

- lexical analysis using regular expressions, finite automata, optimisation
   of automata and  scanner generators (flex)
- syntax analysis using LL and LR(1) parsers, parser generators (bison)
- intermediate code generation and optimisation (basic block and global using
   answer set programming)
- code generation and run-time organisation

 

More information can be found at http://tinf2.vub.ac.be/~dvermeir/courses/compilers/

Course material
Digital course material (Required) : An Introduction to Compilers, Dirk Vermeir, Beschikbaar op http://tinf2.vub.ac.be/~dvermeir/compilers
Digital course material (Required) : Extra materiaal (handleidingen etc.), Diverse, Beschikbaar op http://tinf2.vub.ac.be/~dvermeir/compilers
Handbook (Recommended) : Compilers: Principles, Techniques, and Tools, Principles, Techniques, and Tools, Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman, 2nd Edition, Addison-Wesley, 9781292024349, 2013
Additional info

See http://tinf2.vub.ac.be/~dvermeir/compilers

  • a text (178pp) is available on the website
  • extra material (manuals etc.) on the website

recommended book:  ``Compilers: Principles, Techniques, and Tools (2nd Edition)'' by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman, 2006.

Learning Outcomes

General competences

The student will

  • have an active understanding of the techniques and algorithms that are relevant for compiler construction
  • be able to define a new imperative language and build a compiler for it 
  • be able to use the tools that are typically associated with compiler construction for alternative purposes, e.g. for building a convenient language-based interface to a complex unstable API
  • be able to evaluate new developments re. compiler construction techniques and their usefulness for specific purposes
  • to communicate clearly about the above subjects

Grading

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

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

  • project met mondelinge verdedi with a relative weight of 1 which comprises 100% of the final mark.

    Note: De beoordeling is gebaseerd op de kwaliteit van de een zelf gebouwde compiler.
    Deze dient geimplementeerd te worden in C++ onder Linux, met gebruik making van
    de relevante hulpmiddelen, ook voor documentatie. Het resultaat van dit
    project wordt individueel en mondeling verdedigd.

Additional info regarding evaluation
  • The score depends entirely on the result of the project where the student builds a compiler for a small imperative language.
  • The compiler should be implemented using C++ under Linux, using the relevant tools discussed in class.
  • However, a student may seek approval for her own proposal re. an alternative source/target language as well as a different tool set.
  • The result will be individually defended by the student during an oral examination.
    • At this examination, the student should bring a printed copy of all source code that has not ben automatically generated. 
    • She should be able to explain and motivate design choices and how they are reflected in the code
    • She should give a demonstration of the compilation of some example programs. A simple program that computes Fibonacci numbers would be a good example but several examples are expected.
    • The demonstration should be run either on wilma.vub.ac.be or on the student's own computer.

Academic context

This offer is part of the following study plans:
Master of Applied Sciences and Engineering: Applied Computer Science: Standaard traject (only offered in Dutch)
Master in Applied Sciences and Engineering: Applied Computer Science: Standaard traject
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