Scheda programma d'esame
OPERATING SYSTEMS AND SYSTEM PROGRAMMING PRACTICE
MASSIMO TORQUATI
Academic year2020/21
CourseCOMPUTER SCIENCE
Code277AA
Credits12
PeriodSemester 2
LanguageItalian

ModulesAreaTypeHoursTeacher(s)
LABORATORIOINF/01LABORATORI48
GABRIELE MENCAGLI unimap
MASSIMO TORQUATI unimap
SISTEMI OPERATIVIINF/01LEZIONI48
MASSIMO TORQUATI unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

Lo studente acquisirà conoscenze relative ai concetti principali dei Sistemi Operativi moderni e della loro implementazione. Inoltre acquisirà i concetti e le metodologie della programmazione concorrente con threads e processi.

Knowledge

The student who successfully completes the course will demonstrate a solid knowledge of the fundamental concepts related to the Operating Systems, of the aspects related to their implementations and of concurrent programming in general.

 

Modalità di verifica delle conoscenze

La valutazione avverrà tramite una prova scritta ed una prova orale dove verrà discusso il progetto assegnato durante il corso.

Nella prova  scritta verrà valutata la capacità dello studente di comprendere e di risolvere alcuni esercizi che presentano situazioni ipotetiche in un sistema operativo e verrà valutata la capacità di presetare  contenuti del corso usando una terminologia appropriata.

Con il progetto verrà valutata la capacità dello studente di mettere in pratica le conoscenze acquisite, tramite la realizzazione di un progetto che implementa un sistema concorrente funzionante.

 

 

 

Assessment criteria of knowledge

- The student will be assessed on his/her demonstrated ability to discuss the main course contents using the appropriate terminology.
- During the written test, the student must demonstrate his/her knowledge of the course material and to be able to solve exercises and to discuss the reading material thoughtfully and with suitable propriety of expression.
- The student must also demonstrate the ability to put into practice and execute, with critical awareness, the activities illustrated or carried out under the teacher's guidance during the laboratory by implementing a project related to a concurrent system on a topic proposed by the teacher.

Methods:
 - written tests
 - project implementation with face-to-face discussion with the teacher

Further information:
Students must produce a working project as result of the laboratory part. 

Capacità

Lo studente acquisirà la capacità di scrivere programmi concorrenti sia con thread che con processi che utilizzano chiamate di sistema POSIX per l'uso dei dispositivi e per l'interazione con il Sistema Operativo.

Skills

The student will obtain the ability to write concurrent multi-threaded and/or multi-processes programs that use POSIX system calls for the interaction with the devices and with the Operating System

Modalità di verifica delle capacità

Le capacità acquisite dallo studente verravvo verificate tramite la realizzazione di un progetto che prevede l'implementazione di un sistema concorrente, su un argomento proposto dal docente di laboratorio.

 

Assessment criteria of skills

The student skills will be assesed through the realization of a project implementing a concurrent system (using both C and Bash programming features as well as POSIX system calls) on a subject proposed by the laboratory teacher.

Comportamenti

Il corso non si pone obiettivi di apprendimento in termini di comportamenti attesi.

Behaviors

The course does not have specific objectives in terms of expected behaviours

Modalità di verifica dei comportamenti

Non sono previste prove per la verifica dei comportamenti.

Assessment criteria of behaviors

The course does not have specific tests to assess the expected behaviors

Prerequisiti (conoscenze iniziali)

Basi di architetture degli elaboratori, e buona conoscenza della programmazione sequenziale in linguaggio C.

Prerequisites

Basic knowledge of computer architectures, and good knowledge of sequential programming in the C language

Indicazioni metodologiche

Le lezioni avvengono in aula ed in laboratorio alla presenza del docente. Le attività di apprendimento comprendono:
- seguire le lezioni di teoria
- svolgere le attività pratiche di laboratorio svolgendo gli esercizi proposti
- studio individuale

Non c'è obbligo di presenza né alle lezioni di teoria nè alle esercitazioni di laboratorio         

Teaching methods

Lectures will be delivered both in standard class and in the laboratory in front of a PC. Learning activities comprise:
- attending lectures (both teoretical and related to the laboratory part)
- solve the practical exercises proposed during the laboratory lessons
- individual study

Attendance: Not mandatory for both parts

 

