Course description
The goal of this course is to learn how to design and implement systems from scratch. This will add to your prior knowledge from the Operating Systems course, where you learned about the fundamental aspects of operating systems, how they are designed and what are the capabilities they offer. During the semester, you will obtain practical experience on coding at the system level, a better understanding of the features offered to you as a developer by the OS, and how to develop a system-level software.
To this end, this course includes 3 practical projects. The first one can be considered as an Introduction to Systems Programming, where we will guide you. For the other two projects, you will have much more freedom, and less precise guidance from us. You will be evaluated on these two projects only.
Rules
These are the general rules for this course:
Communication:
- We will communicate through the Matrix server. Send us a message to be added to the chatroom of the course (WS24 Instructor: @mostafa:matrix.os.rwth-aachen.de). You can also contact us by email at mailto:sdi@os.rwth-aachen.de. Materials & discussions will be on this website, and we will link new content on the Matrix channel.
- In case you don’t have a Matrix account, follow the next steps:
- Create an account on https://app.element.io
- Specify the server: matrix.os.rwth-aachen.de
- Use this registration token (valid until Oct. 21): p-tsA9jB
- Send a message to the instructor to be added to the SDI chatroom
Workflow:
- The projects will have hard deadlines, and there won’t be any extensions.
- You will work in groups of 2 people, and you can freely choose a teammate. You can use the Matrix room to find one if you haven’t yet.
- For each project, you will present your work physically in the lab. Both members of the group should be able to explain the design choices and implementation.
- There won’t be weekly evaluations, so it is not mandatory to physically participate in the lab, except on the weeks where projects are evaluated.
- We will use Gitlab CI for submission and automated testing.
- Use Matrix to ask your questions, so that everyone sees them and the answers. We also encourage you to be active in the SDI chatroom and help others with their questions, if you have an idea that can help them. There will be bonus points in the final grade for the active students that help others.
- Knowing how to write C code is a requirement for this lab. We are not going to teach you that, but we will teach you how to write good C programs. If you need to get better in C, you can find numerous tutorials and books online (we recommend “The C Programming Language” by Kernighan and Ritchie).
Goals
One of the main goals of the course is to train you to work on your own. We encourage you to go through manuals, books, and online resources to find the answers you’re looking for. For example, if you need a better solution that printf()
for debugging your code, you will need to use a debugger such as gdb. You should look up a tutorial on how to use this debugger, such as this one. We want to grow this mindset in you: the result is somewhere in the manuals, books, tutorials, and/or online resources, it is only a matter of putting enough time and effort to reach it.