With this course you will work on a practical project in the area of programming languages and software engineering. Several topics are available and will be presented at the beginning of the course, proposals from students can also be evaluated.
Modern programming languages like Java offer the programmer many advanced concepts: automatic memory management, dynamic class loading and linking, powerful type systems, and efficient just-in-time compilation. Typically, such features are partly implemented by the language's compiler (checking whether a program is well-typed), partly by the runtime environment (collecting garbage, i.e., objects no longer reachable). Consequently, we offer numerous topics concerned with both the front- and back-ends of modern language implementations.
This course is complemented by a seminar: . Attending the seminar is not mandatory, although there may exist synergies between topics offered here and in the seminar. Design and Implementation of Modern Programming Languages