Practical Foundations of Programming Languages Proseminar
In this proseminar, we cover the theoretical foundations of programming languages based on the textbook "Practical Foundations for Programming Languages" by Robert Harper. In the first part of the proseminar, we will look into calculi and type systems that are the basis for programming languages research and are at the core of many modern programming languages. Among the topics are: lambda calculus, PCF, System F, recursive types, subtyping, type classes, etc. In the second part of the proseminar, we look at concrete programming languages and explore how these foundations are realized in these languages. If you liked the programming-language theoretical parts of Programming 1/2 and if you want to know more about how programming languages work, this is your proseminar.
People
Matthis Kruse, Julian Rosemann, Sebastian Hack
Organization
- Language: English
- Participants: 10
- Weekly Meetings: Mondays 10-12 (sharp, s.t.). First meeting: 09 Nov 2020
- Prerequisites: very good understanding of and affection for the more theoretical parts Programming 1 and 2. Having passed Programming 1 and 2 is required.
Registration
Please use our seminar system. Note that you still have to register for the Seminar in the LSF until TBD to get a certificate for the seminar.
Literature
- Our main source is the book Practical Foundations of Programming Languages by Robert Harper.
- Additionally, you should also consult Types and Programming Langauges by Benjamin Pierce.
Please all read and prepare sections Sections 1-7 of PFPL for the first session!
Modus Operandi
Each student will be assigned a series of chapters in the book and will give a rehearsal presentation of about 15 minutes. The goal of the rehearsal talk is to get feedback from us and your fellow students about your presentation. Each talk will be followed by a discussion about the topic of your material that the student giving the presentation moderates.
Every participant is expected to read the respective chapters and prepare questions for the discussion in each session. For some topics, we also provide further literature and we expect you to have read it as well. Furthermore, we encourage you to review existing programming languages with respect to the topics of your material and tell us about that in your talk.
The final talks of about 25 minutes will take place on 2021-01-18, 2021-01-25, 2021-02-01. This gives you enough time to improve your presentation and incorporate all the feedback.
The grade will dependent on the final talk and the participation in the discussions.
Sessions
Date | Speaker | Topic / Chapters (Harper; Pierce) |
---|---|---|
2020-11-30 | Florian Bies | Product Types, Sum Types (10-11; 11.6-11.10) |
2020-11-30 | Henry Ludger Janson | System F (16; 23) |
2020-12-07 | Bilal Alshilh Ali | PCF (19; 11.11) |
2020-12-07 | Ninos Oshana | Lambda Calculus (21-22; 5,9) |
2020-12-14 | Viktor Alexander Kokott | Subtyping (24; 15) |
2021-12-14 | Nils Husung | Continuations (30; -) |
2021-01-04 | Awni Alkader | Existential Types (17; 24) |
2021-01-04 | Mohamed Samrah | State (34-35; 13) |
2021-01-11 | Niklas Fabian Mück | Call by Value, Lazy Evaluation, Streams (8.3, 36; 5.1, 20.1) |
Material on Giving Presentations
- Simon Peyton Jones: How to give a great research talk
- Justin Zobel: Writing for Computer Science. See also Tina's summary of the presentation chapter.