Scuola di Medicina e Chirurgia

Università Magna Graecia di Catanzaro

C.I Sistemi operativi, reti e programmazione

Ingegneria Informatica e Biomedica

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 3
Programmazione Pietro Cinaglia 6
Sistemi Operativi e Reti di Calcolatori Mario Cannataro 3
Collegamenti Veloci:
Docente:
Non presente

Insegnamento SSD:
ING-INF/05 - ING-INF/05 - ING-INF/05

CFU:
12
Obiettivi del Corso e Risultati di apprendimento attesi

 

  1. 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Programma

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

Stima dell’impegno orario richiesto per lo studio individuale del programma

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

Risorse per l'apprendimento

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

Attività di supporto

Modalità di frequenza

Facoltativa

Modalità di accertamento

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