This course teaches techniques to efficiently implement modern functional and object oriented languages. Several of these techniques are applied by the student in an implementation of a simple functional language.
Part 1: implementation of high-level concepts
• functional languages: closures, continuations, tail call elimination
• object-oriented languages: object layout, method dispatch, membership test
Part 2: optimizations
• compiler intermediate representations (RTL, SSA, CPS),
• inlining and simple optimizations
• control flow analysis
• register allocation
Part 3: run time support
• memory management (including garbage collection),
• interpreters and virtual machines
Required prior knowledge
Good knowledge of Scala and C programming languages
The final grade for this course is based on three aspects:
several group projects, to be completed in groups of at most two people,
individual project(s), to be completed alone,
an individual oral exam.
Warning: the course is evaluated during the semester, which has two important consequences:
there is no retake exam,
the oral exam will take place during the last week of the semester, not during the official exam period.