CODICE 80300 ANNO ACCADEMICO 2025/2026 CFU 12 cfu anno 2 INFORMATICA 8759 (L-31) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE INF/01 LINGUA Italiano SEDE GENOVA PERIODO 1° Semestre MATERIALE DIDATTICO AULAWEB PRESENTAZIONE Lo scopo di questo corso è in primo luogo imparare come funzionano i sistemi operativi e come amministrarli e interagire con essi, e in secondo luogo esaminare i meccanismi utilizzati per creare reti di calcolatori che comunicano tra loro e imparare a sfruttarle tramite la programmazione. L'insegnamento ha una parte di teoria in classe e una serie di laboratori. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Assimilare le tecniche per la progettazione, la realizzazione e la gestione efficiente e sicura di sistemi di elaborazione e sistemi distribuiti: a livello di sistema operativo, per esecuzione multitasking, supporto alla concorrenza, cooperazione e sincronizzazione fra thread e fra processi, gestione dell'I/O, gestione dei file e virtualizzazione di calcolatori. A livello di una moderna rete di calcolatori, per valutare le caratteristiche di affidabilità, sicurezza e facilità di gestione che derivano dalle scelte di progetto dei protocolli utilizzati. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO Al termine dell'insegnamento lo studente/la studentessa sarà in grado di: Interagire con il sistema operativo tramite line di comando Descrivere il funzionamento dei file system Usare le primitive di sistema Spiegare l'uso della memoria Configurare un sistema operativo Descrivere le principali architetture di rete Spiegare il funzionamento dei protocolli di rete IP, TCP, DHCP, DNS Analizzare i pacchetti dati basati su TCP/IP Implementare reti di calcolatori che comunicano tramite socket (sia UDP e TCP) Implementare sistemi multi-threaded Riconoscere i rischi dovuto all'uso della concorrenza PREREQUISITI Familiarità con il linguaggio C/C++ Conoscenza dell'architettura dei calcolatori MODALITA' DIDATTICHE Lezioni frontali di teoria (52 ore) Esercitazioni di laboratorio (28 ore) Progetto PROGRAMMA/CONTENUTO Uso della shell Linguaggi di scripting Amministrazione di sistema Nozioni di base relative alla sicurezza nei sistemi operativi Tipologie di reti Trasmissione dell'informazione Protocolli Ethernet, WiFi, IP, TCP ed UDP Primitive di sistema Gestione della memoria Input/Output e sistema di file Programmazione con i socket Programmazione concorrente di base TESTI/BIBLIOGRAFIA Lucidi e note del docente messe a disposizione su Aulaweb Materiale online Operating system concepts – Abraham Silberschatz, Peter Baer Galvin, Greg Gagne Operating Systems: Three Easy Pieces -- Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau (https://ostep.org) Reti di calcolatori - Tanenbaum, Wetherall https://beej.us/guide/ DOCENTI E COMMISSIONI DANIELE D'AGOSTINO Ricevimento: Su appuntamento, in presenza o via Teams MATTEO DELL'AMICO Ricevimento: Su appuntamento (in presenza o online) definito per email (matteo.dellamico@unige.it). ARNAUD HENRI PAUL SANGNIER Ricevimento: Ricevimento su appuntamento via mail. LEZIONI INIZIO LEZIONI In accordo con il calendario didattico approvato dal Consiglio dei Corsi di Studio in Informatica https://corsi.unige.it/corsi/8759/studenti-orario Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME L'esame consiste in un quiz, in una prova scritta e in un progetto di programmazione da presentare durante un orale. Per poter sostenere la prova scritta è necessario avere superato il quiz. Per poter discutere il progetto è necessario aver superato la prova scritta. MODALITA' DI ACCERTAMENTO La prova scritta verifica la conoscenza delle principali nozioni teoriche presentate a lezione e la capacità dello studente di applicarle agli esercizi proposti. Il progetto approfondisce la verifica che lo studente sia in grado di metterli in pratica tramite la programmazione. ALTRE INFORMAZIONI Rivolgersi al docente per ulteriori informazioni non comprese nella scheda insegnamento.