Gruppo opzionale:
Gruppo OPZIONALE materie affini 30 cfu x "computer engineering" - (visualizza)
 |
30
|
|
|
|
|
|
|
|
|
8039965 -
COSTRUZIONE DEL SOFTWARE
(obiettivi)
OBIETTIVI FORMATIVI: Metriche software: loro ontologie, sviluppo e impiego. Metodi e strategie per il miglioramento continuo della qualità basato su metriche. Tecniche industriali di costruizione di software con sviluppo agile in gruppo ampio e con attività di laboratorio anche distribuito.
CONOSCENZA E CAPACITÀ DI COMPRENSIONE: Metriche per la misura del software. Pianificazione strategica e piano di misure. Sviluppo e comprensione di progetti software per il web.
CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE: Metriche per la misura del software. Pianificazione strategica basata su dati. Appliczione di pattern progettuali allo sviluppo di applicazini software per il web.
AUTONOMIA DI GIUDIZIO: Utilità di una metrica e stadio del suo ciclo di vita. Valutazione del grado di realizzazione di obiettivi strategici di qualità. Valutazione di qualità di architetture software. Esperienza con lavoro di gruppo e conseguente resilienza.
ABILITÀ COMUNICATIVE: Valutare l'utilità di impiego di una metrica nel ciclo di sviluppo del software o in quello di miglioramento della qualità. Acquisire e trasferire requisiti d'utente, discuterli e analizzarli con il cliente e gli altri membri del gruppo agile allo scopo di implementarli in un software.
CAPACITÀ DI APPRENDIMENTO:Attitudine a riconoscere l'esigenza di introdurre nuove metriche. Abilità a riconoscere l'occorrenza di nuovi paradigmi e tecnologie di sviluppo, ad apprenderli ed eventualmente inserirli nel processo di sviluppo del proprio team.
-
MASTROFINI MANUEL
( programma)
Evoluzione delle ontologie per la misurazione del software. Richiami di pattern per la progettazione del software. Richiami di architetture software e linguaggi per il web. Evoluzione dell'approccio Agile per lo sviluppo software. Dalla definizione dei requisiti allo sviluppo di un progetto di taglio industriale con approccio Scrum.
 Nessun testo specifico, le slide e tutto il materiale sviluppato durante il corso vengono messe a disposizione dello studente anche tramite video registrati nella piattaforma resa disponibile dall'Università.
-
CANTONE GIOVANNI
( programma)
Evoluzione delle ontologie per la misurazione del software. Richiami di pattern per la progettazione del software. Richiami di architetture software e linguaggi per il web. Evoluzione dell'approccio Agile per lo sviluppo software. Dalla definizione dei requisiti allo sviluppo di un progetto di taglio industriale con approccio Scrum.
 Nessun testo specifico, le slide e tutto il materiale sviluppato durante il corso vengono messe a disposizione dello studente anche tramite video registrati nella piattaforma resa disponibile dall'Università.
