Programming Paradigms (Summer Semester 2022)
Overview
Lecturer | Prof. Dr. Michael Pradel |
Teaching assistants | Luca Di Grazia, Aryaz Eghbali, Daniel Lehmann, Matteo Paltenghi |
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 quantum 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 and other material will be made available during the semester, usually soon after the corresponding lecture. In addition to the in-person lectures and exercise sessions, 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 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 11, 11:30am | L: Introduction |
|
Apr 13, 11:30am | L: Syntax |
|
Apr 20, 11:30am | L: Syntax |
|
Apr 20, 11:59pm | E: Exercise 1 published | |
Apr 25, 11:30am | L: Names, Scopes, Bindings |
|
Apr 27, 11:30am | L: Names, Scopes, Bindings |
|
Apr 27, 11:59pm | E: Exercise 1 due | |
Apr 29, 11:30am | E: Discussion of Exercise 1 | |
May 4, 11:30am | L: Control Flow |
|
May 4, 11:59pm | E: Exercise 2 published | |
May 9, 11:30am | L: Control Flow |
|
May 11, 11:59pm | E: Exercise 2 due | |
May 13, 11:30am | E: Discussion of Exercise 2 | |
May 16, 11:30am | L: Type Systems |
|
May 18, 11:30am | L: Type Systems |
|
May 18, 11:59pm | E: Exercise 3 published | |
May 25, 11:59pm | E: Exercise 3 due | |
May 30, 11:30am | L: Composite Types |
|
June 1, 11:30am | L: Composite Types |
|
June 1, 11:59pm | E: Exercise 4 published | |
June 3, 11:30am | E: Discussion of Exercise 3 | |
June 15, 11:59pm | E: Exercise 4 due | |
June 20, 11:30am | L: Subroutines and Control Abstraction |
|
June 22, 11:30am | L: Subroutines and Control Abstraction |
|
June 22, 11:59pm | E: Exercise 5 published | |
June 24, 11:30am | E: Discussion of Exercise 4 | |
June 27, 11:30am | L: Data Abstraction and Object Orientation |
|
June 29, 11:59pm | E: Exercise 5 due | |
July 1, 11:30am | E: Discussion of Exercise 5 | |
July 4, 11:30am | L: Concurrency |
|
July 6, 11:30am | L: Concurrency |
|
July 13, 11:59pm | E: Exercise 6 published | |
July 18, 11:30am | L: Functional Languages |
|
July 20, 11:30am | L: Quantum Programming | |
July 20, 11:59pm | E: Exercise 6 due | |
July 22, 11:30am | E: Discussion of Exercise 6 | |
Sep 8, 2022 | Final Exam |