Course "Programming Language Theory" SS 2016


  • Lecturer: Prof. Dr. Ralf Lämmel
  • Lab assistant: MSc Informatik Marcel Heinz
  • Assignment assistant: Matthias Paul


  • Final: Last lecture slot; same room; same time; register via KLIPS
  • Resit: TBA (During lecture period of winter semester 16/17)
  • Student ids will be checked.
  • You need to have a valid admission for the exam; see rules below.
  • You *must* register through KLIPS:
    • "Theorie der Programmiersprachen" for current exam rules
    • "Programmierparadigmen" for previous exam rules



Date Topic
20.04.16 Kick off
27.04.16 Concrete and abstract syntax
04.05.16 Pragmatic interpretation
11.05.16 Big-step operational semantics
25.05.16 Small-step operational semantics
01.06.16 Denotational semantics
08.06.16 Lambda calculus
15.06.16 Abstract interpretation
22.06.16 Type systems
29.06.16 Typed calculi
06.07.16 Type-system implementation
13.07.16 EXAM preparation
20.07.16 EXAM

Additional lab material can be found here.


Link Topic Date published Deadline (end of day)
01 Syntax 22.04.2016 05.05.2016
02 Operational semantics 11.05.2016 31.05.2016
03 Denotational semantics 01.06.2016 07.06.2016
04 Lambda calculus 08.06.2016 14.06.2016
05 Abstract interpretation 15.06.2016 21.06.2016
06 Type systems 22.06.2016 28.06.2016
07 Typed calculi 29.06.2016 12.07.2016

You can find your student folder, where you have to commit under <student id>
See details concerning admission at the bottom of this page. Create assignment folders with a name pattern as follows: "assignment"+nr. where nr has two digits (00 .. 99), e.g. "assignment01".

Please commit your solutions either as .txt or .pdf files. If the assignment is about programming (e.g., in Haskell), please commit the relevant source-code files. Do not commit source-code in .pdf format!

Reference solutions are published via svn:

General rules regarding solutions of assignments

  • Use Unicode.
  • Submit source code as files (.hs or .pro etc.) as opposed to .txt or .pdf or .doc etc.
  • Use filename to indicate what option of assignment you picked.
  • Add sufficient comments for non-obvious details to the solution.
  • Make sure that your code parses/compiles/runs "as is".

If you do not obey these rules, your solution may receive less to no points.

Examination rules


  • Admission rules for final:
    • Each student must submit at least 2 solutions with score 2.
    • Each student must submit at least 4 solutions with score 1 or 2.
    • Each student must present 1 solution.
    • Exam admission is inherited from previous editions ever since 2010/11.
  • Explanation:
    • There will be 7 assignments in total.
    • The svn repo will be communicated by lab assistant.
    • Student submissions are checked by assignment assistant.
    • Each assignment is graded with either of the following scores:
      • 0: "missing or largely incomplete and/or largely incorrect"
      • 1: "noticeably incomplete and/or noticeably incorrect"
      • 2: "nearly or completely complete and nearly or completely correct"
    • An assignment may offer options from which students can choose.

Rationale: The assignments are designed to help understand all material covered in the lecture. Also, the assignments help with effective preparation for the exam. Upcoming assignments are discussed briefly in the lab. Completed assignments are discussed in detail in the lab on the grounds of student presentations. All submitted solutions are reviewed by the assignment assistant. The lab assistants calls up students to present their solution. The idea is to give strong preference to somewhat complete and correct solutions (scores 2 or 1) and to students who had not yet presented before. As there may be multiple assignment options and different solution options, there may be a multiple student presentations during each lab.