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 5
Sistemi Operativi e Reti di Calcolatori Mario Cannataro 3
Programmazione Marianna Milano 1
Collegamenti Veloci:
Docente:
Non presente

SSD:
ING-INF/05 - 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

Obbligatoria

Modalità di accertamento

Modalità di accertamento dei risultati di apprendimento:

L'esame di Sistemi Operativi Reti e Programmazione è composto tipicamente da una prova scritta e da una prova orale. Il superamento dell'esame è prova di aver acquisito le conoscenze e le abilità specificate negli obiettivi formativi dell'insegnamento.

Criteri di valutazione dei risultati di apprendimento:

Nella prova scritta del modulo di Sistemi Operativi e Reti di Calcolatori sarà richiesto di risolvere due problemi: primo, definire una soluzione concorrente per la gestione di risorse condivise in ambiente multi-thread con Java. Secondo, progettare un'applicazione distribuita Client/Server utilizzando le Socket Java. Nella prova scritta del modulo di Programmazione sarà verificato il livello di preparazione de discente in merito alle tecniche e agli strumenti oggetto del programma, sia a livello teorico che operativo.

Criteri di misurazione dei risultati di apprendimento:

Dopo il superamento della prova scritta del modulo di Sistemi Operativi e Reti di Calcolatori si dovrà sostenere la prova orale, per verificare la preparazione anche sulle parti del corso non interessate dalla prova scritta. La misurazione del livello di preparazione del modulo di Programmazione saranno effettuati prendendo in considerazione sia la qualità della prova scritta, se prevista, sia la padronanza di contenuti e la maturità di esposizione nella prova orale. Gli argomenti trattati saranno scelti in modo da coprire la più ampia porzione del programma possibile.

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.