08574 - Operating Systems

Academic Year 2025/2026

  • Docente: Renzo Davoli
  • Credits: 12
  • SSD: INF/01
  • Language: Italian
  • Moduli: Renzo Davoli (Modulo 1) Luca Sciullo (Modulo 2)
  • Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2)
  • Campus: Bologna
  • Corso: First cycle degree programme (L) in Computer Science (cod. 8009)

Learning outcomes

The objective of the course is to illustrate the structure and the methods to build modern multitaking operating systems. This course also explains how to install, program and administer an operating system.

Course contents

    Module 1:

    Operating Systems: Definition and History

    Concurrent Programming

    Structure of the OS

    Scheduling

    Resource Management

    Central Memory Management

    Secondary memory management

    File System

    Security in Operating Systems

     

    Module 2:

    C language

    System Call

    Programming tools

    Shell Scripting

    Python language


Readings/Bibliography

Suggested books (these books are quite equivalent)

  • Silbershatz, Galvin, Gagne. Applied Operating System Concepts. Addison Wesley (any edition)
  • Gary Nutt. Operating Systems - A modern Perspective. Addison Wesley
  • Tanenbaum, Woodhill. Operating System Design and Implementation. Prentice Hall
  • William Stallings. Operating Systems. Prentice Hall
For the laboratory assignments:
  • Michael Goldweber, Renzo Davoli µMPS3 Principles of Operation.
  • Michael Goldweber, Renzo Davoli Student Guide to the Pandos Operating System.
  • Richard Stevens. Advanced Programming in UNIX. Addison-Wesley
  • Eric Steven Raymond. The Art of Unix Programming. Addison-Wesley
Further readings:
  • G. Andrews. Concurrent Programming. Benjamin/Cummings, 1991.
On-line documents

Teaching methods

Frontal lectures on the blackboard, also with the aid of slides, made available on the course website (see Link to further information)

Cooperative editors, course wiki, Telegram channel, mailing list.

Classroom exercises in concurrent programming, system call interaction, and scripting.

Laboratory project to be carried out in groups (outside of class hours)

Given the type of activity and teaching methods adopted, attendance at this training activity requires all students to first participate in Modules 1 and 2 of the e-learning course on workplace safety [https://elearning-sicurezza.unibo.it/].

 

Assessment methods

    The Operating Systems exam consists of a project, a practical lab test, a written test, and (optionally) an oral test.

    There are six exam sessions (May, June, July and September 2025, January and February 2026) for the written test and the practical test.

    Project

    The project is carried out in groups of up to four students outside of class hours. Collaboration with the teacher and tutor is expected during class to address concerns, questions, and suggestions. The project is divided into two or three phases. The goal of the project is to develop a teaching operating system.

    The deadline for submitting the phases will be decided during the course. The first phase generally expires the day before the start of classes in the second semester, and the final submission of the final phase is in September 2026.

    The final grade will be calculated as a weighted average of the grades for each phase. The percentages will be made public once the project specifications for the current academic year have been finalized.

    The following factors contribute to the assignment of the grade: consistency with the problem specifications, programming style, efficiency, mastery of the submitted code, and the ability to reason about possible evolutions of the project.

    Once the final phase is completed, the group presents the project in a meeting organized by appointment. The teacher and tutor(s) will discuss implementation details with individual group members and decide on a personal grade (which may be lowered from the group grade for students who demonstrate poor collaboration in the project's development).

    Practical Test

    The practical exam requires problem solving in shell scripting, system programming, Python programming, and system administration. During the exam, students can consult any document and, using the lab systems, freely search for information on the Internet (including using AI tools).

    The practical exam takes place in a department laboratory and is submitted to the instructor via email. The practical exam is followed by a brief discussion with the instructor regarding the solutions to the assigned exercises. The purpose of the discussion is to verify that the candidate understands and is able to manage the assigned solutions.
    The evaluation parameters are: consistent operation with the specifications, coding style, efficiency, ability to describe every detail of the delivered solutions and to evaluate the effects of changes to the code with the instructor.

    The grade is valid for the entire academic year (until the February exam).

    Written Test

    The written examit is divided into two "parts"

    concurrent programming:You are asked to solve some concurrent programming problems, using the primitives seen in the lessons (semaphores, monitors, message passing)

    general part:This part of the written exam is a kind of oral exam. The questions cover the entire course syllabus and require reasoning (i.e., they aren't fact-based).

    Although divided into two parts, the test is a single assignment, and no documents may be consulted during the exam. To pass the written exam, students must obtain a grade of at least nearly sufficient (i.e., at least 16/30) in each part. A written exam grade is valid for the entire academic year (until the February exam session). If a student who received a sufficient grade retakes the written exam, they lose their previous grade. The grade (out of 30) is composed of:

    • 1 point for exercise -1 (having registered to take the exam)

    • 1 point for exercise 0 (write your name and surname, student number and position in the classroom correctly (row and column).

    • 30 points for the remaining exercises as the arithmetic mean between the two parts.

    There is therefore a "bonus" of two points for exercises 0 and -1. In the written tests, the maximum grade is 30 (31 and 32 will be considered 30), the minimum grade is 0. Subject to the necessary condition seen above, the test is considered passed if the final grade is at least 18/30.

    At the end of the test, the solution will be displayed immediately. At this point, you can request that the assignment not be graded. Assignments graded severely insufficient (less than 10/30) will result in the loss of the "bonus" for Exercise 0 and -1 for the next exam. Written exam grades are published anonymously on the mailing list (student number/grade); for severely insufficient grades, only GINS (severely insufficient) is displayed.

    The message with grades also indicates the date and location where students can view their graded assignments. Attendance is strongly encouraged. This suggestion helps students become aware of their mistakes, hoping they won't repeat them in the future.

    During the winter break, a partial written exam will be administered on concurrent programming topics. If passed, this exam replaces the first part of the assignment. Students who pass the partial exam may only take the general part of the written exams.

    The Operating Systems Vote

    After passing all three tests, the overall grade is calculated as a weighted average of the project grade (25%), the practical exam grade (25%), and the written exam grade (50%). The grade must be rounded to the nearest whole number; the exact half point is rounded to the highest grade. You can request that the proposed grade be recorded as the course grade by emailing the instructor. The email, with the subject line "Operating Systems Exam: Grades," must include: your student ID, written exam grade and date, project grade and date of discussion, practical exam grade and date.

    Oral Exam

    The oral exam is optional. To be admitted to the oral exam, a score of at least 18 is required in all sections (written, project, and practical). The oral exam is mandatory only for those wishing to achieve a grade of 30 cum laude in the operating systems exam. To achieve this grade, students must demonstrate not only knowledge of the topics covered in the course, but also a genuine aptitude for the subject and a specific personal interest. The final grade is based on the scores obtained in the other sections: it may be the same grade, or it may be increased or decreased based on the student's level of preparation.


Teaching tools

Departmental Distributed Information System (DISI). Ercolani Laboratory. Student Personal Computers (BYOD).


This course is proprietary software free, i.e. we'll use libre (FLOSS) software only. Students can deepen their understanding at any level and they are free to use the knowledge acquired in this course.

Links to further information

http://www.cs.unibo.it/~renzo/so/

Office hours

See the website of Renzo Davoli

See the website of Luca Sciullo

SDGs

Quality education Industry, innovation and infrastructure Partnerships for the goals

This teaching activity contributes to the achievement of the Sustainable Development Goals of the UN 2030 Agenda.