Programming Paradigms (Summer Semester 2025)

Overview

Lecturer Prof. Dr. Michael Pradel
Teaching assistants Islem Bouzenia, Matteo Paltenghi, Beatriz Souza, Aryaz Eghbali, Huimin Hu, Doehyun Baek
Course type Lecture + Exercises
Language Lectures in German. All written material (slides, exercises, etc.) in English.
Ilias Ilias course with forum and quizzes
Location Mondays: Pfaffenwaldring 57, 57.02
Wednesdays: Pfaffenwaldring 9, 9.01
Thursdays: Pfaffenwaldring 55, 55.01

Content

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-based programming languages. We also cover language support for concurrency and features of dynamic languages. By gaining 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.

Organization

All lectures and discussions of exercises will be in-person. Slides, other material, and lecture recordings will be made available during the semester, usually soon after the corresponding lecture. In addition, old lecture videos are available in this playlist. Note that the content covered in this semester is similar to, but not exactly the same as in the old videos.

Schedule of Lectures

This is a preliminary schedule and may be subject to change. "L" stands for lecture, and "E" stands for exercise. Deadlines for submitting exercises are shown in bold.

Date Topic Material
Apr 7, 11:30am L: Introduction
Apr 9, 11:30am L: Syntax
Apr 14, 11:30am L: Syntax
Apr 16, 11:30am L: Syntax
Apr 16, 11:59pm E: Exercise 1 published
Apr 17, 2:00pm L: Names, Scopes, Bindings
Apr 30, 11:59pm E: Exercise 1 due
May 5, 11:30am E: Discussion of Exercise 1,
Exam preparation
May 7, 11:59pm E: Exercise 2 published
May 12, 11:30am L: Control Flow
May 15, 2:00pm L: Control Flow
May 19, 11:30am L: Type Systems
May 21, 11:30am L: Type Systems
May 21, 11:59pm E: Exercise 2 due
May 21, 11:59pm E: Exercise 3 published
May 22, 2:00pm E: Discussion of Exercise 2,
Exam preparation
May 26, 11:30am L: Type Systems
May 28, 11:30am L: Composite Types
June 2, 11:30am L: Composite Types
June 4, 11:30am L: Control Abstraction
June 4, 11:59pm E: Exercise 3 due
June 4, 11:59pm E: Exercise 4 published
June 5, 2:00pm E: Discussion of Exercise 3,
Exam preparation
June 18, 11:59pm E: Exercise 4 due
June 18, 11:59pm E: Exercise 5 published
June 30, 2:00pm E: Discussion of Exercise 4,
Exam preparation
July 2, 11:30am L: Data Abstraction
July 2, 11:59pm E: Exercise 5 due
July 2, 11:59pm E: Exercise 6 published
July 3, 2:00pm E: Discussion of Exercise 5,
Exam preparation
July 7, 11:30am L: Concurrency
July 9, 11:30am L: Concurrency
July 14, 11:30am L: Functional Languages
July 16, 11:59pm E: Exercise 6 due
July 17, 2:00pm E: Discussion of Exercise 6,
Exam preparation
TBD Final Exam