A "system" integrates functionalities and devices 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, and a robotic system made of physical devices, embedded sensors and controllers, as well as complex processing modules. The most common system programming language is C. This course is a practice-oriented introduction to programming in C and C++. The focus is on features of the language and libraries that are particularly useful in programming systems. This includes the memory model, input/output, the network programming interface and other system calls, the organization of a large system programs, including the relevant language features and the build process, symbols and their relations to compilation units and the linker, and an introduction to symbolic debugging.