- This practical lab is organized by the Systems Research Group at TU Munich.
- Language: English
- Type: Practical course
- Module: IN2106 Master Practical Course
- SWS: 6
- ECTS Credits: 10
- Prerequisites: This lab course is open for Bachelor's and Master's students. For Master's students, we don’t have any compulsory prerequisites, but we prefer students to be proficient in the basic concepts of operating systems, distributed systems, systems programming (C/C++/Rust), or equivalent background. For Bachelor's students, we require that you passed at least INHN0007 Basic Principles: Operating Systems and System Software.
- Preferred pre-requisite courses at TUM:
- INHN0007: Basic Principles: Operating Systems and System Software
- IN0010: Grundlagen Rechnernetze und Verteilte Systeme
- IN0012, IN2106, IN2128: Praktikum: Systems Programming in C/Rust
- Strong programming and systems-building skills are required.
- TUM Online: For registration you have to be identified in TUMonline as a student.
- Note: Compulsory enrollment after the first weeks of the matching outcome; students who fail to de-register in this period will be registered for the exam.
- Recommended Reading: A list of open-source projects (with papers and source code) will be provided in the first meeting.
The computer systems lab is an advanced course for students to work on an open-source project. The students will work on practical and state-of-the-art computer systems to evaluate them, dissect them, reveal their internals, and modify them to add new features. Overall, the course focuses on learning the art of building computer systems by deploying, analyzing, reproducing, and breaking practical computer systems!
The term computer systems cover a broad range of topics, including distributed systems, systems for machine learning/AI, systems security, large-scale data analytics systems, storage systems, operating systems, file systems, databases, multicore architectures, synchronization/concurrency primitives, parallel systems, compiler-assisted systems, dependability, reliability, cloud/edge computing, IoT systems, etc. In short, we will focus on software systems that solve important practical problems.
More specifically, the students will be given prominent open-source projects (research papers and associated open-source code) covering the aforementioned areas. The students (in a team of 3/4 students) accomplish the following primary tasks, with the mentorship of a researcher from our chair:
- Stage 1: Deployment and evaluation — Understand the system and associated open-source code. Analyze the source code of the system, deploy it, and exercise it using real-life workloads.
- Stage 2: Build and contribution — Implementing additional feature(s) and demonstrating its effectiveness. The students are encouraged to contribute to the project by creating a pull request to get their feature(s) merged into the open-source project.
- Stage 3: Report and presentation — Each team will submit a report (~4 pages) that covers their evaluation and contributions. During the final meeting, each team will present and defend their work in front of the others.
There will be bonus points for students with accepted pull requests. Additionally, the top students will be nominated/encouraged to participate in the artifact evaluation committee for the major computer systems conferences: OSDI, SOSP, ASPLOS, EuroSys, etc.
In terms of organization, there will be three mandatory meetings:
-
Meeting #1: Kick-off: Project selection and details on how to proceed.
-
Meeting #2: Deployment and evaluation: Presentation on the project overview, deployment, and evaluation in addition to proposed additional feature(s).
-
Meeting #3: Contribution: Final presentation and demo: Demo of the project with the additional feature(s) and the evaluation of their effectiveness.
-
Office hours: Additionally, two office hours will be held during the first two stages. Each team will organize this with their mentor.
The goal is to gain a deep understanding of how modern computer systems, via open-source projects, are built and designed. More specifically, students will learn to:
-
Concisely explain a complex computer system and the problem it solves.
-
Empirically analyze, deploy, and evaluate a computer system.
-
Extend existing systems with additional features that enhance the state of the art.
-
Oral presentation and writing skills to concisely articulate the technical work.
The students will work in teams of four, and each group will be assigned to a particular open-source computer system published in a recent top systems conference (SOSP, OSDI, EuroSys, ASPLOS, ATC, NSDI, …). The course will be split into four major components as follows.
-
Phase I: Deployment and evaluation. Students will be asked to choose between a collection of open-source computer systems published in a recent top systems conference (SOSP, OSDI, EuroSys, ASPLOS, ATC, NSDI, …). Students will have a couple of weeks to read the documentation, paper, and necessary related work and understand them. Students will then deploy the source code associated with that system. The goal will be to gain deep experience with technologies used in state-of-the-art systems and acquire hands-on experience with evaluating complex computer systems.
-
Phase II: Contribution. Students will then be tasked to implement an additional feature(s) that extends the existing system, either to mitigate some of its limitations or expand the use case to other domains. The goal of this phase is to acquaint students with contributing to open-source projects, and thus, students are highly encouraged to perform a pull-request to get their contribution merged into the source code of the project.
-
Presentation Oral presentations (25-30 mins + 5 mins Q&A) will be held in front of the other students after each stage. The students will also demonstrate their systems in the final presentation. The audience will also be evaluated on their questions.
-
Report Students will write a technical report (~4 pages) that covers the description of the project, the results of exercising the source code, and the description and evaluation of the contributions of the team.
- Capacity: We plan to have around 24 places (6 teams) in the lab.
- Deadline: Two weeks after the matching period, we will formally enroll you for the course. If you want to drop out, you must inform us before the registration deadline.
We will use Slack for all communication. Please enroll in our Slack workspace using your official TUM email address.
- Slack workspace: https://ls1-courses-tum.slack.com
- Slack channel: #ws-24-sys-lab
We will be meeting three times (in-person, compulsory attendance): Location--Seminarraum (5607.01.014)
- Kick-off meeting
- Phase #1 meeting
- Phase #2 meeting
In addition, we will hold four office-hour meetings for project teams. These project team meetings will be individually organized by the project mentor.
Please carefully go over the following resources to prepare for the lab:
-
Preliminary meeting: Thursday 04/07/2024 at 14:00 (online at https://tum-conf.zoom-x.de/s/62368193459, passcode: 544743)
-
Kick-off meeting: 17/10/2024
-
Phase #1 presentation: 28/11/2024
-
Phase #2 presentation: 31/01/2025
-
Reports due (via email to project lead): 31/01/2025
The list of projects can be found in this spreadsheet
For any further questions/comments, don't hesitate to get in touch with the course organizer(s):