6 ECTS credits
165 h study time
Offer 2 with catalog number 4005284FNR for all students in the 2nd semester
a (F) Master - specialised level.
- 2nd semester
- Enrollment based on exam contract
- Grading method
- Grading (scale from 0 to 20)
- Can retake in second session
- Taught in
- Faculty of Science and Bio-engineering Sciences
- Computer Science
- Educational team
- Dirk VERMEIR
- 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
- 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
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
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.
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