A "system" integrates components and functionality at different levels. Examples are information systems consisting of databases and processing modules; a distributed storage system consisting of networked redundant storage devices; an operating system that manages heterogeneous computing resources; a robotic system made of physical devices, embedded sensors and controllers, as well as complex processing modules. The most common systems programming language is C. This course is a practice-oriented introduction to programming in C and, to a limited extent, C++. The goal is not only to learn how to write correct C programs, but also to understand their execution model in depth.
The course focuses on the features of the C language and libraries that are particularly useful in programming systems. This includes the memory model, input/output, modularization, its relevant language features, and its relation to the build process.
This is a practice-driven course. All topics are introduced and explained through concrete working examples.
The evaluation is based on concrete programming problems, with a combination of homework assignments and exams also consisting of programming exercises.
There are no specific required textbook, although students are encouraged to read The C Programming Language (Second Edition) by Brian W. Kernighan and Dennis M. Ritchie.