|
6
|
ING-INF/05
|
60
|
-
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
|
8039966 -
SISTEMI DI CALCOLO PARALLELO E APPLICAZIONI
(obiettivi)
OBIETTIVI FORMATIVI:
L'’insegnamento di propone di fornire le nozioni fondamentali, i principi architetturali e le metodologie e per la programmazione in ambienti di calcolo parallelo, con particolare enfasi ai modelli di programmazione ed agli strumenti di programmazione più comunemente usati. Il corso copre tre aree principali: la programmazione a scambio di messaggi, con riferimento allo standard MPI, la programmazione su CPU a memoria condivisa, con riferimento allo standard OpenMP, e la programmazione di acceleratori grafici, utilizzando il sistema CUDA.
Con riferimento alle linee guida riportate nel documento: "ACM/IEEE-CS- Computer Science Curricula 2013" (https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf), il corso contribuisce a coprire le seguenti aree e relativi obiettivi:
Parallel and Distributed Computing (PD): Introduzione, Fondamenti di Programmazione Parallela, Decomposizione di problemi, Comunicazione e coordinazione Algoritmi paralleli.
CONOSCENZA E CAPACITÀ DI COMPRENSIONE:
Al termine del corso lo studente avrà acquisito le nozioni fondamentali pertinenti alla programmazione parallela, nelle modalità a scambio di messaggi e con l'uso di direttive di compilazione per sistemi a memoria condivisa; avrà inoltre acquisito la conoscenza degli algoritmi fondamentali per applicazioni di calcolo parallelo, con particolare riferimento agli algoritmi tipici del calcolo scientifico, incluse le metodologie di valutazione delle prestazioni.
CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE:
Al termine del corso lo studente avrà acquisito le metodologie della programmazione parallela e gli strumenti necessari alla costruzione di algoritmi ed applicazioni parallele.
AUTONOMIA DI GIUDIZIO:
Al termine del corso lo studente sarà in grado di selezionare ed applicare i metodi della programmazione parallela per risolvere in autonomia problemi di programmazione al fine di ottenere sistemi caratterizzati da prestazioni ottimali.
ABILITÀ COMUNICATIVE:
Al termine del corso lo studente avrà acquisito padronanza della terminologia relativa ai sistemi di calcolo parallelo, e sarà in grado di comunicare efficacemente le scelte progettuali necessarie nella realizzazione pratica di applicazioni
CAPACITÀ DI APPRENDIMENTO:
Al termine del corso lo studente avrà acquisito la capacità di intraprendere in autonomia ulteriori approfondimenti su argomenti attinenti la programmazione in ambienti di calcolo parallelo, anche con l'acquisizione di nuovi strumenti.
-
FILIPPONE SALVATORE
( programma)
Prima parte Programmazione parallela a memoria distribuita
Concetti generali di programmazione parallela Il modello di programmazione MPI: - Ambiente, tipi di dato; - Comunicazioni punto-punto: blocking, non-blocking, semantica delle comunicazioni - Comunicazioni collettive: globali, non-blocking, neighbour-collectives, comunicazioni persistenti; - Tipi di dato derivati; - Comunicatori, gruppi, topologie; - Comunicazioni one-sided
Esempi applicativi
Cenni ai modelli di programmazione PGAS: CoArrays, UPC.
Seconda parte: Programmazione parallela a memoria condivisa Il modello di programmazione OpenMP: - Programmazione di thread, modello di esecuzione, modello di coerenza della memoria; - Direttive di compilazione, regioni parallele; - Parallelizzazione di cicli; - Gestione della memoria; - Programmazione di task
Esempi applicativi
Terza parte: CUDA - Acceleratori grafici - Programmazione in CUDA - Esempi applicativi
 Peter Pacheco: Parallel Programming in MPI , Morgan Kaufmann R. CHandra et al: Parallel Programming in OpenMP, Morgan Kaufmann
