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 |