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 |