Programming Language Design and Implementation

Seminar in Theoretical CS, Winter Semester 2017/18


  • 27.06.2017: we are online


Wed 11.10.2017, 14:00 Kick-off meeting at seminar room of i2 (building E1, room 4201b)
13.11.2017 Detailed outline of report due
11.12.2017 Full report due
15.01.2017 Presentation slides due
30./31.01.2018 Seminar talks at seminar room of i2 (building E1, room 4201b)


This seminar addresses several aspects of the design and (efficient and reliable) implementation of programming languages and systems, with emphasis on how principles underpin practical applications. Here the notion of “design and implementation” has to be understood in a broad sense; it ranges from parsing over static analysis techniques to code generation. The areas are oriented towards the annual Conference on Programming Language Design and Implementation, which is is the premier forum in the field of programming languages and programming systems research, covering the areas of design, implementation, theory, applications, and performance.

Each area features a number of topics which are each covered by a scientific journal or conference article (please refer to the references below). These research articles are the basis on which students have to prepare their report and presentation.


Basic knowledge in the following areas is expected:

  • Formal languages and automata theory
  • Mathematical logic

Previous knowledge in compiler construction, semantics of programming languages, or program analysis is helpful but not mandatory



  1. Adaptive LL(*) parsing
  2. Counterexamples for bottom-up parsing conflicts
  3. Verified compilation
  4. Compilation of functional languages
  5. Synthesis of machine code from semantics
  6. Improving accuracy for floating-point expressions
  7. Program enumeration for compiler testing


  1. Points-to analysis
  2. Polymorphic type checking
  3. String Analysis for Vulnerability Detection
  4. Static Detection of DoS Vulnerabilities
  5. Partial Redundancy Elimination
  6. Analyzing undefined behavior of C programs


  1. Verification of information-flow security
  2. Cartesian Hoare logic for verifying k-safety properties
  3. Model checking concurrent programs
  4. Verifying pointer programs using separation logic

Schedule of Talks

Tuesday 30.01.2018
09:00-10:30 15, 1, 2
10:45-12:15 3, 6, 7
14:00-15:30 4, 5, 13
15:45-16:45 12, 14
Wednesday 31.01.2018
14:00-15:00 8, 9
15:15-16:15 10, 11

Additional Material


Registration to the seminar is handled between Juni 30 and July 16, 2017, via the central online form.


Thomas Noll <noll at>