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.
- Textbook (optional): "The C Programming Language", Second Edition. By Brian W. Kernighan and Dennis M. Ritchie. Prentice Hall, Inc., 1988.
- Frequently Asked Questions on C programming. (http://www.c-faq.com/)
- C reference documentation from cppreference.com. (http://en.cppreference.com/w/c)
- C++ reference documentation from cppreference.com. (http://en.cppreference.com/w/cpp)