Programming Paradigms (Winter Semester 2024/25)

Overview

Lecturer Prof. Dr. Michael Pradel
Teaching assistants Islem Bouzenia, Huimin Hu, Matteo Paltenghi, 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 Mondays: Pfaffenwaldring 7, 7.03
Wednesdays: Universitätsstr. 38, 38.04
Thursdays: Pfaffenwaldring 55, 55.02

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
Oct 16, 3:45pm L: Introduction
Oct 28, 9:45am L: Syntax
Oct 30, 3:45pm L: Syntax
Nov 4, 9:45am L: Syntax
Nov 6, 3:45pm L: Names, Scopes, Bindings
Nov 6, 11:59pm E: Exercise 1 published
Nov 11, 9:45am L: Control Flow
Nov 13, 3:45pm L: Control Flow
Nov 18, 9:45am L: Type Systems
Nov 20, 3:45pm L: Type Systems
Nov 20, 11:59pm E: Exercise 1 due
Nov 20, 11:59pm E: Exercise 2 published
Nov 21, 9:45am E: Discussion of Exercise 1
Dec 4, 11:59pm E: Exercise 2 due
Dec 4, 11:59pm E: Exercise 3 published
Dec 5, 9:45am E: Discussion of Exercise 2
Dec 9, 9:45am L: Type Systems
Dec 11, 3:45pm L: Composite Types
Dec 18, 3:45pm L: Composite Types
Dec 18, 11:59pm E: Exercise 3 due
Dec 18, 11:59pm E: Exercise 4 published
Dec 19, 9:45am E: Discussion of Exercise 3
Jan 8, 3:45pm L: Control Abstraction
Jan 8, 11:59pm E: Exercise 4 due
Jan 8, 11:59pm E: Exercise 5 published
Jan 9, 9:45am E: Discussion of Exercise 4
Jan 13, 9:45am L: Data Abstraction
Jan 15, 3:45pm L: Concurrency
Jan 27, 9:45am L: Concurrency
Jan 22, 11:59pm E: Exercise 5 due
Jan 22, 11:59pm E: Exercise 6 published
Jan 23, 9:45am E: Discussion of Exercise 5
Jan 29 10, 3:45pm L: Functional Languages
Feb 5, 11:59pm E: Exercise 6 due
Feb 6, 9:45am E: Discussion of Exercise 6
TBD Final Exam