Programming Distributed Systems
Instructor: Dr. Annette Bieniusa
Lecture: Monday, 10:00 - 11:30, Room 48-453; Tuesday, 10:00 - 11:30, Room 13-370 (changed!!)
Exercises: Wednesday, 15:30 - 17:00, Room 32-411-PC
The lecture and course material will be in English.
Please register for the exercises via mail to Peter Zeller (subject: “Registration Progdist”).
- Good programming knowledge, including usage of code repositories (git)
As this is a 8CP lecture, you will spend on average around 240 hours on the lecture and the exercises, including exam preparation. If you do not have much experience with programming systems of medium size, you need to plan to spend more time on the practical exercises! If you lack some of the theoretical prerequisites (definition of formal languages, finite-state machines), you should also incorporate this into your planning.
- Oral exams:
- August 22-28
- November 6
- Please register with our secretary Judith Stengel for a time slot (and ofc with the examination office)!
You will be able to
- explain the challenges regarding time and faults in a distributed system
- provide formal definitions for time models, fault models and consistency models
- comprehend and develop models of some distributed system in a process calculus
- describe the algorithms for essential abstractions in programming distributed systems
- implement basic abstractions for distributed programming
- explain the virtues and limitations of major distributed programming paradigms
Topics of the Lecture
- Basic primitives in programming distributed systems
- Consistent snapshots
- Distributed state machine replication
- Theoretical foundation
- Failure modes
- Time in Distributed systems
- Process calculi (e.g. CSP, CCS, pi calculus, TLA)
- Consistency models
- Programming paradigms for Distributed Systems
- Futures and promises
- Message passing and Actors
- Streaming / Data-Flow
Week Date Topic 1 15.04. + 16.04. Introduction 2 23.04. Message Broadcast 3 29.04. Causality 29.04. + 30.04. TLA+: Intro TLA+: Broadcast 4 06.05. Replication, FLP 07.05. Consistency 5 13.05. Consistency (continued) 14.05. Living on the edge, safely Guest speaker: Marc Shapiro 6 20.05. CRDTs 21.05. Quorums 7 27.05. + 28.05. Raft 8 02.06. Transactions 03.06. Programming models 9 11.06. Blockchains 10 17. + 18.06. Testing Distributed Systems 1 pdf, pptx Paper on Randomized testing of dist sys with probabilistic guarantees Testing Distributed Systems 2 pdf, pptx Testing Distributed Systems 3 pdf 11 24.06. Advanced Programming in Erlang 25.06. Final class (feedback, exam dates, etc.)
To solve the practical exercises, you need to install some software: Required software for the exercises
Please submit your solution to the practical exercises via your Git repository (which you get after registration). If you want feedback on the theoretical exercises, please send your solution to Peter Zeller.
Solving the exercise sheets is not mandatory, but highly recommended. In the second half of the semester, you will have to implement a bigger project in Erlang. Successfully implementing this project is a requirement for being admitted to the exams.
Exercise material and solutions are available in the pds-exercises Repository (registration required).
|17.04.||Introduction to sequential functional programming in Erlang (Slides)|
|24.04.||Discussing sheet 1, introduction to concurrency in Erlang (Slides)|
|01.05.||no exercise (Tag der Arbeit)|
|08.05.||Introduction to sheet 3, discussing sheet 2|
|22.05.||Discussion of sheet 3, introduction to Erlang OTP libraries (Slides)|
|29.05.||Discussion of sheet 4|
|05.06.||Discussion of sheet 5|
We will have no more exercise classes while you are working on the final project. Please make an appointment with us if you want to discuss your ideas or code for the final project or if you run into any problems.