Systems Programming - Fall 2024

Instructor: Antonio Carzaniga
Assistants: Fabio Di Lauro, Pasquale Polverino, Christian Lämmle, Ilia Zeller.
Lectures: Monday 11:00–12:30, Wednesday 11:00–12:30.
Exercise sessions: Wednesday 15:30–17:00.
See the course weekly schedule or the third-semester Bachelor schedule for details and updates
Instructors' Office Hours: by appointment
Assistants' Office Hours: by appointment

Objectives

What is systems programming? In a way it is just programming. But it is also more specific: it means developing programs that interact with other programs or “systems,” as opposed to human users. Systems require specific interactions, usually with rigid formats. Systems also have non-trivial structures and architectures, with specific performance characteristics that might be crucially important for the programmer. Some systems might also have non-traditional execution models that, effectively, change the way we program. Examples of such systems are database systems, networked systems, operating systems, specialized devices, special purpose processors, or even general purpose architectures with non trivial architectures (e.g., any non-trivial memory structure).

The primary language of systems programming is the C programming language. C and C++ are also very important application languages. 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 good C programs, but also to understand their execution model in depth. This course does not require any previous knowledge of C, although it requires some elementary notions of computer programming.

Contents

The course will cover:

Policies

See this page for evaluation criteria and general policies.

Useful Links

Additional information is available through the following links and pages.

Lectures and Material

this page is maintained by Antonio Carzaniga and was updated on September 10, 2024