Programming Paradigms (Winter Semester 2019/20)


Lecturer Prof. Dr. Michael Pradel
Teaching assistants TBD
Course type Lecture + Exercises
Language Lectures in German. All written material (slides, exercises, etc.) in English. Exercise sessions in German or English.
Place Mondays: Pfaffenwaldring 7, V 7.02
Fridays: Universitätsstr. 38, 38.04


This course introduces the concepts of programming languages. Starting from how to describe the syntax of a language, we will cover core language design concepts, such as scopes, binding, control flow, types, control abstraction, and data abstraction. The course discusses different programming language paradigms, including imperative languages, functional languages, and logic languages. We also cover language support for concurrency and features of dynamic languages. By gaining a a deeper understanding of language concepts, the course enables students to make best use of a given programming language and to choose the most suitable language for a given development task.


This is a plan, i.e., it may change. For the exercise sessions, see C@MPUS.

Date Topic Material
Oct 14, 2019 Introduction
Oct 18, 2019 Syntax
Oct 28, 2019 Syntax
Nov 4, 2019 Names, Scopes, Binding
Nov 15, 2019 Names, Scopes, Binding
Nov 25, 2019 Control Flow
Nov 29, 2019 Control Flow
Dec 2, 2019 Type Systems
Dec 6, 2019 Type Systems
Dec 9, 2019 Composite Types
Dec 13, 2019 Composite Types
Dec 16, 2019 Subroutines and Control Abstraction
Dec 20, 2019 Subroutines and Control Abstraction
Jan 10, 2020 Data Abstraction and Object Orientation
Jan 13, 2020 Data Abstraction and Object Orientation
Jan 17, 2020 Concurrency
Jan 20, 2020 Concurrency
Jan 24, 2020 Dynamic Languages
Feb 3, 2020 Functional Languages
Feb 7, 2020 Logic Languages