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 also to a limited extent in 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 the 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.