Università Magna Graecia di Catanzaro
L'obiettivo del modulo di Sistemi Operativi e Reti di Calcolatori è quello di fornire agli studenti le conoscenze fondamentali dei sistemi operativi, esponendo sia gli aspetti teorici sia le tecniche di base ed avanzate di programmazione di un sistema operativo. In aggiunta a una chiara visione dell'architettura della rete Internet e dei modelli e tecnologie per lo sviluppo di applicazioni Web.
Durante le ore di didattica frontale del modulo di Programmazione si esaminano i principali strumenti dell’Ingegneria del Software, fornendone una descrizione sia teorica che operativa. In particolare vengono illustrati il Rational Unified Process e il linguaggio UML, insieme a un excursus sui principali Design Pattern che trovino riscontro nella standard library di Java. Si illustrano anche le principali caratteristiche dei linguaggi di programmazione ad oggetti e si esamina in particolare il linguaggio Java, insieme a parte della standard library. Viene poi affrontata la progettazione e l’implementazione dei principali tipi di dati astratti di base (e.g. liste, alberi, grafi) e vengono proposti esercizi interattivi di gruppo volti a verificare le conoscenze dei discenti.
Modulo | Docente | CFU |
---|---|---|
Sistemi Operativi e Reti di Calcolatori | Marianna Milano | 6 |
Programmazione | Pietro Cinaglia | 6 |
Conoscenza e capacità di comprensione (knowledge and understanding)
lo studente sarà in grado di affrontare problematiche inerenti all’organizzazione e la gestione delle risorse nei moderni sistemi operativi. Acquisirà le competenze per la risoluzione di problemi di programmazione concorrente in ambienti multi-programmati.
lo studente acquisirà le conoscenze sulle reti di calcolatori, internet e i protocolli di comunicazione utilizzati tra i sistemi di calcolo. Infine, acquisirà le competenze per lo sviluppo di applicazioni di rete mediante l’uso delle Socket.
Conoscenza delle principali caratteristiche dei linguaggi di programmazione ad oggetti, con particolare riferimento al linguaggio Java.
Conoscenze del linguaggio di progettazione UML e dei principali Design Patterns.
Capacità di applicare conoscenza a comprensione (applying knowledge and understanding) lo studente sarà in grado di utilizzare le metodologie apprese per formulare soluzioni originali relative alla gestione di risorse condivise in ambienti multi-programmati e lo sviluppo di applicazioni di rete efficienti e scalabili. Sarà inoltre in grado di utilizzare le metodologie apprese per formulare soluzioni originali relative alla progettazione di sistemi informativi e alla programmazione ad oggetti.
Autonomia di giudizio (making judgement) ): lo studente sarà in grado di esprimere giudizi autonomi su tematiche e problematiche riguardanti i moderni sistemi operativi e le reti di calcolatori. Sarà inoltre in grado di esprimere giudizi autonomi su tematiche e problematiche riguardanti la progettazione e l’implementazione di sistemi informativi.
Capacità di apprendimento (learning skills) lo studente avrà acquisito le capacità necessarie a gestire problematiche inerenti i sistemi operativi e le reti di calcolatori ed anche la capacità di comprendere la programmazione ad oggetti e i principi dell’ingegneria del software. Questo gli consentirà di proseguire gli studi universitari con un elevato grado di autonomia.
Abilità comunicative (communication skills) Capacità di comunicare la progettazione di un sistema software o di una rete di calcolatori tramite la stesura di relazioni tecniche o la presentazione orale tramite slides. Sarà inoltre in grado di progettare un sistema informativo e di pianificane le fasi operative insieme al team di sviluppo tramite artifacts UML.
Contenuti del modulo di Sistemi Operativi e Reti di Calcolatori: Le principali conoscenze acquisite nel modulo di Sistemi Operativi e Reti di Calcolatori saranno: - struttura dei moderni sistemi operativi - organizzazione dei principali sistemi operativi multi-processo - concetto di processo e thread - gestione della memoria - struttura dei dispositivi di IO - introduzione alle reti di calcolatori e ai sistemi distribuiti - Il modello Client/Server - protocollo TCP/IP Le principali abilità nel modulo di Sistemi Operativi e Reti di Calcolatori acquisite saranno: - programmazione multi-thread e multi-processo con Java - programmazione di rete utilizzando le Socket Java. Contenuti del modulo di Programmazione: - Rational Unified Process e principi di Ingegneria del Software - linguaggio UML - principali Design Patterns - linguaggi di programmazione ad oggetti e linguaggio Java - standard library di Java: le collections - programmazione generica in Java - progettazione e implementazione di tipi di dati astratti nei linguaggi di programmazione ad oggetti - liste, alberi e grafi |
Numero ore di didattica assistita (didattica frontale, esercitazioni) per il modulo di Sistemi Operativi e Reti di Calcolatori |
Ore 48 |
Numero ore di didattica assistita (didattica frontale, esercitazioni e laboratori) per il modulo di Programmazione |
Ore 48 |
Impegno orario richiesto allo studente per lo studio individuale del modulo di Sistemi Operativi e Reti di Calcolatori |
Ore 102 |
Impegno orario richiesto allo studente per lo studio individuale del modulo di Programmazione |
Ore 102 |
Testi di riferimento:
A. Silberschatz, P. Galvin, Sistemi Operativi, Addison-Wesley, 9a edizione, 2014.
A. S. Tanenbaum Reti di calcolatori, Pearson,
C. Demestrescu, I. Finocchi, G. F. Italiano (2008), Algoritmi e strutture dati, McGraw Hill.
S. J. Metsker (2003), Design Pattern in Java, Pearson
Qualsiasi manuale recente del linguaggio Java
Materiale didattico integrativo fornito dal docente.
Testi complementari:
Andrew S. Tanenbaum I moderni sistemi operativi 3a edizione, 2009.
P. Crescenzi, G. Gambosi, R. Grossi (2006), Strutture di Dati e Algoritmi, Pearson
Testi supplementari:
T. Sterling, M. Anderson, M. Brodowicz, High Performance Computing Modern Systems and Practices, Elsevier
B. Schmidt, J. Gonzalez-Dominguez, C. Hundt. M. Schlarb Parallel Programming
Concepts and Practice, Elsevier
C. Larman, L. Cabibbo (2016), Applicare UML e i pattern. Analisi e progettazione orientata agli oggetti, Pearson
I. Sommerville (2017), Ingegneria del Software
Facoltativa
Modalità di accertamento dei risultati di apprendimento:
L'esame del C.I. Sistemi Operativi, Reti e Programmazione è composto da una prova scritta e da una prova orale.
Criteri di valutazione dei risultati di apprendimento:
La prova scritta, riguardante il modulo di Programmazione, ha l’obiettivo di verificare il livello di preparazione del discente in merito alle tecniche e agli strumenti oggetto del programma, sia a livello teorico che operativo.
La prova scritta consiste di nr. 3 esercizi inerenti al programma svolto così ripartiti: Esercizio-1 12 punti, Esercizio-2 12 punti, Esercizio-3 6 punti.
L’ammissione alla prova orale è prevista con votazione di almeno 18 alla prova scritta. Altresì, è consentito allo studente essere ammesso con riserva alla prova orale se la votazione è >=15 e < 18. Nell’ultimo caso, ammissione con riserva, l’ammissione alla prova orale sarà integrata da una discussione dello scritto, svolta preliminarmente.
Il superamento della prova scritta è propedeutico per lo svolgimento della prova orale e per il superamento dell’esame.
La prova orale ha l’obiettivo di verificare il livello di preparazione sulle parti del corso non interessate dalla prova scritta ed in particolare sul modulo di Sistemi operativi e Reti di calcolatori.
Criteri di misurazione dei risultati di apprendimento:
La misurazione del livello di preparazione terrà conto della valutazione raggiunta nella prova scritta e del livello di conoscenza dei contenuti e della chiarezza espositiva della prova orale.
Il voto finale è dato dalla media del voto allo scritto e del voto all'orale.
Criteri di attribuzione del voto finale:
Il voto massimo di ciascuna prova del corso è di 30/30. Il voto finale è calcolato facendo la media, arrotondata per eccesso, dei voti conseguiti nelle due prove relative ai due moduli di Sistemi Operativi, Reti e di Programmazione.
Il voto finale verrà assegnato sulla base dei seguenti criteri:
|
Conoscenza e comprensione argomento |
Capacità di analisi e sintesi |
Utilizzo di referenze |
Non idoneo |
Importanti carenze. Significative inaccuratezze |
Irrilevanti. Frequenti generalizzazioni. Incapacità di sintesi |
Completamente inappropriato |
18-20 |
A livello soglia. Imperfezioni evidenti |
Capacità appena sufficienti |
Appena appropriato |
21-23 |
Conoscenza routinaria |
E’ in grado di analisi e sintesi corrette. Argomenta in modo logico e coerente |
Utilizza le referenze standard |
24-26 |
Conoscenza buona |
Ha capacità di a. e s. buone gli argomenti sono espressi coerentemente |
Utilizza le referenze standard |
27-29 |
Conoscenza più che buona |
Ha notevoli capacità di a. e s. |
Ha approfondito gli argomenti |
30-30L |
Conoscenza ottima |
Ha notevoli capacità di a. e s. |
Importanti approfondimenti |