Systems programming reviews operating systems concepts from a practical perspective using Unix/Linux. Students are expected to visit the accompanying Operating Systems lecture in parallel or have previous knowledge. The lecture is divided into three parts:

1. The C Programming Language

2. Linux System Programming

3. Linux Kernel Development

C is the programming language of Unix operating systems. A thorough discussion of the language with accompanying weekly assignments lays foundation for the following parts.

Knowing the services provided by the Linux kernel (system calls) and the C library forms the basis for advanced programming in the Linux/Unix environment. Topics include File, Buffered, and Advanced I/O (such as scatter/gather, poll, memory mapped I/O), Process Management, File and Directory Management, Memory Management, Signals, and Time facilities.

Linux Kernel Development provides an insight on how to read and enhance kernel code. Topics include the development of Linux kernel modules and simple device drivers. Aspects like kernel threads and basic kernel structures are discussed and reviewed.