Salta al contenuto principale
CODICE 80300
ANNO ACCADEMICO 2025/2026
CFU
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

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.