
03NYHYG
A.A. 2026/27
Inglese
Master of science-level of the Bologna process in Ingegneria Informatica (Computer Engineering) - Torino
| Teaching | Hours |
|---|---|
| Lezioni | 20 |
| Esercitazioni in laboratorio | 18 |
| Esercitazioni in aula | 12 |
| Tutoraggio | 15 |
| Teacher | Status | SSD | h.Les | h.Ex | h.Lab | h.Tut | Years teaching |
|---|---|---|---|---|---|---|---|
| Quer Stefano | Professore Associato | IINF-05/A | 20 | 12 | 0 | 0 | 8 |
| Teacher | Status | SSD | h.Les | h.Ex | h.Lab | h.Tut |
|---|---|---|---|---|---|---|
| Malandrino Francesco | Docente esterno e/o collaboratore | 0 | 0 | 36 | 15 |
| SSD | CFU | Activities | Area context | ING-INF/05 | 5 | B - Caratterizzanti | Ingegneria informatica |
|---|
Inglese
Master of science-level of the Bologna process in Ingegneria Informatica (Computer Engineering) - Torino
| Teaching | Hours |
|---|---|
| Lezioni | 20 |
| Esercitazioni in laboratorio | 18 |
| Esercitazioni in aula | 12 |
| Tutoraggio | 15 |
| Teacher | Status | SSD | h.Les | h.Ex | h.Lab | h.Tut | Years teaching |
|---|---|---|---|---|---|---|---|
| Cabodi Gianpiero | Professore Associato | IINF-05/A | 18 | 10 | 24 | 0 | 1 |
| Teacher | Status | SSD | h.Les | h.Ex | h.Lab | h.Tut |
|---|---|---|---|---|---|---|
| Docente Da Nominare | 0 | 0 | 12 | 15 | ||
| Quer Stefano | Professore Associato | IINF-05/A | 2 | 2 | 0 | 0 |
| SSD | CFU | Activities | Area context | ING-INF/05 | 5 | B - Caratterizzanti | Ingegneria informatica |
|---|
System and device programming (API Programming)
This course is held at the second semester of the first year of the Master of Computer Engineering, and it is organized in two parts. The first part introduces the architecture and the design principles of an operating system. More specifically, it deals with internal operating system modules, together with the main techniques and strategies for efficient management of resources such as processors, memories, peripheral devices, files, etc. The second part describes programming interfaces for system programming and resource management, as well as concurrent programming. It introduces system programming techniques, within the framework of state-of-the-art operating systems, such as Unix/Linux and Windows. Advances concurrend programming techniques are introduced and used.
System and device programming (OS Internals)
This course is organized into two parts (modules): this part ("OS internals") introduces the architecture and design principles of an operating system, while the "API programming" section describes programming interfaces for system programming and resource management, as well as concurrent programming. The "OS internals" section deals with internal operating system modules, along with the main techniques and strategies for efficiently managing resources such as processors, memories, peripheral devices, files, etc.
System and device programming (API Programming)
This course, delivered in the second semester of the first year of the Master’s degree in Computer Engineering, provides a comprehensive overview of modern computing systems, devices, and parallel programming paradigms. It emphasizes the use of C, C++, POSIX standards, and NVIDIA CUDA. The development of problem-solving competencies is supported through practical activities and programming exercises conducted on contemporary operating systems, including Unix/Linux, Windows, and macOS.
System and device programming (OS Internals)
This course is organized into two parts (modules): this part ("OS internals") introduces the architecture and design principles of an operating system, while the "API programming" section describes programming interfaces for system programming and resource management, as well as concurrent programming. The "OS internals" section deals with internal operating system modules, along with the main techniques and strategies for efficiently managing resources such as processors, memories, peripheral devices, files, etc.
System and device programming (API Programming)
Part I • Knowledge of the operating systems architecture as a collection of resource managers • Knowledge of operating system kernel modules, and new module implementation skills • Skill to use system calls for creation, synchronization and termination of processes and threads • Knowledge of virtual memory mechanisms • Skill to understand and implement virtual memory management algorithms • Knowledge of peripheral device management techniques • Skill to understand and implement device drivers Part II • Knowledge of modern file system organizations and skill to manage file systems and file locking • Knowledge of system programming APIs (system calls) • Skill to understand and implement programs based on system calls • Skill to understand and implement programs with advanced file system interactions, such as sequential, random and/or shared file access, and directory manipulation • Skill to understand and implement reliable/robust programs exploiting exception and signal handling • Skill to understand and implement programs with advanced memory management tachniques, such as dynamic allocation, memory mapping of files, dynamic libraries • Skill to understand and implement concurrent programs based on processes/threads • Skill to understand and implement concurrent programs exploiging • Advanced synchronization, message passing, and data sharing techniques
System and device programming (OS Internals)
- Knowledge of operating system architecture as a set of resource managers - Knowledge of operating system core modules, and ability to implement new modules - Ability to use system calls for the creation, synchronization, and termination of processes and threads - Knowledge of the virtual memory mechanism - Ability to analyze and implement virtual memory management algorithms - Knowledge of peripheral device management techniques - Ability to analyze and implement device drivers - Knowledge of the organization of modern file systems and ability to manage them
System and device programming (API Programming)
Upon successful completion of the course, students will be able to: • Apply knowledge of C, C++, POSIX, and C++/CUDA standards to effectively utilize system programming interfaces (system calls) for the development of robust applications. • Design and implement programs demonstrating advanced proficiency in: o File system interactions: Implement both sequential and random access patterns for ASCII, Unicode, and binary files. o Memory management: Employ advanced techniques, including dynamic allocation, smart pointers, and RAII (Resource Acquisition Is Initialization). o Concurrency: Design and develop parallel solutions using threads. o Thread hierarchy and memory organization in CUDA: Manage advanced thread hierarchies and memory access patterns. o Synchronization: Apply both fundamental and advanced synchronization techniques.
System and device programming (OS Internals)
- Knowledge of operating system architecture as a set of resource managers - Knowledge of operating system core modules, and ability to implement new modules - Ability to use system calls for the creation, synchronization, and termination of processes and threads - Knowledge of the virtual memory mechanism - Ability to analyze and implement virtual memory management algorithms - Knowledge of peripheral device management techniques - Ability to analyze and implement device drivers - Knowledge of the organization of modern file systems and ability to manage them
System and device programming (API Programming)
• Knowledge of a computer system architecture, with a specific emphasys on the structure of the CPU and memory subsystem • Knowledge of the interrupt mechanism and basics of an assembly language • Knowledge of the foundations of data structures and algorithms • Good programming skill in C language • Knowledge of base concurrent programming techniques.
System and device programming (OS Internals)
- Knowledge of computer system architecture: particularly processor structure and memory organization - Knowledge of the interrupt mechanism and the fundamentals of assembly language - Knowledge of fundamental data structures and algorithms - Ability to develop programs in C language - Knowledge of basic concurrent programming techniques - Knowledge of operating system architecture and operating system components for managing the CPU and user processes. These prerequisites are typically met by completing the courses Programming Techniques, Algorithms and Data Structures, Computers, Operating Systems, and Computer Networks.
System and device programming (API Programming)
Knowledge of computer system architecture, with particular emphasis on: o The structure and organization of the CPU and the memory subsystem. o The interrupt mechanism and the fundamentals of assembly language. Fundamental concepts of operating system architectures, including: o The core functionalities of modern operating systems. o Familiarity with UNIX-like and Windows operating systems, including their structure and primary tools (e.g., shell environments and key programming utilities). Foundations of data structures and algorithms, including: o Proficiency in C programming, encompassing dynamic memory allocation and advanced data structures (e.g., dynamic one- and two-dimensional arrays, lists, trees, hash tables, heaps, priority queues, and graphs). o Knowledge of concurrent programming techniques (e.g., processes, threads, synchronization mechanisms, and semaphores).
System and device programming (OS Internals)
- Knowledge of computer system architecture: particularly processor structure and memory organization - Knowledge of the interrupt mechanism and the fundamentals of assembly language - Knowledge of fundamental data structures and algorithms - Ability to develop programs in C language - Knowledge of basic concurrent programming techniques - Knowledge of operating system architecture and operating system components for managing the CPU and user processes. These prerequisites are typically met by completing the courses Programming Techniques, Algorithms and Data Structures, Computers, Operating Systems, and Computer Networks.
System and device programming (API Programming)
Part I • Review of operating system architecture (3.0 hours) o Modules for the management of the resources of a computer system o Process and thread management synchronization (recalls) • Memory management (10.0 hours) o Physical and logical address spaces, MMU, TLB o Paging o Virtual memory and demand paging • Peripheral Device management (3.0 hours) o Drivers and IO device management o Disk management • File system management (6.0 hours) o File system organization and protection o Management an operations on files and directories • Teaching operating system OS161 (10.0 hours) o System level architecture, source files, compilation, execution, debug o Implementation of simple system calls for standard I/O o Thread and user process management o Implementation of synchronization primitives o Implementation of simple support for file I/O • Laboratory practice on all previous topics (18.0 hours). Part II • Review of basic system and concurrent programming (6.0 hours) o Processes o Threads o Concurrent programming and synchronization in POSIX • Introduction to concurrent programming in C11 (2.0 hours) • Introduction to the Windows API (6.0 hours) • Introduction to the C++ language (10.0 hours) o Classes, inheritance and polymorphism o Exception handling and runtime support o Generic programming o Concurrent programming • Win32 and Linux system programming and concurrent programming (4.0 hours) o File and directory management o Process and thread management o Synchronization o Exception and signal handling o Memory management o Synchronous and asynchronous I/O o Inter-process communication • Examples of Windows and Linux application development (4.0 hours) o General principles o Reactive programming • Laboratory practice on all previous topics (18.0 hours).
System and device programming (OS Internals)
Operating System Architecture Review (3 hours) - Resource management modules of a processing system - Management of processes and threads (reviews) Memory Management (9 hours) - Physical and logical addresses, MMU, TLB - Paging - Virtual memory and paging on demand Management of peripheral units (3 hours) - Drivers and device management - Management of disk accesses File Management (6 hours) - Organization of a file system, - Organization and operations on files and directories Educational Operating System OS161 (9 hours) - System architecture, structure of sources, compilation, execution, debugging - Creation of simple system calls for input/output - Management of threads and user processes - Implementation of synchronization primitives - Implementation of simple support for file I/O - Management of simple IO operations for character devices
System and device programming (API Programming)
The "API Programming" part of the "System and device programming" course accounts for about 56 hours of the 100 available for both the "API Programming" and "Operating System Internal" parts. • Course introduction with an overview of the prerequisites, the program, and the examination rules (1.5 hours) • Introduction to the C++ language (6.0 hours): o Language basics. o Functions. o Classes, inheritance, and polymorphism. o Simple examples and exercises in C++. • The C++ standard library (12.0 hours): o The Input/Output library. o Sequential containers. o Associative containers. o Generic programming. o Dynamic memory management. o Copy control. o Templates. o Problem-solving and applications in C++. • Parallel programming in C++ (9.5 hours): o Multithreading. o Basics synchronization paradigm: semaphores and mutexes. o Advanced synchronization paradigm: condition variables, barriers, thread throttles, thread pools, C++ tasks with futures and promises. o Parallel problem-solving and applications in C++. • GPU (Graphic Processing Units) for GPGPU Programming (General Programming in GPUs) (10.5 hours) o Theory of concurrency and parallelization o Thread hierarchy. o Warps. o Global Memory. o Memory models. o Synchnoization in CUDA. o Parallel problem-solving and applications in NVIDIA CUDA. • Review, exam-based exercise, and Q/A session (1.5 hours). • Laboratory practice on all previous topics (15.0 hours).
System and device programming (OS Internals)
Operating System Architecture Review (3 hours) - Resource management modules of a processing system - Management of processes and threads (reviews) Memory Management (9 hours) - Physical and logical addresses, MMU, TLB - Paging - Virtual memory and paging on demand Management of peripheral units (3 hours) - Drivers and device management - Management of disk accesses File Management (6 hours) - Organization of a file system, - Organization and operations on files and directories Educational Operating System OS161 (9 hours) - System architecture, structure of sources, compilation, execution, debugging - Creation of simple system calls for input/output - Management of threads and user processes - Implementation of synchronization primitives - Implementation of simple support for file I/O - Management of simple IO operations for character devices
System and device programming (API Programming)
System and device programming (OS Internals)
System and device programming (API Programming)
System and device programming (OS Internals)
System and device programming (API Programming)
The class can be divided into theory lectures, practice lessons and laboratories. There is no formal distinction between theory and practice as almost all course topics involve theory and practice aspects developed during the classroom lessons by the teacher. Laboratories (36 hours overall) allow students to solve typical concurrent problems, to be introduced to system, kernel and module programming, and applying all theory and practice aspects analyzed during the classroom lessons. The course also include an optional project, done by working groups, on advanced topics from either of the two parts of the course Laboratories and projects of the part I include • Customizing and installing the OS161 (Unix-like teaching operating system) kernel • OS booting • Writing a system call • OS support for process and thread management • Synchronization primitives • Creating and terminating a user process • Support for file system management and structure of a device driver Laboratories and projects of the part II include • System calls for file system interface, file and directory management • Concurrent programming based on thread and processes • Synchronization primitives and concurrent programming templates • Programs with exception and/or signal handling • Programs with advanced dynamic memory management, memory mapping of files, dynamic libraries, inter-process communication.
System and device programming (OS Internals)
A) Classroom lectures/exercises (32 hours) B) Laboratory exercises (18 hours) - Modifying and installing the OS161 kernel (an educational operating system inspired by Unix) - Bootstrapping an Operating System - Creating a system call - Support for process and thread management - Synchronization primitives - Creating and terminating a process - Support for file systems and device driver structure C) Project: optional, carried out in working groups, on in-depth topics related to one of the two parts of the course (operating system project or API programming)
System and device programming (API Programming)
The course comprises theoretical lectures, practical sessions, and laboratory activities. No strict separation is made between theoretical and practical components, as most topics inherently integrate both aspects, which are developed concurrently during classroom instruction. Laboratory sessions (approximately 15 hours in total) provide students with the opportunity to address representative concurrent programming problems and to gain exposure to system-level concepts, including kernel interactions and modular programming. These activities reinforce both the theoretical foundations and practical skills introduced during lectures. The course also offers an optional group project focused on advanced and multidisciplinary topics. Laboratory sessions and project activities within the “API Programming” module include: • Review of C programming, the UNIX environment, and programming APIs across UNIX, Windows, and macOS platforms. • Fundamental problem solving in C++, with emphasis on file handling and sequential containers. • C++ programming with a focus on libraries. • Parallel programming in C++ using threads, tasks, and synchronization primitives. • Introduction to parallel programming with NVIDIA CUDA.
System and device programming (OS Internals)
A) Classroom lectures/exercises (32 hours) B) Laboratory exercises (18 hours) - Modifying and installing the OS161 kernel (an educational operating system inspired by Unix) - Bootstrapping an Operating System - Creating a system call - Support for process and thread management - Synchronization primitives - Creating and terminating a process - Support for file systems and device driver structure C) Project: optional, carried out in working groups, on in-depth topics related to one of the two parts of the course (operating system project or API programming)
System and device programming (API Programming)
Handouts and slides used during the classroom lessons are available on the teacher or course WEB site. The World Wide Web is also an excellent source of material for almost all topics introduced in the class (see Wikipedia, for example). Among the printed material, during the class, we make explicit usage of the following books: • J. M. Hart, "Windows System Programming", Addison-Wesley Publishing Company • A. Silberschatz, P. B. Galvin, G. Gagne, "Operating System Concepts", John Wiley & son • W. R. Stevens, "Advanced programming in the UNIX Environment", Addison-Wesley
System and device programming (OS Internals)
- Teaching materials available on the Web - Slides projected in the classroom - Exercises and solutions
System and device programming (API Programming)
Handouts and lecture slides used during classroom sessions are made available through the instructor’s or course website. The World Wide Web also represents a valuable source of supplementary material for most of the topics covered in the course (e.g., Wikipedia). Among printed resources, the following textbooks are explicitly referenced during the course: • A. Silberschatz, P. B. Galvin, G. Gagne, "Operating System Concepts", John Wiley & Sons. • W. R. Stevens, S. A. Rago, "Advanced Programming in the UNIX Environment", Addison-Wesley. • S. B. Lippman, J. Lajoie, B. E. Moo, "C++ Primer", Addison Wesley, Fifth Edition. • J. Flux, "Mastering CUDA Programming with C++: A Comprehensive Introduction", Independently published
System and device programming (OS Internals)
- Teaching materials available on the Web - Slides projected in the classroom - Exercises and solutions
System and device programming (API Programming)
Slides; Dispense; Libro di testo; Libro di esercitazione; Esercizi; Esercizi risolti; Esercitazioni di laboratorio; Esercitazioni di laboratorio risolte; Video lezioni dell’anno corrente; Video lezioni tratte da anni precedenti; Strumenti di auto-valutazione;
System and device programming (OS Internals)
Slides; Libro di testo; Esercizi risolti; Esercitazioni di laboratorio; Esercitazioni di laboratorio risolte; Video lezioni tratte da anni precedenti; Materiale multimediale ; Strumenti di auto-valutazione;
System and device programming (API Programming)
Lecture slides; Lecture notes; Text book; Practice book; Exercises; Exercise with solutions ; Lab exercises; Lab exercises with solutions; Video lectures (current year); Video lectures (previous years); Self-assessment tools;
System and device programming (OS Internals)
Lecture slides; Text book; Exercise with solutions ; Lab exercises; Lab exercises with solutions; Video lectures (previous years); Multimedia materials; Self-assessment tools;
System and device programming (API Programming)
Modalita di esame: Test informatizzato in laboratorio; Elaborato progettuale in gruppo; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
System and device programming (OS Internals)
Modalita di esame: Prova scritta (in aula); Elaborato progettuale in gruppo; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
System and device programming (API Programming)
Exam: Computer lab-based test; Group project; Computer-based written test in class using POLITO platform;
System and device programming (OS Internals)
Exam: Written test; Group project; Computer-based written test in class using POLITO platform;
System and device programming (API Programming)
The exam consists of a written test and an optional group project. The course does not include any oral examination, but the optional group project will be openly presented by the students belonging to the same group during one of the examination sessions. The target of the written test is to check the acquire theoretical knowledge in the area and to verify the ability of the candidate to solve medium-size problems in the operating system and device programming area (such as device management, system resource management, concurrent programming, etc.). The target of the project is to force the student to work and to coordinate his/her effort with his/her peers, and to face more complex and complete problems in the same area. The Written Test The written test includes questions and exercises on both theoretical and practical aspects of the entire course. Theoretical questions may include open and closed puzzles. These are formulated to test the candidate’s knowledge on all topics presented during the course and his/her ability to solve problems related to theoretical aspects. Practical questions and exercises test the ability of the candidate to solve system, device and concurrency problems writing programs in different environments and programming languages (UNIX/Linux, Windows, C, C++, etc.). The written test is divided into two sessions following the previously described parts of the course. Both parts may include theoretical and practical aspect, involving respectively: • Operating system internal topics • System, device and concurrent programming aspects. Both parts amount up to 13 points on the final evaluation mark. Each part has a passing threshold of 7 points. Thus, to pass the exam, a pass grade (larger or equal than 7) is required on both parts. The final mark is the sum of the two evaluations. As a consequence, the maximum grade that can be reached with the written test is equal to 13+13=26 out of 30. The exam is considered as passed only if the written mark is larger or equal to 18. The time allowed for each written part may vary from 60 to 120 minutes, depending on the examination text. No books, notes, portable devices, or other material is allowed during the written text. The two written parts can be taken during different examination sessions, but these sessions must be placed within a period corresponding to one academic year (e.g., if one take the first written text in September the second one must be taken at most in the summer session, i.e., June/July of the next year). It is possible to reject a written mark only when the mark is delivered or when it is coupled with a previous mark. In other words, as soon as both parts have been passed, and their sum is larger or equal to 18, the written marks are considered as final, i.e., they can be improved only with the mark eventually obtained with the project. Moreover, any final mark will be registered as soon as possible, i.e., as soon as the mark of the project (if the project has been taken by the student) will be available. On the contrary, when the validity of one written part expires, it will be automatically lost. In this case the candidate will have to retake the corresponding written test. The Optional Project An optional project, on either one of the two course parts, may be taken to improve the candidate’s knowledge on the course’s topics and eventually amend the final mark. Anyway, the exam is considered as “passed” only if the written test is passed. Projects are specified yearly before then end of May, and must be selected by all students who want to apply for it before the end of June. Projects are usually taken by group of candidates (from 2 to 4). To balance the teachers’ load during each academic year, there is a limit on the number of projects that are delivered on each one of the course parts. Project will be assigned to group of students on a first-come-first-served basis. It must be noticed that each candidate is entitle to take a project at most once in his/her studying career at Politecnico, either during the first year he/she is enrolled in the course or in one of the following year. The project mark will follow a short presentation given by the group of candidates. The purpose of this presentation is to present the main algorithmic flow, the main criteria and ideas used to solve the problem. To enroll for a project presentation the group of student must upload the entire project kit on the portal web page (at the “Materiale” session) before the written test date of that examination session. This has to be done within the same academic year the project has been offered and more specifically in one of the 4 examination sessions following each course. The beginning of the course of the following academic year will automatically erase all pending projects (i.e., projects without a final mark). Once that the final mark for a project has been obtained there is no time limit to its validity. Each project can add from -2.0 to +6.0 marks to the final written evaluation. Marks can be different for different students within the same group, depending on the effort they put into the project and on the final presentation delivered. The maximum mark which can be obtained with both the written test and the group project amount to 26+6 = 32 out of 30. Marks equal to 31 or 32 will be automatically converted into 30 with honor.
System and device programming (OS Internals)
The exam for the "OS internals" module consists of a written exam, lasting a total of 80 minutes, with exercises and/or questions on topics covered in class. The questions are designed to assess all related learning objectives, both in terms of knowledge and skills acquired. The exam is administered on a PC using the university platform. In the event of technical problems, the exam will be a paper-based exam, with the same outline and content. It is not possible to consult texts or notes during the exam. The rules are the same for both modules. The exams for both parts can be taken in different exam sessions, within a time frame of four exam sessions, which corresponds to approximately one calendar year. The final score is obtained by adding the two parts, each of which receives a maximum score of 15. Written exams can therefore receive a maximum score of 30. The exam is failed if the score for one of the two parts (modules) is less than 7, or if the sum does not reach 18. An optional project (group work) on one of the two modules is added to the written exam, with a maximum score of 6. An overall grade of 31 or higher earns a 30 with honors. The project primarily assesses the learning objectives in terms of acquired skills. The methods and deadlines for the projects are indicated by the instructors.
System and device programming (API Programming)
Exam: Computer lab-based test; Group project; Computer-based written test in class using POLITO platform;
System and device programming (OS Internals)
Exam: Written test; Group project; Computer-based written test in class using POLITO platform;
System and device programming (API Programming)
General Examination Information and Logistics The examination consists of a computer-based written test administered through the University “Esami” platform. No oral examination is allowed for this course. Examinations are held on-site in designated classrooms. Students are required to bring their own laptops and must verify in advance that their hardware and software satisfy the required specifications. Instructors will be present throughout the examination to provide supervision and technical assistance. Student Responsibilities and Academic Integrity Students must comply with all University regulations governing examinations. Each student is responsible for ensuring the availability and proper functioning of the required hardware and software. Any technical or infrastructural issue arising during the examination must be promptly reported to the instructors. Students are required to adhere to the University’s code of academic integrity. In cases of suspected irregularities, the instructors reserve the right to require an additional oral assessment covering all course topics. Examination Formats Students may choose between two examination formats: Standard and Simplified. The Standard format consists of a written test and an optional group project. The simplified format consists only of the written test. Written Test Formats • Standard Format of Structure: 6 questions, including 3 closed-answer questions and 3 open-answer questions. o Focus: Assessment of both theoretical knowledge and problem-solving skills, including code design and development. o Duration: 100 minutes. • Simplified Format of Structure: 12 closed-answer questions (multiple choice, single-value, or array-based answers). o Focus: Assessment primarily based on theory aspects and code comprehension and interpretation, with reduced emphasis on code development. o Duration: 80 minutes. Optional Group Project (Standard Format) • Purpose: To deepen understanding of course topics, promote teamwork, and address more complex problems, with the possibility of improving the final grade. • Prerequisite: The written test must be passed independently of the project. • Project specifications are published annually before the end of May. Students must select a project soon after their publication. Projects are typically carried out in groups of 2–3 students and assigned on a first-come, first-served basis, subject to availability and workload constraints. Each student may undertake the project at most once for this course during their academic career. • Each group is required to deliver a short presentation illustrating the adopted approach, methodology, and results. To access the presentation, the complete project material must be uploaded to the course portal (“Materiale”) before the written test date of the selected session. Submission and presentation must occur within the same academic year and during one of the four available examination sessions. Projects not submitted within this timeframe are considered expired. Once assigned, the project grade does not expire. • The project may modify the written test grade within the range [−2.0, +6.0]. Individual grades may differ within a group, depending on the contribution and presentation quality. Written Test Evaluation and Validity The written test consists of two components: API Programming and Operating Systems Internals. The two components may be taken in different examination sessions; however, both must be passed within the same academic year (e.g., if one component is passed in September, the second must be passed no later than the June/July session of the same academic year). Otherwise, the previously obtained result is forfeited. In the Standard format, each component is graded on a 15-point scale. A minimum score of 7/15 in each component is required. The final grade is the sum of the two component scores (maximum 30/30), possibly adjusted by the project evaluation, and must be at least 18/30 to pass. In the Simplified format, each component is evaluated on a pass/fail basis. Both components must be passed; in this case, the final grade is registered as 18/30. It is permitted to combine results obtained under different formats (Standard and Simplified). In this case, the maximum achievable final grade is limited to 18/30. A student may refuse a component grade only at the time of publication or when combining it with a previously obtained result. Once both components are passed and the final grade is at least 18/30, the result is considered final, except for possible adjustment through the optional project. The project grade has no expiration. However, the project must be submitted within the same academic year in which it is assigned, and in any case, before the beginning of the following academic year in which the course is delivered.
System and device programming (OS Internals)
The rules are the same for both modules. General Exam Information & Logistics The course examination is a computer-based written test administered via the university's "Esami" platform. No oral examination component is included in this course. Exams are conducted on-site in a designated classroom. Students are required to bring their own laptops and verify their hardware and software features before the exam. Instructors will be present during the examination to provide necessary assistance and supervision. Student Responsibilities & Academic Integrity Students are required to familiarize themselves with and adhere to all University regulations pertaining to examinations. It is each student's responsibility to ensure they have the necessary hardware and software tools for the exam. Any infrastructural issues encountered during the exam must be promptly communicated to the instructors. All students must respect the ethical code defined by the University. In cases where irregularities are detected, the professors reserve the right to conduct an additional oral verification covering all course topics with the student(s) involved. Examination Paths Students may take the examination via one of two formats: Standard or Simplified. The "Standard" Examination Format consists of a written test and an optional group project. The "Simplified" Examination Format includes only the written test. The Written Test (Standard Format). • Objective: To assess acquired theoretical knowledge and the ability to solve medium-complexity problems in operating systems and device programming (e.g., device management, system resource management, concurrent programming). • Content: Includes questions and exercises covering all theoretical and practical aspects of the course. Theoretical questions test knowledge of topics presented and problem-solving related to theoretical aspects. Practical questions and exercises assess the ability to solve system, device, and concurrency problems by writing programs in environments like UNIX/Linux (using C, C++, etc.). • Structure: The written test is divided into two parts, corresponding to the two main sections of the course: Operating system internal topics and system, device, and concurrent programming aspects. Both parts may include theoretical and practical questions. • Question Types: Includes closed-answer (automatically corrected) and open-answer (manually graded) questions and exercises. Accuracy and strict adherence to specified formats are required for automatically corrected questions. Incorrect responses to automatically corrected questions will incur a penalty on the final score. • Scoring & Passing. Each of the two parts contributes a maximum of 15 points to the final written test score. A minimum score of 7 points is required on each part to pass that part. To pass the written test, a passing grade (larger than or equal to 7) is required on both parts, and the sum of the two evaluations must be larger than or equal to 18. The maximum score for the written test is 30 points (15+15). • Duration: The time allowed for each written part may vary from 60 to 120 minutes, depending on the specific exam content. • Permitted Materials: No books, notes, portable devices, or other external materials are allowed during the written test. • The two written parts can be taken during different examination sessions. However, both parts must be successfully completed within one academic year (e.g., if the first part is taken in September, the second must be passed by the June/July session of the following year). A student may reject a score for a written part only at the time it is delivered or when it is being combined with a previously passed part's score. Once both parts have been passed and their sum is ≥18, the combined written test score is considered final (modifiable only by the optional project score). Final marks (including any project adjustments) will be registered as soon as the project mark (if applicable) is available. If the validity period for a passed written part expires (i.e., the other part is not passed within the academic year), its score is voided, and that part must be retaken. Optional Group Project (Standard Format). • Purpose: Allows students to deepen their understanding of course topics, work collaboratively, tackle more complex problems, and potentially improve their final grade. • Prerequisite: The overall exam is considered "passed" only if the written test (both parts) is passed, regardless of project participation. • Project specifications are released annually before the end of May. Students wishing to undertake a project must select one before the end of June. Projects are typically undertaken by groups of 2 or 3 candidates. Project assignment is on a first-come, first-served basis. Some projects may have limited applicant slots, and there's a limit on projects per course part to balance teacher workload. Each student may undertake a project at most once during their academic career at Politecnico for this course, either during their initial enrollment year or a subsequent year. Groups will give a short presentation on their project, outlining the main algorithmic flow, criteria, and problem-solving ideas. To register for a presentation, the complete project kit must be uploaded to the course portal (under "Materiale") before the written test date of that examination session. Submission and presentation must occur within the same academic year the project was offered, specifically in one of the four examination sessions following that course offering. Pending projects (not submitted and graded) expire at the start of the next academic year. Once a final mark for a project is obtained, it has no expiration date. The project can adjust the final written evaluation by -2.0 to +6.0 points. Individual marks within a group may vary based on individual effort and presentation quality. Final Grading (Standard Format) * The maximum possible score, combining the written test (max 30) and the group project (max +6), is 36 points. * Final scores of 32 or higher (out of a possible 36) will be automatically recorded as "30 with honors". The "Simplified" Examination Format. This path is available for students who may benefit from an alternative assessment structure (e.g., those with reduced initial prerequisites, specific needs, or who encountered particular difficulties during the course). It involves a single written test resulting in a "pass" or "fail" outcome. A "pass" in this format corresponds to a final registered grade of 18/30. The test is divided into two parts (corresponding to the course's two main sections) and covers theoretical and practical aspects of the entire course. Compared to the standard exam, this test places more emphasis on theoretical understanding and is less demanding regarding complex problem-solving and C/C++ implementation tasks. It includes 5 to 15 questions on each part. Each part includes closed-answer (automatically corrected) and open-answer (manually graded) questions and exercises. Accuracy and strict adherence to specified formats are required for automatically corrected questions. Incorrect responses to automatically corrected questions will incur a penalty. The student passes the simplified exam if and only if they achieve a passing grade on both internal parts of this single test.