Programming Paradigms (Summer Semester 2020)

Overview

Lecturer Prof. Dr. Michael Pradel
Teaching assistants Luca Di Grazia, Daniel Lehmann, Moiz Rauf
Course type Lecture + Exercises
Language Lectures in German. All written material (slides, exercises, etc.) in English. Exercises in German and English.
Ilias Ilias course with forum and quizzes

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 languages. We also cover language support for concurrency and features of dynamic languages. By gaining a 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.

Online Course

This is an online course. Lecture videos will be provided in this playlist throughout the semester, roughly following the schedule below. The deadlines for the six graded exercises are firm and not affected by the online nature of the course, as these exercises are submitted electronically anyway.

Schedule of Lectures

Date Topic Material
Apr 20, 2020 Lecture: Introduction
Apr 22, 2020 Lecture: Syntax
Apr 27, 2020 Lecture: Syntax
Apr 29, 2020 Lecture: Names, Scopes, Bindings
May 1, 2020 Exercise 1 published: Grammars and scanning
May 4, 2020 Lecture: Names, Scopes, Bindings
May 6, 2020 Lecture: Control Flow
May 8, 2020 Exercise 1 due
May 15, 2020 Exercise 2 published: Parsing
May 18, 2020 Lecture: Control Flow
May 22, 2020 Exercise 2 due
May 25, 2020 Lecture: Type Systems
May 27, 2020 Lecture: Type Systems
May 29, 2020 Exercise 3 published: Names, Scopes, Binding
June 5, 2020 Exercise 3 due
June 8, 2020 Lecture: Composite Types
June 12, 2020 Exercise 4 published: Control Flow
June 15, 2020 Lecture: Composite Types
June 17, 2020 Lecture: Subroutines and Control Abstraction
June 19, 2020 Exercise 4 due
June 22, 2020 Lecture: Subroutines and Control Abstraction
June 24, 2020 Lecture: Data Abstraction and Object Orientation
June 27, 2020 Exercise 5 published: Types
July 4, 2020 Exercise 5 due
July 6, 2020 Lecture: Data Abstraction and Object Orientation
July 8, 2020 Lecture: Concurrency
July 10, 2020 Exercise 6 published: Data Abstraction
July 13, 2020 Lecture: Concurrency
July 15, 2020 Lecture: Functional Languages
July 17, 2020 Exercise 6 due
September 3, 2020 Final Exam Exam, Solution