Programma (contenuti dell'insegnamento)

Il corso è strutturato in due moduli: il primo modulo presenta i fondamenti dei Sistemi Operativi (SO) e il secondo modulo di laboratorio mostra un’applicazione concreta dei concetti teorici presentati nel primo modulo.
Il primo modulo introduce i principi ed i concetti su cui si basano i SO e analizza la loro realizzazione nei sistemi reali. In particolare, vengono presentate le tecniche che consentono di coordinare e gestire le risorse di un sistema di elaborazione e che permettono di trasformare la macchina fisica in una macchina astratta, dotata di funzionalità più convenienti per l'utente. Il corso lascia ampio spazio alla descrizione e all'esemplificazione di come i vari concetti presentati sono realizzati nei sistemi Unix/Linux e in quelli della famiglia Microsoft Windows.

Il secondo modulo fornisce conoscenze della programmazione concorrente e di sistema in linguaggio C oltre a fornire conoscenze appropriate della programmazione in Bash.
Nello specifico,  vengono prese in considerazione le chiamate di sistema POSIX per il trattamento di file e directory, per la gestione dei processi, thread (libreria PThreads), segnali, pipe, socket (prevalentemente di tipo AF_UNIX) e vari meccanismi di sincronizzazione.

Syllabus

The course is organized in two moduli: one theoretical (named Operating Systems), and one practical (named Laboratory). The Operating Systems module introduces the main concepts of operating systems and discusses their implementation in real systems. Specific topics covered are concurrency and the management of processor, memory and device management, the file system, and the case studies of Unix/Linux and Windows.
The second module,  Laboratory, gives a broad view of standard tools for sequential C programs addressing debugging, testing, compiling, static and dynamic libraries, makefiles to manage large programs. More in detail, the module presents the Bash shell scripting language and how to develop simple scripts for routinary tasks. The course deeply discusses POSIX programming for I/O, IPCs (pipes and sockets), threads, synchronization mechanisms, and signals management.

Bibliografia e materiale didattico

T. Anderson, M. Dahlin : "Operating Systems: principles and practice", Recursive Books Ltd, 2013 Marc J. Rochkind. Advanced UNIX Programming 2nd Edition, Addison-Wesley Professional Computing Series, 2004.

Marc J. Rochkind. "Advanced UNIX Programming" 2nd Edition, Addison-Wesley Professional Computing Series, 2004

Bibliography

T. Anderson, M. Dahlin : "Operating Systems: principles and practice", Recursive Books Ltd, 2013 Marc J. Rochkind. Advanced UNIX Programming 2nd Edition, Addison-Wesley Professional Computing Series, 2004.

Marc J. Rochkind. "Advanced UNIX Programming" 2nd Edition, Addison-Wesley Professional Computing Series, 2004

Indicazioni per non frequentanti

Gli studenti non frequentanti hanno accesso a tutto il materiale didattico (inclusa la registrazione delle lezioni) nel sito web del corso

Non-attending students info

All students have access to the course material (included recordings of the classes) on the web site of the course.

Modalità d'esame

La valutazione avverrà tramite la discussione di un progetto assegnato durante il corso e realizzato dagli studenti, e tramite una prova scritta che verterà sugli argomenti di entrambi i moduli di laboratorio e di teoria. In ogni appello d’esame, l’ammissione alla prova scritta è vincolata alla presentazione (almeno 5 giorni prima della data dell’appello) di un progetto che deve essere valutato ammissibile per poter proseguire l'esame. Nel caso di un numero limitato di iscritti all’appello i docenti si riservano di sostituire la prova scritta con una prova orale equivalente, avvisando preventivamente gli iscritti tramite l’e-mail indicata dagli stessi all’iscrizione.

Nella prova scritta verrà valutata la capacità dello studente di comprendere e di risolvere alcuni esercizi che presentano situazioni ipotetiche in un sistema operativo e verrà valutata la capacità di presentare contenuti del corso usando una terminologia appropriata.

Con il progetto verrà valutata la capacità dello studente di mettere in pratica le conoscenze acquisite, tramite la realizzazione di un progetto che implementa un sistema concorrente funzionante.

Durante il corso si svolgeranno, inoltre, due prove (scritte) di verifica intermedia (orientativamente a metà del corso e alla fine del corso). Lo studente che ottiene un voto sufficiente alle prove di verifica intermedia è esentato dallo svolgimento della prova scritta, e dovrà solo discutere il progetto realizzato in uno degli appelli dello stesso anno accademico.

La validità del voto conseguito con le prove di verifica intermedia cessa al termine dell’anno accademico (quindi dopo l’ultimo appello straordinario, che si svolge normalmente ad Aprile dell’anno successivo). Ogni prova di verifica intermedia consiste nello svolgimento di alcuni esercizi riguardanti entrambi i moduli (di teoria e di laboratorio) e può essere sostenuta prima della presentazione del progetto.

Si fa presente che per l’ammissione a tutte le prove d’esame, incluse le prove di verifica intermedia, è obbligatoria l’iscrizione secondo le modalità stabilite dal corso di laurea.

Assessment methods

- The student will be assessed on his/her demonstrated ability to discuss the main course contents using the appropriate terminology.

- During the written test the student must demonstrate his/her knowledge of the course material and to be able to solve exercises (related to both the theoretical and laboratory parts) and to discuss the reading matter thoughtfully and with suitable propriety of expression.

- The student must also demonstrate the ability to put into practice and to execute, with critical awareness, the activities illustrated or carried out under the guidance of the teacher during the laboratory, by implementing a project related to a concurrent system on a subject proposed by the teacher.

Methods:
    - written test
    - project implementation with face-to-face discussion with the teacher

Further information:
Students must produce a working project as a result of the laboratory part. To be admitted at the written test the student must deliver his/her project at least 5 days before the written test, and the project should be assessed as admissible by the teacher.

The written test can be replaced by two intermediate written tests (one at half of the semester and one at the end of the semester). In this latter case the two intermediate tests can be done without presenting a project in advance. The project can be presented by the student later during the academic year.  The grade of the two tests (written part and project discussion) will remain valid for the entire academic year.

 

Altri riferimenti web

http://didawiki.cli.di.unipi.it/doku.php/informatica/sol/start

Additional web pages

http://didawiki.cli.di.unipi.it/doku.php/informatica/sol/start

Updated: 10/09/2020 17:53