ELECTIVE COURSE -> not offered every semester
Learning Objectives:
The students are able to understand, design and implement hardware-efficient systems software. Students will learn the fundamentals of a modern systems programming language (Rust) and how it compares to the widely used systems programming language C++. Students will understand how to balance performance, safety and maintainability while writing systems software. By focusing on two different systems programming languages, good programming skills and a deep
understanding of common systems programming concepts are encouraged.
Content:
What is Systems Programming and how does it compare to Application Programming?
Zero-overhead abstractions in C++ and Rust and how they help to write fast, readable and maintainable code
The fundamentals of memory management and memory safety
Error handling concepts in C++ and Rust for writing robust systems software
System level I/O and Network Programming
Fearless concurrency
Profiling and tracing: How to measure, evaluate and tweak performance
Tools for developing, debugging and maintaining systems software
Students will gain extensive hands-on experience in systems programming by analyzing open-source code and developing their own systems in the lab.