- Language: English
- Type: Practical Course (Lab)
- Module: IN0012, IN2106
- SWS: 6
- ECTS Credits: 10
- Prerequisites: As such, we do not have strict prerequisites, we prefer the following prerequisites . In case of doubt, please send the instructors with necessary background information.:
- Advanced Systems Programming in C/Rust (IN0012, IN2106, IN2128)
- Praktikum: Systems Programming in C++
- IN0010 : Introduction to Computer Networking and Distributed Systems
- IN2259: Distributed Systems OR IN2258: Middleware and Distributed Systems
- TUM Online: We will enroll you before the lab starts. Do not forget to register in the matching system to obtain a seat in the lab!
- Student note: Compulsory enrollment after two weeks of the matching outcome; students who fail to de-register in this period will be registered for the exam
This course provides the opportunity to extend your knowledge in the areas of operating and distributed systems. Moreover students will get hands-on experience on testing automation and cloud infrastructure maintenance.
The students will get involved in the organizing the computing infrastructure of two courses: Cloud Systems Engineering and Advanced systems Programming in C/Rust. These courses cover a wide range of topics related to operating systems and distributed systems.
In the context of operating systems the assignments will be in the following topics: Kernel and system calls, File I/O, Concurrency and synchronization, Memory management, Processes, Networking, Performance profiling and Virtualisation.
In the context of distributed systems the assignments will be in the following topics: Container, cluster orchestrator, cloud storage, Distributed storage system, Replication protocol, Distributed transactions and locking.
For each topic, the students will create and manage an extensive set of exercises, test-cases, and design a fully automated DevOps system for continuous integration and testing of the assignments. Furthermore, students will face challenging questions and issues, which will help to deeply understand the respective topic.
Previous knowledge expected
As such we don’t have any compulsory pre-requisites, but we prefer students to be proficient in the basic concepts of operating systems, distributed systems, and systems programming (C/C++/Rust), or equivalent background.
- Deeper knowledge of operating and distributed systems concepts
- Hands-on experience in a cloud infrastructure
- Experience in CI/CD
- Improve testing skills
Teaching and Learning Methods
This course will let students get a better insight into several concepts in operating and distributing systems. For each of this course’s topics, the students will have the responsibility of understanding and explaining the necessary theoretical background. In addition, they will need to resolve issues and answer challenging questions raised by other students. In the technical part, students will design extensive exercises along with the respective test-cases and design-maintain an automated environment for continuous integration and testing.
- The Linux Programming Interface – Michael Kerrisk
- Linux System Programming – Robert Love
- Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems – Martin Kleppmann
- Essential System Administration – Aeleen Frisch
- Site Reliability Engineering – Betsy Beyer, Chris Jones, Jennifer Petoff and Niall Richard Murphy
- There will be a preliminary meeting on:
Formal registration for this course is performed via TUM Matching System. Please also fill the survey form.