Available courses for students of Israel Institute of Technology

(Are you studying at another institution?)

Advanced Concepts of Programming Languages
Computer Science and ICT, Data, AI
Organization logo: Technical University of Munich

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

Expected 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.

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.

More information$ctx/wbModHBReport.wbGenHTMLForBeschr?pKnotenNr=3307469&pSemesterNr=197&pLangCode=EN
  • Local course code
  • Study load
    ECTS 6
  • Level
  • Contact hours per week
  • Instructors
    Helmut Seidl, Michael Petter
  • Mode of delivery
  • Course coordinator
If anything remains unclear, please check FAQ page.