Course "Programming Language Theory" SS 2020


  • Lecturer: Prof. Dr. Ralf Lämmel <ed.znelbok-inu|lemmeal#ed.znelbok-inu|lemmeal>
  • Lab assistant: M.Sc. Informatik Philipp Seifer <ed.znelbok-inu|refiesp#ed.znelbok-inu|refiesp>
  • Assignment assistant: Daniel Remagen

First point of contact: Philipp Seifer <ed.znelbok-inu|refiesp#ed.znelbok-inu|refiesp>

++ Important Note ++

This semester, the course will be organized via the OLAT platform. The registration password was sent to all students registered in KLIPS at the start of the lecture period. If you were not registered at that time, or are unable to register via KLIPS in general, you can also request access via mail to ed.znelbok-inu|refiesp#ed.znelbok-inu|refiesp.

There will be no on-campus meetings until further notice. All information on materials, videos, assignments and more can be found in OLAT.


Schedule Draft

The lectures are exercised in "flipped class room" mode.

We meet Mondays and Fridays; see KLIPS. We announce skipped slots.

In the following table, the "reading" column points to chapters or sections in the Software Languages Book; you will receive an email regarding book access at the beginning of the lecture. Also remember that you find short videos for some of the topics on the page for the Software Languages Book.

Week Topic Reading
1 Notion of a Software Language -
2 Tree-based Abstract syntax 3.1,
3 Basics of Interpretation 5.1
4 Big-step Operational Semantics 8.1
5 Small-step Operational Semantics 8.2
6 Type Systems 9
7 Untyped Lambda Calculus 10.1
8 Simply-Typed Lambda Calculus 10.2
9 System F + Type System Extensions 10.3, 10.4
10 Denotational Semantics 11.1, 11.2
11 Abstract Interpretation 12.5


Assignment specifications

Once the assignments are published, they will be available in OLAT. You can alternatively checkout the public SVN repository. Deadline is always end of day (23:59 GMT+2).

Assignment logistics

  • There are 10 assignments in total. They will be linked in the table above when published.
  • You can also checkout the public SVN repository manually.
  • Student solutions are submitted to (replace username with your uni username).
  • Assignment are graded with 0, 1 or 2 points in the following manner:
    • 0 for "missing or largely incomplete and/or largely incorrect" submissions
    • 1 for "noticeably incomplete and/or noticeably incorrect" submissions, and
    • 2 for "nearly or completely complete and nearly or completely correct" submissions
  • An assignment may offer options from which students must choose one, as they wish.
  • Reference solutions are also published via SVN.

General rules for submissions

  • Text and source-code files must use UTF-8 encoding.
  • Submit Haskell source code as .hs files.
  • If other languages are permitted, then use appropriate extensions.
  • Submit textual solutions as .txt or .pdf (not .doc, .docx, etc.).
  • If there are multiple options (1, 2, …), use the chosen number in the filename.
  • Make sure non-obvious source code details are sufficiently commented.
  • Make sure that your source code parses/compiles and runs "as is".

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


Exam dates

  • Exam: last lecture slot; same room; same time; register via KLIPS.
  • Resit: End of next semester.

Exam admission

  • Exam admission is inherited from previous editions ever since 2010/11.
  • Each student must submit at least 6 solutions with score 1 or above.
  • Out of these 6 solutions, 3 solutions must receive score 2.
  • Each student must present 1 solution, if asked to do so.


  • Lectures, labs, and assignments are designed to prepare effectively for the exam.
  • The assignment topics directly correspond to the exam topics.
  • All submitted solutions are reviewed by the lab / assignment assistant.
  • Upcoming assignments are discussed briefly in the meetings.
  • Completed assignments are discussed in detail in the meetings while also leveraging student presentations.