Course "Programming Language Theory" SS 2017


  • Lecturer: Prof. Dr. Ralf Lämmel <ed.znelbok-inu|lemmeal#ed.znelbok-inu|lemmeal>
  • Lab assistant: MSc Informatik Marcel Heinz <ed.znelbok-inu|znieh#ed.znelbok-inu|znieh>
  • Assignment assistant: Matthias Paul <ed.znelbok-inu|luapm#ed.znelbok-inu|luapm>



Slides and videos are available from the wiki page for the software languages book.

Relevant chapters of the book are shared for restricted class room use.

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

  • Lecture: Fridays 10:15-11:45, E 313
  • Lab: Mondays 12-14

The "Reading" column points to chapters or sections in the software languages book; see book access below. Also remember that you find short videos for many topics on the page for the software languages book.

Date Topic Reading
28.04.2017 Lecture: Introduction -
05.05.2017 Flipped classroom: Tree-based abstract syntax 3.1,
08.05.2017 Lab Abstract Syntax
12.05.2017 Flipped classroom: Basics of interpretation 5.1
15.05.2017 Lab Basics of Interpretation
19.05.2017 Flipped classroom: Big-step operational semantics 8.1
22.05.2017 Lab -
26.05.2017 No lecture -
29.05.2017 Flipped classroom: Small-step operational semantics + Lab 8.2
02.06.2017 Flipped classroom: Type systems 9
12.06.2017 Lab Type Systems
16.06.2017 Flipped classroom: Denotational semantics 10.1, 10.2
19.06.2017 Lab Denotational Semantics
23.06.2017 Flipped classroom: Abstract interpretation 10.4
26.06.2017 Lab Abstract Interpretation
30.06.2017 Flipped classroom: The untyped lambda calculus 11.1
03.07.2017 Lab ULL
07.07.2017 Flipped classroom: The simply typed lambda calculus 11.2
10.07.2017 Lab -
14.07.2017 Preparation exam -
17.07.2017 Preparation exam -
21.07.2017 Exam -

Book access

Deadline passed.

Students enrolled in this course are provided with the relevant chapters from the Software Languages Book. To this end, these students need to agree and comply with the corresponding license; they need to request access by an email from their university account and include their confirmation of the license. This Email URL defines the subject line, the sender, and a reasonable body. If received before 5 May, the sender will be granted access to a designated svn repository (uni-koblenz login and access permission required). Please allow some delay (42 hours) between sending email and granting access. Emails are not confirmed.


Assignment specifications

Once the assignments are published, the numbers are linked to the repository location with the assignment specifications.

No. Date of issue Deadline Topic
1 05.05.2017 11.05.2017 Tree-based abstract syntax
2 12.05.2017 18.05.2017 Basics of interpretation
3 19.05.2017 25.05.2017 Big-step operational semantics
4 26.05.2017 01.06.2017 Small-step operational semantics
5 02.06.2017 15.06.2017 Type systems
6 16.06.2017 22.06.2017 Denotational semantics
7 23.06.2017 29.06.2017 Abstract interpretation
8 30.06.2017 06.07.2017 Untyped Lambda calculus
9 07.07.2017 13.07.2017 Simple typed Lambda

Assignment logistics

  • There are 9 assignments in total. They are linked in the table above.
  • The svn repo will be communicated by lab assistant.
  • Student solutions are submitted to (replace username by your Uni username).
  • 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 must choose one, as they wish.
  • Reference solutions are published via svn:

General rules for solutions

  • Use Unicode for text files include source-code files.
  • Submit Haskell source code as .hs files.
  • If other languages are permitted, then use appropriate extensions.
  • Submit "textual" solutions as .txt or .pdf (no .doc, .docx, etc.).
  • If there are options (1, 2, …), use the option number in the filename.
  • Make sure non-obvious source-code details are commented.
  • Make sure that your source code parses/compiles/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 assignment assistant.
  • Upcoming assignments are discussed briefly in the lab.
  • Completed assignments are discussed in detail in the lab while also leveraging student presentations.