CSaP

Computer Systems and Programming (2025 - 2026)

NEWS


Class Timetable AA 2025-2026

Lectures will be delivered in presence.


Office Hours

By appointment. Students can always use email and/or schedule a webmeeting.


CSAP Google Group

A group has been created in order to allow communication, sharing of information, etc.

Students must send an email including their name, surname, student ID (matricola), and institutional email address in order to be added to the group. The group will be used for last-minute communications and for sharing course materials and instructions regarding the project and the exam. Students should use their institutional email address (lastname.studentID@studenti.uniroma1.it) to get added to the group.


Objectives

The course is mainly focused on system programming for Unix/Linux systems.

The objective is to make students able to understand, write and modify programs interfacing with the Linux operating system and its kernel source code.
More precisely, we expect the students to acquire knowledge of:

  1. the C language and the tools normally used in the development environment (compiler, preprocessor, shell, etc.)
  2. the fundamental functions of the operating system and its main modules (Scheduler, Virtual Memory Manager, Filesystem, …)
  3. the main system primitives for the creation and synchronization of processes, exchange of messages and information (this is the core of the course)
  4. basic methods for network programming (sockets)

At the end, the students are provided by operating system and integrate them correctly into the code:


Prerequisites

To be able to follow the course, you will need at least:

Each student should have access to a Linux system (a VM is ok).
Ubuntu 24.04 (or later) is the recommended platform that is the OS on which the project will be tested.
To install Ubuntu using a VM see this link (virtualbox) or this link (UTM. Recommended for MACs).

Working natively on other devices, such as Mac or Windows laptop, while possible, is not recommended due to subtle differences in the compiler suite and OS interface.


Project (Final Examination)

The project can be done in two persons, which must include appropriate documentation (Use cases, functional and non functional requirements, etc.).

Each exam session may have a different project. All detailed specifications and instructions for the submission (deadline, date of the oral exam) will be posted on the Google Group. It is the student’s responsibility to request access to the group and to check this information in a timely manner.

The project must constitute an original creation, therefore it is not possible to share parts of the code or copy contents from other sources.

However, discussions between students, exchanges of ideas, use of mailing lists, chats, and in general everything that helps the student to learn are legitimate and appreciated (in case of doubts regarding which forms of collaboration are considered legitimate or not, it is better to explicitly ask for clarification).

The project consists of a C language program that satisfies a set of specified requirements, using the library calls that are part of the course program. The use of other calls is generally not accepted. If in doubt, ask the teacher.

The project code must correctly compile and execute in the required software environment.

The final grade will be based on the quality of the code, the completeness and clarity of the documentation, and the oral discussion of the project.

Evaluation criteria


Program

These are the topics that are planned to be covered during the course.
Of course mileage may vary, depending on time available, etc.