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 |