Programming Paradigms (Summer Semester 2021)

Overview

Lecturer Prof. Dr. Michael Pradel
Teaching assistants Luca Di Grazia, 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

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.

Schedule of Lectures

This is a preliminary schedule and may be subject to change. "L" stands for lecture, and "E" stands for exercise. Lectures will be distributed via YouTube and have a recommended time window to watch them (but you can watch them any time). Events with a precise date happen on that date. Events printed in italics happen synchronously via Webex and will not be recorded, i.e., you should plan to attend them at the given time. Events printed in bold are deadlines (strict).

Date Topic Material
Apr 19 to 24 L: Introduction
Apr 26 to 30 L: Syntax
Apr 30 E: Exercise 1 (grammars, scanning) published Exercise sheet
Code and data
May 3 to 7 L: Syntax
May 5, 11:30am to 1:00pm L: Q&A
May 7 E: Exercise 1 due
May 7 E: Exercise 2 (parsing) published Exercise sheet
Code and data
May 10 to 14 L: Names, Scopes, Bindings
May 12, 11:30am to 1:00pm E: Discussion of Exercise 1
May 14 E: Exercise 2 due
May 17 to 21 L: Control Flow
May 19, 11:30am to 1:00pm E: Discussion of Exercise 2
May 21 E: Exercise 3 (names, scopes, binding) published Exercise sheet
Code and data
May 31 to June 4 Lecture: Type Systems
June 4 E: Exercise 3 due
June 7 to 11 Lecture: Type Systems
June 9, 11:30am to 1:00pm E: Discussion of Exercise 3
June 11 E: Exercise 4 (control flow) published Exercise sheet
Code and data
June 14 to 18 L: Composite Types
June 16, 11:30am to 1:00pm L: Q&A
June 18 E: Exercise 4 due
June 21 to 25 L: Subroutines and Control Abstraction
June 25 E: Exercise 5 (types) published Exercise sheet
Code and data
June 28 to July 2 L: Data Abstraction and Object Orientation
June 30, 11:30am to 1:00pm E: Discussion of Exercise 4
July 2 E: Exercise 5 due
July 5 to 9 Lecture: Data Abstraction and Object Orientation
July 7, 11:30am to 1:00pm E: Discussion of Exercise 5
July 9 E: Exercise 6 (data abstraction) published Exercise sheet
Code and data
July 12 to 16 Lecture: Concurrency
July 14, 11:30am to 1:00pm L: Q&A
July 16 E: Exercise 6 due
July 19 to 23 Lecture: Functional Languages
July 21, 11:30am to 1:00pm E: Discussion of Exercise 6
August 27, 11:30am to 1:00pm Q&A for exam preparation
Sep 9 Final Exam Questions, Solutions