Programming Paradigms (Summer Semester 2023)
Overview
Lecturer | Prof. Dr. Michael Pradel |
Teaching assistants | Islem Bouzenia, Huimin Hu, Beatriz Souza |
Course type | Lecture + Exercises |
Language |
Lectures in German. All written material (slides, exercises, etc.) in English. |
Ilias | Ilias course with forum and quizzes |
Location | Universitätsstr. 38, 38.04 |
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
The course will be classroom-first, i.e., to the extent possible, all activities will be in a physical classroom. 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 12, 11:30am | L: Introduction |
|
Apr 14, 11:30am | L: Syntax |
|
Apr 21, 11:30am | L: Syntax |
|
Apr 21, 11:59pm | E: Exercise 1 published | |
May 3, 11:30am | L: Syntax |
|
May 4, 11:59pm | E: Exercise 1 due | |
May 5, 11:30am | L: Names, Scopes, Bindings |
|
May 5, 11:59pm | E: Exercise 2 published | |
May 8, 11:30am | L: Control Flow |
|
May 10, 11:30am | L: Control Flow |
|
May 12, 11:30am | E: Discussion of Exercise 1 | |
May 18, 11:59pm | E: Exercise 2 due | |
May 18, 11:59pm | E: Exercise 3 published | |
May 19, 11:30am | E: Discussion of Exercise 2 | |
May 22, 11:30am | L: Type Systems |
|
May 24, 11:30am | L: Type Systems |
|
May 26, 11:30am | L: Type Systems |
|
June 8, 11:59pm | E: Exercise 3 due | |
June 8, 11:59pm | E: Exercise 4 published | |
June 9, 11:30am | E: Discussion of Exercise 3 | |
June 12, 11:30am | L: Composite Types |
|
June 14, 11:30am | L: Composite Types |
|
June 22, 11:59pm | E: Exercise 4 due | |
June 22, 11:59pm | E: Exercise 5 published | |
June 23, 11:30am | E: Discussion of Exercise 4 | |
June 26, 11:30am | L: Control Abstraction |
|
June 28, 11:30am | L: Data Abstraction |
|
July 3, 11:30am | L: Concurrency |
|
July 5, 11:30am | L: Concurrency |
|
July 6, 11:59pm | E: Exercise 5 due | |
July 6, 11:59pm | E: Exercise 6 published | |
July 7, 11:30am | E: Discussion of Exercise 5 | |
July 10, 11:30am | L: Functional Languages |
|
July 12, 11:30am | L: Logic Programming |
|
July 20, 11:59pm | E: Exercise 6 due | |
July 21, 11:30am | E: Discussion of Exercise 6 | |
Sep 7 | Final Exam |