NVIDIA Co.: CUDA Programming guide
|
9
|
ING-INF/05
|
90
|
-
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
|
8039977 -
TEORIA DEI GIOCHI E BUSINESS ANALYTICS
(obiettivi)
OBIETTIVI FORMATIVI: Lo scopo di questo corso è quello di introdurre la teoria dei giochi e di mostrarne alcune applicazioni con un focus su problemi progetto di reti. Lo studente è introdotto alle conoscenze di base e alle tecniche tipiche della Teoria dei giochi con particolare riferimento ai giochi non-cooperativi, ai giochi cooperativa, alla teoria dei giochi algoritmica.
CONOSCENZA E CAPACITÀ DI COMPRENSIONE: Gli studenti apprenderanno le basi della teoria dei giochi per mezzo di strumenti classici dalla teoria dell'ottimizzazione, principalmente la programmazione lineare e teoria della dualità.
CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE: L’'uso di strumenti quantitativi, classici dalla teoria dell'ottimizzazione, consente agli studenti di valutare e validare la aderenza dei modelli proposti ai problemi reali. Il focus su Network Design li porterà poi a risolvere alcuni modelli e valutare la qualità delle soluzioni e delle strategie di soluzione proposte.
AUTONOMIA DI GIUDIZIO: Lo sviluppo di modelli quantitativi consentirà di validare i modelli e le soluzioni proposte dagli studenti. Parte dell'esame consiste nello sviluppo di progetti specifici in team.
ABILITÀ COMUNICATIVE: L'interpretazione dei risultati ottenuti costituisce una delle attività fondamentali del processo di risoluzione di un problema a partire da un modello: in un lavoro di squadra questo tipo di attività obbliga lo studente a un confronto con i colleghi in cui sono stimolate le sue capacità critiche e anche dialettiche.
CAPACITÀ DI APPRENDIMENTO: Lo studente è esposto (attraverso il materiale didattico proposto) alla lettura di testi di riferimento non solo didattici ma anche di ricerca (articoli in riviste del settore). Viene pertanto messo in condizione di attingere a diverse fonti bibliografiche al fine di (i) acquisire nuove competenze, (ii) sapersi aggiornare in modo continuo e autonomamente, (iii) intraprendere corsi di approfondimento nell'ambito della disciplina.
-
ORIOLO GIANPAOLO
( programma)
1. Giochi in forma normale. equilibri di Nash. Pareto ottimalità. strategie debolmente e strettamente dominanti. Strategie conservative. Payoff e preordini totali. 2. Un' applicazione delle strategie dominanti: i meccanismi di asta. Aste di primo prezzo e aste secondo prezzo (o di Vickrey). Un'applicazione degli equilibri di Nash: la legislazione di incidente. 3. Giochi antagonistici e a somma zero. Punti di sella ed equilibri di Nash per giochi a somma zero. Giochi strettamente competitivi. 4. Estensione in strategia mista di un gioco antagonistico. L'esistenza di un equilibrio nella strategia mista per i giochi aantagonistico e valore del gioco. Il teorema di von Neumann. Bluff, underbid e poker di Kuhn. 5. i giochi cooperativi. Nucleo di un gioco. Il teorema di Bondareva-Shapley. I mercati con utilità trasferibile. Giochi semplici e valore di Shapley. 6. Giochi cooperativi con l'utilità non trasferibile. Il problema dell'house allocation. Il problema dello stable marriage. 7. Facility location: teoria ed algoritmi risolutivi esatti ed approssimati, deterministici e randomizzati. Algoritmo primale duale e meccanismi di cost sharing. Facility location games. 8. Albero ricoprente di peso minimo: teoria e algoritmi esatti. Alberi di Steiner: teoria ed algoritmi risolutivi esatti ed approssimati. Algoritmo primale duale e meccanismi di cost sharing. Giochi con alberi di Steiner.
 1. Dispense a cura del docente.
