Advanced Concepts of Programming Languages

Computer Science and ICT, Data, AI

About this course

This is not a beginners programming course – Instead, this lecture focusses on the semantics of various programming language concepts, and their implementation from the point of view of a compiler engineer. Topics may include, among others:

  • Relaxed Memory Models
  • Wait-/Lock-free Programming
  • Locks, Monitors & Condition Variables
  • Transactional Memory
  • Gotos, Co-Routines and Continuations
  • Single/Multi-Dispatching
  • (Multiple-) Inheritance
  • Delegation and Prototype Based Programming
  • Aspect Oriented Programming
  • Meta programming

Learning outcomes

After successful completion of this module, students are familiar with an assortment of programming language constructs from popular programming languages. They understand the semantics of these constructs as well as the implementation consequences, that they inflict on the implementation as well as the runtime behavior of compiler and runtime system. They are able to analyze and compare different language based approaches, to discuss their relative merits and potential workarounds in case certain language features are missing. By means of this knowledge, they are able to extend existing compilers to handle the aforementioned constructs as well as able to re-encode concepts from one language by means of another language.


The assessment is by means of a written exam of 90 minutes. Individual assignments assess in how far students are able to reproduce the complex semantical behaviors of small example programs. Their knowledge and practical skills concerning programming constructs is further assessed by assignments, which ask to simulate programming language constructs of one kind by programming language constructs of another kind. It is permitted to prepare a double-sided A4 sheet of paper for the written exam and bring it to the exam.

Course requirements

IN0001 Introduction to Informatics, IN0002 Fundamentals of Programming (Exercises & Laboratory), IN0003 Functional Programming and Verification, at least one programming language


By means of pre-recorded lesson videos of around 15 minutes each, students can prepare the lecture content at their own pace. In the classroom, students can open discussion on unclear parts of the lesson videos. Additionally, illustrating examples and live programming enhance and deepen the student’s insights into the topics. Selected problems that are then solved by the joined effort of the audience and the lecturer further illustrate the lessons with hands-on experiences. In the additionally offered exercise course (2h), accompanying assignments for individual study deepen the understanding of the concepts explained in the lecture, train students to apply the learnt concepts in implementations and develop the skill to to simulate the effect of missing language features by others.

Additional information

  • Credits
    ECTS 6
  • Contact hours per week
  • Instructors
    Helmut Seidl, Sarah Tilscher, Michael Petter
  • Mode of instruction
If anything remains unclear, please check the FAQ of TUM (Germany).
Please note, for TalTech students there is an earlier deadline for applications - 18th June 2024


  • Start date

    16 October 2024

    • Ends
      5 February 2025
    • Term *
      Winter 2024/2025
    • Instruction language
    • Register between
      24 May - 29 Jul 2024
    Only 7 days to enrol
    Apply now
These offerings are valid for students of TalTech (Estonia)