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
  • See below
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