Programming Paradigms (Winter Semester 2019/20)
Überblick
Lecturer | Prof. Dr. Michael Pradel |
Teaching assistants | Luca Di Grazia, Daniel Lehmann, Moiz Rauf, Jibesh Patra, Florian Stober |
Course type | Lecture + Exercises |
Language |
Lectures in German. All written material (slides, exercises, etc.) in English. Exercise sessions in German or English. |
Ilias | Ilias course with forum and quizzes |
Place |
Mondays: Pfaffenwaldring 7, V 7.02 Fridays: 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 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.
Schedule of Lectures
This is a plan, i.e., it may change. For dates and locations of exercise groups, see C@mpus. Groups 1, 5, 6, 7, and 10 are in English. Groups 2, 3, 4, 8, and 9 are in German.
Date | Topic | Material |
---|---|---|
Oct 14, 2019 | Lecture: Introduction |
Slides and notes Chapter 1 in PLP book |
Oct 18, 2019 | Lecture: Syntax |
Slides and notes (part 1) Chapters 2.1 and 2.2 in PLP book |
Oct 20, 2019 | Exercise 1 published: Grammars and scanning |
Exercise sheet Code and data |
Oct 27, 2019 | Exercise 1 due | |
Oct 28, 2019 | Lecture: Syntax |
Slides and notes (part 2) Slides and notes (part 3) Chapter 2.3 in PLP book |
Nov 3, 2019 | Exercise 2 published: Parsing |
Exercise sheet Code and data |
Nov 4, 2019 | Lecture: Names, Scopes, Binding |
Slides and notes (part 1) Chapters 3.1 to 3.2 in PLP book |
Nov 10, 2019 | Exercise 2 due | |
Nov 17, 2019 | Exercise 3 published: Names, Scopes, Binding |
Exercise sheet Code and data |
Nov 18, 2019 | Lecture: Names, Scopes, Binding |
Slides and notes (part 2) Chapters 3.3 to 3.6 in PLP book |
Nov 24, 2019 | Exercise 3 due | |
Nov 25, 2019 | Lecture: Control Flow |
Slides and notes (part 1) Chapters 6.1 to 6.2 in PLP book |
Nov 29, 2019 | Lecture: Control Flow |
Slides and notes (part 2) Chapters 6.4 to 6.6 in PLP book |
Dec 1, 2019 | Exercise 4 published: Control Flow |
Exercise sheet Code and data |
Dec 2, 2019 | Lecture: Type Systems |
Slides and notes Chapters 7.1 to 7.2 in PLP book |
Dec 6, 2019 | Lecture: Type Systems |
Slides and notes Chapters 7.2 to 7.4 in PLP book Chapters 3 and 8 in TAPL book coercions.c |
Dec 8, 2019 | Exercise 4 due | |
Dec 9, 2019 | Lecture: Composite Types |
Slides and notes Chapters 8.1 to 8.2 in PLP book union.c |
Dec 13, 2019 | Lecture: Composite Types |
Slides and notes Chapter 8.5 in PLP book |
Dec 16, 2019 | Lecture: Subroutines and Control Abstraction |
Slides and notes Chapters 9.1 to 9.3 in PLP book |
Dec 20, 2019 | Lecture: Subroutines and Control Abstraction |
Slides and notes Chapters 9.4 to 9.6 in PLP book NestedHandlers.java SwallowedExceptions.java signal2.c |
Jan 5, 2019 | Exercise 5 published: Types |
Exercise sheet Code and data |
Jan 10, 2020 | Lecture: Data Abstraction and Object Orientation |
Slides and notes Chapters 10.1 to 10.3 in PLP book account.cpp Liskov.java Virtual.cpp Inheritance.cpp Immortal.java |
Jan 12, 2019 | Exercise 5 due | |
Jan 13, 2020 | Lecture: Data Abstraction and Object Orientation |
Slides and notes Chapters 10.4 to 10.6 in PLP book Abstract.java Abstract.cpp |
Jan 19, 2019 | Exercise 6 published: Data Abstraction |
Exercise sheet Code and data |
Jan 20, 2020 | Lecture: Concurrency |
Slides and notes Chapter 13.1 and 13.2 in PLP book |
Jan 24, 2020 | Lecture: Concurrency |
Slides and notes Chapter 13.3 and 13.4 in PLP book Synchronized.java |
Jan 26, 2019 | Exercise 6 due | |
Feb 3, 2020 | Lecture: Dynamic Languages |
Slides and notes Chapter 14.1, 14.2, and 14.4 in PLP book strictMode.js ReDoS.js |
Feb 7, 2020 | Lecture: Functional Languages |
Slides and notes Chapter 11.1, 11.2, 11.3, and 11.5 in PLP book |
March 25, 2020 | Exam | Questions, Solutions |