On July 30th, 2024, due to an important database update, there will be service interruptions in the Student Self-Service and Workforce Management areas between 8 AM and 11 AM. Thank you for your understanding.

185.206 Type Systems
This course is in all assigned curricula part of the STEOP.
This course is in at least 1 assigned curriculum part of the STEOP.

2023W, VO, 2.0h, 3.0EC


  • Semester hours: 2.0
  • Credits: 3.0
  • Type: VO Lecture
  • Format: Presence

Learning outcomes

After successful completion of the course, students are able to

  • list reasons for the use of types in programming languages,
  • describe different kinds of types in programming languages,
  • roughly outline formal rule systems used by compilers for type checking,
  • compare different kinds of types concerning their most important prospects and limits.

Subject of course

  • meaning of the notion of type in programming languages
  • classification of programming languages regarding type systems
  • simple theoretical type models
  • types in imperative languages (especially Ada)
  • theoretical models of polymorphic type systems and type inference
  • programming languages with polymorphic type systems
  • subtyping
  • genericity
  • types as partial specifications of object behariour
  • use of polymorphic type systems in object-oriented programming
  • current trends


Teaching methods

"Typesystems" is a lecture in a classic style based on a weekly talk, mixed up by activities like interposed questions and brief discussions. After an overview and the introduction of some terminology we repeatedly examine (1) practical experiences, (2) formal models based on them and (3) typical applications thereof for type checking, leading to new practical experiences. Students shall prepare themselves for the talks and the final exam also by autonomous research (supported by the script).

Mode of examination


Additional information

Lectures are in presence. Live streams and recordings of these lectures are not possible for technical reasons. If general regulations do not allow us to have lectures in presence in a reasonable manner, lectures will be held in Zoom. In this case you will find access data to such Zoom meetings (as well as a script and slides) in TUWEL. Please register for this course early enough in TISS because you will get access to TUWEL only after registration.


  • 25h: Participation in lectures
  • 25h: Consolitation of the topics by autonomous research
  • 25h: Preparation for exam and oral exam



Course dates

Fri11:00 - 13:0006.10.2023 - 19.01.2024EI 3A Hörsaal Lecture
Type Systems - Single appointments
Fri06.10.202311:00 - 13:00EI 3A Hörsaal Lecture
Fri13.10.202311:00 - 13:00EI 3A Hörsaal Lecture
Fri20.10.202311:00 - 13:00EI 3A Hörsaal Lecture
Fri27.10.202311:00 - 13:00EI 3A Hörsaal Lecture
Fri03.11.202311:00 - 13:00EI 3A Hörsaal Lecture
Fri10.11.202311:00 - 13:00EI 3A Hörsaal Lecture
Fri17.11.202311:00 - 13:00EI 3A Hörsaal Lecture
Fri24.11.202311:00 - 13:00EI 3A Hörsaal Lecture
Fri01.12.202311:00 - 13:00EI 3A Hörsaal Lecture
Fri15.12.202311:00 - 13:00EI 3A Hörsaal Lecture
Fri12.01.202411:00 - 13:00EI 3A Hörsaal Lecture
Fri19.01.202411:00 - 13:00EI 3A Hörsaal Lecture

Examination modalities

An oral exam will check the learning outcomes given above. Exams will occur in presence in the office of the lecturer. If exams in presence are not possible, online exams using Zoom can be arranged. Appointment and registration are arranged by mail. In general, there will be exams each Monday (except during holidays) from 10 a.m. to 11 a.m., but can also be arranged at other times. Registrations must be made at least one week before the exams.

Course registration

Begin End Deregistration end
18.09.2023 00:00 13.10.2023 23:59


Study CodeObligationSemesterPrecon.Info
066 504 Master programme Embedded Systems Not specified
066 931 Logic and Computation Mandatory elective
066 937 Software Engineering & Internet Computing Mandatory elective


Find the script and the slides (all in German) in TUWEL.

Previous knowledge

Students are expected to have good practical programming capabilities in strongly typed object-oriented (and in the ideal case also functional) programming languages; this implies experience in the static use of types.