|
9
|
MAT/09
|
90
|
-
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
|
8039979 -
NETWORK AND SYSTEMS DEFENCE
(obiettivi)
OBIETTIVI FORMATIVI
Un utilizzo sicuro dei moderni sistemi informatici richiede che i professionisti di ciascuna area delle tecnologie dell'informazione abbiano una vasta comprensione delle potenziali criticità nell'utilizzo dei sistemi lungo tutto lo stack: hardware, reti di comunicazione, sistemi operativi, applicazioni software, gestione dei dati. In questo modo è possibile riconoscere, in fasi di progettazione o di realizzazione di un sistema ICT, quali siano i possibili pericoli e le contromisure da intraprendere per innalzare il livello di sicurezza. All'interno del corso di Difesa delle reti e dei sistemi verranno mostrate le metodologie e le tecniche alla base di alcune vulnerabilità dei vari livelli dello stack hardware/software, con l'obiettivo di illustrare tecniche e metodologie di difesa per rendere i sistemi più sicuri e resilienti.
Con riferimento alle linee guida riportate nel documento "ACM/IEEE Computing Curricula 2020 - CC2020" (https://www.acm.org/education/curricula-recommendations), il corso contribuisce a coprire le seguenti aree, relativi obiettivi e competenze: - CE-SEC (Information Security): Data security and integrity; Vulnerabilities; Network and web security; Side-channel attacks; Resource protection models; Secret and public-key cryptography; Authentication; Trusted computing - BCIA: Plan procedures, operations, and technologies for managing security and safety in a disaster recovery situation.
CONOSCENZA E CAPACITÀ DI COMPRENSIONE
Al termine del corso lo studente avrà acquisito i concetti fondamentali su possibili superfici di attacco ai vari livelli dello stack hardware e software che possono minare la sicurezza dei sistemi ICT, con una panoramica su moderne tecniche di rilevamento e difesa verso queste minacce. In questo modo, lo studente avrà la capacità di comprendere, in vari contesti legati al mondo ICT, quali sono le possibili criticità in fase di progetto e realizzazione di sistemi complessi.
CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE
Al termine del corso lo studente avrà acquisito le metodologie proprie dell'analisi, progettazione, configurazione e valutazione di un sistema ICT dal punto di vista della sicurezza informativa. Particolare enfasi viene data alla comprensione degli aspetti fondamentali delle metodologie legate all'innalzamento del livello della sicurezza informatica, permettendo quindi allo studente di riportare le competenze acquisite in vari contesti reali.
AUTONOMIA DI GIUDIZIO
Al termine del corso lo studente sarà in grado di valutare i relativi vantaggi e svantaggi di determinate scelte progettuali all'interno di un sistema ICT dal punto di vista della sicurezza informatica. In questo modo, lo studente sarà in grado di scegliere, fra le diverse alternative, la soluzione adeguata alle proprie esigenze in base al problema sotto esame.
ABILITÀ COMUNICATIVE
Al termine del corso lo studente avrà acquisito padronanza della terminologia relativa alla sicurezza informatica nell'ambito dei sistemi e delle reti, sarà in grado di descrivere i concetti fondamentali con termini e linguaggio tecnico appropriato e, in fase progettuale, di argomentare circa le varie alternative a livello hardware e software.
CAPACITÀ DI APPRENDIMENTO
Al termine del corso lo studente avrà acquisito la capacità di intraprendere in autonomia ulteriori approfondimenti su argomenti inerenti allea sicurezza dei sistemi e delle reti e di utilizzare le conoscenze e metodologie imparate per affrontare problemi nuovi.
|
9
|
ING-INF/03
|
90
|
-
|
-
|
-
|
Attività formative affini ed integrative
|
ENG |
|
8037401 -
SISTEMI EMBEDDED E REAL TIME
(obiettivi)
OBIETTIVI FORMATIVI: L'insegnamento intende fornire allo studente un quadro aggiornato dell'attuale tecnologia dei sistemi embedded e real-time. I sistemi embedded sono i calcolatori elettronici integrati in ormai tutti gli apparati elettronici che eseguono in modo specifico ed esclusivo il programma impostato dal progettista dell'apparato. I sistemi real-time sono i sistemi di calcolo (intesi sia come hardware che come software) progettati per garantire non solo la correttezza delle operazioni svolte, ma anche la corretta temporizzazione dei risultati prodotti dal sistema. Questo corso discute entrambi i tipi di sistemi perché la maggior parte dei sistemi embedded sono anche sistemi real-time, e viceversa. Con riferimento alle linee guida riportate nel documento: "ACM/IEEE-CS- Computer Science Curricula 2013" (www.acm.org/education/CS2013-final-report.pdf), il corso contribuisce a coprire le seguenti aree e relativi obiettivi: Operating Systems (OS): Scheduling and Dispatch; Resource Allocation and Scheduling; Real-Time and Embedded Systems
CONOSCENZA E CAPACITÀ DI COMPRENSIONE: Al termine lo studente avrà acquisito una comprensione approfondita delle problematiche e delle tecnologie relative allo sviluppo dei sistemi embedded e real-time. In particolare, lo studente avrà compreso i concetti fondamentali ed i risultati principali della teoria della schedulazione real-time, che consente di certificare la corretta progettazione di un sistema real-time "safety-critical"; avrà compreso le principali problematiche e soluzioni tecnologiche dei sistemi operativi adatti all'esecuzione di applicazioni real-time; avrà compreso le problematiche relativo allo sviluppo del software di un sistema embedded "bare metal" interfacciato direttamente ai dispositivi hardware del sistema, con particolare riferimento ai sistemi di supporto all'esecuzione delle applicazioni real-time.
CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE Al termine del corso lo studente sarà in grado di scrivere un ambiente di esecuzione real-time "bare metal" per sistemi embedded basati su architettura ARM, a partire dalla sola documentazione rilasciata dal costruttore dell'hardware. Lo studente sarà inoltre in grado di modellare una collezione di job reali con specifici compiti e scadenze temporali tramite il modello a task periodici, dimensionare opportunamente il modello di sistema real-time che dovrà garantire l'esecuzione dei job ed il rispetto delle scadenze, selezionare opportunamente gli algoritmi di schedulazione dei task e di allocazione delle risorse condivise, e dimostrare formalmente che la progettazione effettuata è corretta, nel senso che tutte le scadenze dei job saranno rispettate anche nel peggior caso che possa verificarsi.
|
6
|
ING-INF/05
|
60
|
-
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
|
|
8039963 -
SISTEMI OPERATIVI AVANZATI E SICUREZZA DEI SISTEMI
(obiettivi)
Il corso si propone di presentare metodi e tecniche avanzate per la progettazione e l'implementazione dei sistemi operativi. Esso fornisce anche approfondimenti sulle effettive operazioni eseguite a livello hardware nei processori moderni, compresi gli effetti del parallelismo hardware implicito ed esplicito, e illustra come questi abbiano impatto sugli approcci di progettazione del software. Gli argomenti trattati dal corso sono legati a casi di studio orientati ai sistemi Linux ed a processori x86. Forte attenzione viene posta sui metodi e sulle tecniche per la sicurezza nei sistemi, e sulle criticita' di sicurezza derivanti dalle interazioni dell'hardware con il software. Il corso richiede conoscenze di base sulla struttura e sulle funzionalita' dei sistemi operativi e conoscenze di programmazione in linguaggiì C/ASM. CONOSCENZA E CAPACITÀ DI COMPRENSIONE: Al termine del corso lo studente sarà in grado di comprendere il funzionamento dei sistemi operativi, anche per quel che concerne il livello kernel, e le interazioni che avvengono tra questo ed il software delle applicazioni sviluppate su di esso. CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE: Al termine del corso lo studente sarà in grado di progettare e sviluppare nuove parti di un sistema operativo, in particolare per quel che concerne sistemi Linux. AUTONOMIA DI GIUDIZIO: Lo studente viene abituato a ragionare in maniera critica su scelte alternative di progetto e sviluppo, e su come queste possano poi avere impatto su aspetti funzionali e non funzionali del software. ABILITÀ COMUNICATIVE: Il superamento dell'esame prevede che lo studente affronti una prova scritta e lo sviluppo un progetto software, nelle quali deve essere in grado di esporre correttamente gli argomenti e presentare in modo chiaro la struttura del software sviluppato. CAPACITÀ DI APPRENDIMENTO: Una parte del materiale didattico è costituito da manuali e documentazione per il sistema operativo Linux. Lo studente impara ad usare ed interpretare in modo autonomo la manualistica di comune uso nello sviluppo del software di sistema.
-
QUAGLIA FRANCESCO
( programma)
Approfondimenti sull'hardware Processori pipelining e superscalari Hardware speculativo Multiprocessori e multi-core Organizzazione della memoria fisica Coerenza e consistenza della memoria Supporti per la sincronizzazione hardware Architetture di interrupt avanzate
Kernel Internals Indirizzamento e modelli di protezione del software GATE di accesso al kernel Dispatching delle chiamate di sistema Gestione della memoria a livello di sistema Gestione avanzata degli interrupt Scalabilita' del kernel Strutturazione del file system virtuale Interazioni del software con la gerarchia di memoria Approcci avanzati di coordinamento dei thread
Sicurezza Aspetti di sicurezza del sistema Autenticazione e abilitazione Domini di protezione e sistemi operativi sicuri Attacchi interni al sistema e contromisure Architetture IDS e Reference Monitor Attacchi al confine tra hardware e software
Casi di studio: kernel Linux 2.4 / 2.6 / 3.xx / 4.xx (architetture x86) Nozioni di base Principali strutture dati ed inizializzazione Comportamento a regime Kernel hacking Moduli
 William Stallings, "Operating Systems". Jackson Libri.
Abraham Silberschatz, Peter B. Galvin, "Operating Systems". Addison Wesley
Andrew S. Tanenbaum, "Modern Operating Systems". Jackson Libri.
|
9
|
ING-INF/05
|
90
|
-
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |