FS26 - Distributed Systems (DSy)
This lecture series focuses on distributed systems, which are computer systems made up of multiple autonomous components, or nodes, that are linked and communicate with one another to achieve a common goal.
By the end of the series, you should have a good understanding of the various components and technologies involved in distributed systems and blockchain, as well as their implementation and deployment considerations.
Lecture Topics
The following topics are preliminary and may change or be shifted during the semester.
| Nr | Date | Topics for this Week |
|---|---|---|
| 01 | 16.02.2026 | Admin, Introduction / Motivation - Scaling |
| 02 | 23.02.2026 | Introduction / Motivation, Location and Redundancy |
| 03 | 02.03.2026 | Containers and VMs, Docker |
| 04 | 09.03.2026 | Monorepos / Polyrepos |
| 05 | 16.03.2026 | Web Architectures, Load Balancing |
| 06 | 23.03.2026 | Model Contex Protocol (MCP), Authentication |
| 07 | 30.03.2026 | Categorization |
| - | - | - |
| 08 | 13.04.2026 | Deployment, Performance |
| 09 | 20.04.2026 | Protocols |
| 10 | 27.04.2026 | Application Protocols |
| 11 | 04.05.2026 | Exam preparation |
| 12 | 11.05.2026 | Blockchain, Bitcoin |
| 13 | 18.05.2026 | Challenge Task Presentations |
| - | - | - |
| 14 | 01.06.2026 | Challenge Task Award Winner Announcement, Q&A |
Online Lectures & Offline Exercises
The Distributed Systems (DSy) lectures will be pre-recorded and uploaded by Friday evening. The length of the videos will be ~ 80 - 100 minutes divided into segments. The news segment (~10 min) will cover news around the topics distributed systems and blockchain and are not part of the exam. It should serve as an overview of current topics in this field. On Mondays, only exercises take place.
I will be in room FZ.0332 from 08:10 - 09:50 in St.Gallen and in room 1.257 from 13:10 - 18:40 in Rapperswil on Mondays. During exercises, you can work on your challenge task. You do not need to be present on Monday, but it is highly recommended to discuss your ideas, issues, and problems with the challenge task. On request, you can also join the exercises remotely via MS Teams.
The online lectures and PDFs can be accessed from outside the OST network (also on Youtube), the exercise and admin material only with VPN.
Lecture
Lecture 1
The admin part gives an overview over this lecture and presents the challenge task for this course (Slides: FS26-DSy-01-admin.pdf). The second video (news) reports on distributed systems and blockchain news. The first article describes a startup rebuilding its workflow around AI coding agents, a shift I experienced myself. The next article provides a mathematical framework for compression in databases, backing up my lecture point about optimizing for bandwidth. The third topic covers Discord's architecture using the Actor Model to handle trillions of messages at scale. The final article presents Backblaze's 2025 drive stats with a 1.36% failure rate across 340'000 drives, reminding us why we need redundancy and distributed systems. (Slides: FS26-DSy-01-news.pdf). The third video shows the first part of the motivation why distributed systems are necessary (Slides: FS26-DSy-01-intro-scaling.pdf). [100min]
Lecture 2
The admin part is about the lecture content and the challenge task repository invitations (Slides: FS26-DSy-02-admin.pdf). The second video (news) reports on distributed systems and blockchain news. The first article covers an incident where GPT 5.3 Codex wiped an entire drive due to a PowerShell escaping bug, reminding us that AI coding agents must be sandboxed and paired with version control. The next article describes building a startup entirely on European infrastructure for data sovereignty, feasible but slower, with thinner ecosystems and some unavoidable US dependencies, illustrating how sovereignty requirements requires distributed architectures. The final article introduces WebMCP, a browser-native API letting websites expose structured tools to AI agents directly, potentially replacing complex scraping pipelines with simple tool invocations (Slides: FS26-DSy-02-news.pdf). The third video covers the second part of the motivation for distributed systems: location (Slides: FS26-DSy-02-intro-location.pdf). The fourth video addresses fault tolerance and redundancy (Slides: FS26-DSy-02-intro-hw.pdf). [93min]
Lecture 3
The admin part is about the lecture content and the challenge task (Slides: FS26-DSy-03-admin.pdf). The second video (news) reports on distributed systems and blockchain news. The first article shows how to test software on RISC-V via QEMU emulation without physical hardware. The next covers Red Hat's Podman Desktop as a Docker Desktop competitor with OpenShift integration. The third examines how two years after Broadcom's VMware acquisition, only 4% of customers fully migrated, illustrating the power of vendor lock-in. The fourth surveys sandbox isolation techniques ranging from Linux namespaces to microVMs to WebAssembly. Finally, several articles on GenAI and software development are discussed, with the lecturer arguing that development will become more goal-oriented and supervisory (Slides: FS26-DSy-03-news.pdf). The third video covers the introduction of containers and VMs (Slides: FS26-DSy-03-container.pdf). The fourth video dives into docker (Slides: FS26-DSy-03-docker.pdf) [131min]
Lecture 4
The admin part is about the lecture content and the challenge task (Slides: FS26-DSy-04-admin.pdf). The second video (news) reports on distributed systems and blockchain news. The first article covers Mozilla's finding that up to 10–15% of Firefox crashes stem from hardware bitflips, not software bugs, reinforcing the need for ECC and replication in distributed systems. The next article discusses how AI coding tools have paradoxically increased engineer burnout by shifting the bottleneck from writing code to reviewing, testing, and maintaining AI output. The next topic reminds us that LLMs still hallucinate, blending fact and fabrication indistinguishably. The next article reports on a stolen Google API key generating $82'000 in Gemini charges, caused by Google silently granting old public keys access to Gemini endpoints. The final article describes a supply chain attack on the Cline AI assistant via prompt injection, leading to a compromised npm package and highlighting the importance of containerized development (Slides: FS26-DSy-04-news.pdf). The third video discusses monorepos and polyrepos (Slides: FS26-DSy-04-repo.pdf). [58min]
Lecture 5
The admin part is about the lecture content and the challenge task. Please note, the audio is distorted but still understandable (Slides: FS26-DSy-05-admin.pdf. The second video (news) reports on distributed systems and blockchain news. The first article reviews a decade of Docker, tracing its evolution from Linux-only to multi-platform and multi-architecture while remaining the dominant container tool. The next article benchmarks 44 VM types across 7 cloud providers, finding AMD EPYC Turin leads performance and Hetzner leads price-performance. The next topic covers Mozilla's push to make WebAssembly a first-class web citizen by eliminating JavaScript glue code through the Component Model. The next two articles discuss working with AI coding agents, arguing that spec-driven development and automated feedback loops matter more than growing documentation directories. The final two articles describe how AI is reshaping software development, shifting the job from writing to judging code and collapsing prices for routine work (Slides: FS26-DSy-05-news.pdf). The third video introduces load balancing (Slides: FS26-DSy-05-lb.pdf). The fourth video introduces web architectures (Slides: FS26-DSy-05-arch.pdf). [119min]
Lecture 6
The admin part is about the lecture content and the challenge task (Slides: FS26-DSy-06-admin.pdf. The second video (news) reports on distributed systems and blockchain news. The first article covers a $50 million swap loss on CoW Swap via the Aave interface, where a user confirmed a trade despite a 99.9% price impact warning, illustrating why liquidity matters for large decentralized exchange orders. The next article describes GlassWorm, a supply-chain malware campaign using the Solana blockchain as an uncensorable command-and-control channel to coordinate attacks across GitHub, npm, and VSCode marketplaces. The third topic covers noq, a Rust QUIC implementation with native multipath support and independent per-path congestion control. The final topic argues through several articles that AI does not remove the need for engineering skill, as LLM-assisted coding fails when developers stop making design decisions themselves (Slides: FS26-DSy-06-news.pdf). The third video presests the model context protocol (MCP) (Slides: FS26-DSy-06-mcp.pdf). The fourth video is about authentication (Slides: FS26-DSy-06-auth.pdf). [99min]
Lecture 7
The admin part is about the lecture content and the challenge task (Slides: FS26-DSy-07-admin.pdf. The second video (news) reports on distributed systems and blockchain news. The first article covers a supply chain attack on LiteLLM, where attackers compromised a CI/CD dependency to publish backdoored PyPI packages with credential harvesters and Kubernetes malware, highlighting the importance of pinning dependencies and container deployments. The next article stores the entire DOOM game in ~2,000 DNS TXT records, illustrating how bloated modern software has become. The third topic covers a company using AI to rewrite a JavaScript dependency in Go in seven hours, eliminating costly RPC overhead and saving ~500,000 dollars annually. The final article discusses GitHub's decision to use Copilot user interaction data for AI training by default, criticized as a dark pattern (Slides: FS26-DSy-07-news.pdf). The third video presests the categorization of dististributed/decentralized systems (Slides: FS26-DSy-07-cat.pdf). [65min]
Challenge Task FS 2026
Starting this semester, the challenge task (CT) is individual work. With the availability of generative AI tools, a single student can now design, build, and implement what previously required a group of 2-3. This also means every student must understand the full stack.
This semester's challenge task is the design and implementation of a distributed system (of your choice) from scratch where a service instance can fail. The system needs to have the following components:
- Simple Frontend (e.g., HTML, Vue, React, Svelte)
- Load balancer (e.g., Traefik, Nginx, HAProxy, Caddy)
- Two instances of a service (your choice), and during the challenge task presentation, one instance will be shut off
- JWT-based authentication (login/registration required to use the application, API endpoints protected with JWT)
- Database (persistent storage, does not need to be scalable)
Requirements
All requirements below must be met in order to pass this lecture.
- Load balancing with multiple instances with failover of a service instance
- Containerized (e.g., with docker)
- Simple frontend
- JWT-based authentication following OWASP guidelines
- Persistent storage
- Use latest stable releases of chosen libraries and frameworks
- A fresh clone of the repository + a single command (e.g., docker compose up) must bring up the entire working system (or using Kubernetes), including database seeding/migration if needed. No manual setup steps allowed, except secrets management.
- Perform a load test against a JWT-protected endpoint of your system (e.g., using ab, wrk, hey) and document the results. During the presentation, show how your system behaves under load, what the bottleneck could be, and how many requests/second it can handle.
- The use of AI coding assistants (e.g., Claude Code, GitHub Copilot, Cursor, or similar) is highly encouraged. You are expected to understand and be able to explain all code in your project, regardless of how it was produced.
- The solution may use existing libraries and code, but those must be open software software
- You are allowed to use any language, framework, and platforms. However, the supervisors are familiar with those: Java, Golang, JavaScript, Linux.
Milestones
- 02.03.2026 - 1st hand-in of your initial plan and project idea. Invitation to github/gitlab repository
- 30.03.2026 - 2nd hand-in of your initial commit of your challenge task and current progress (initial state, does not need to run)
- 04.05.2026 - 3rd hand-in of your current progress (what works, what is still open)
- 18.05.2026 - final hand-in / presentation
- You are expected to understand and explain your code
- Presentations will take place during the week starting 18.05.2026, with slots available throughout the week in both St.Gallen and Rapperswil to accommodate the higher number of individual presentations
- You should show the architecture, components, and design decisions in 5 min, a demo in 5 min, and the Q&A will be 5 min
- After your presentation, you need to hand in your PDF presentation.
If all requirements are fulfilled, you are encouraged to hand in before the respective deadlines.
Individual Work
There are no groups this semester. Each student works individually on their challenge task. During exercise hours, you can work on your task and discuss ideas, issues, and problems with the supervisor. You do not have to be present at the exercises, but it is highly recommended. You shall utilize homework time to work on the challenge task besides the exercise time slots. Your submitted source code and presentation will be only accessible via VPN.
For a reference of previous work, go to FS25.
| Nr | Name | Project | M2 | M3 | Final |
|---|---|---|---|---|---|
| 01 | Tobias M. | Watchlist | |||
| 02 | Yves F. | SwipeLearning | |||
| 03 | Marco S. | Dart Helper | ✓ | ✓ | |
| 04 | Bjoern S. | Priority Manager | |||
| 05 | Dominik B. | URL Shortener | |||
| 06 | Assvin S. | Todo | |||
| 07 | Kevin S. | FranzFinance | |||
| 08 | Aron B. | Logging Dashboard | |||
| 09 | Lars T. | Drello Light | |||
| 10 | Fabian L. | Reservationstool | ✓ | ✓ | |
| 11 | Michael S. | Ideenfriedhof | |||
| 12 | Silas K. | Game of Life | |||
| 13 | Till S. | ScanTotal | ✓ | ✓ | ✓ |
| 14 | Rafael D. | TCGManager | |||
| 15 | Joris H. | Cahoot Light | ✓ | ✓ | |
| 16 | Jerome K. | Kalaha | ✓ | ✓ | |
| 17 | Jonas N. | Fractal Generator | ✓ | ||
| 18 | Tiago D. | Rate Limiter (Convert App) | |||
| 19 | Ethan B. | Distributed Chess | |||
| 20 | Gaëtan A. | 2Password | |||
| 21 | Linus G. | MyTrip | ✓ | ✓ | ✓ |
| 22 | Katharina T. | ExpenseTracker | ✓ | ||
| 23 | Claude B. | Doctopus | ✓ | ||
| 24 | Olha S. | Hand System Management | ✓ | ✓ | (✓) |
| 25 | Finn S. | PixelCanvas | ✓ | ✓ | ✓ |
| 26 | Stefanie J. | MathGame | |||
| 27 | Mario B. | PetRock | |||
| 28 | Luca S. | ThreatWatch | |||
| 29 | Ramon S. | VotingSystem | ✓ | ||
| 30 | Colin V. | arachnid | |||
| 31 | Marco C. | tapper | |||
| 32 | Aurel K. | Multiplayer Quiz | |||
| 33 | Pietro L. | Search First Distributed Storage | |||
| 34 | Mikail Y. | FamilyTreeManager | ✓ | ||
| 35 | Yanick E. | holiday expense tracker | ✓ | ✓ | ✓ |
| 36 | Andrej E. | Interactive Classroom | ✓ | ||
| 37 | Lukas Z. | CalledIT | |||
| 38 | Luca G. | FitnessTracker | |||
| 39 | Leon R. | TV Watchlist | |||
| 40 | Fabio F. | LDNS | ✓ | ✓ | ✓ |
| 41 | Severin N. | QuizTune | |||
| 42 | Nico R. | MeTube | |||
| 43 | Loris P. | 0Chat | |||
| 44 | Leo V. | distributed_stock_provider | ✓ | ✓ | (✓) |
| 45 | Jovin R. | Dashboard / Metrics | ✓ | ||
| 46 | Jasmin F. | SocialMedia pOST | ✓ | ||
| 47 | Cedric C. | Habit Tracker | |||
| 48 | Mirco D. | TCG Deck Builder | |||
| 49 | Lenny M. | forum2000 | ✓ | ||
| 50 | Jonas G. | SiteLog | |||
| 51 | Marc F. | CoffeeCluster | ✓ | ||
| 52 | Jeriel F. | URL & Bookmark Manager | |||
| 53 | Manuel B. | Distributed Notes App | ✓ | ✓ | |
| 54 | Raphael L. | MoneyPilot | |||
| 55 | Diego S. | AnkiGenerator | ✓ | ||
| 56 | Josias B. | Aurora Engine | |||
| 57 | David B. | Paste-it | |||
| 58 | Andrin K. | R.A.T.S | ✓ | ||
| 59 | Nicolas C. | RaceNova Redirector | ✓ | ✓ | ✓ |
| 60 | Patrik F. | Fedlech | ✓ | ||
| 61 | Yasmin K. | Stash | |||
| 62 | Oliver W. | Homeassistant-Dashboard | |||
| 63 | Benjamin B. | Turn-based Game Engine (gomoku) | |||
| 64 | Tobias K. | TicTacToe | |||
| 65 | Agron M. | truckyPOS | |||
| 66 | Leon K. | TaskBoard | |||
| 67 | Janis N. | RLAchivements | |||
| 68 | Zhili Z. | Youreef | |||
| 69 | Jonas B. | Streaming-Plattform | |||
| 70 | Dominik H. | WebsiteMonitoring |