Questa funzione ti consente di visualizzare il tuo percorso formativo, se la tua immatricolazione è avvenuta in anni precedenti

Curricula per l'anno 2024 - Engineering in Computer Science - Ingegneria Informatica (30430)

Curriculum unico
Insegnamento [SSD] [Lingua] AnnoSemestreCFU
1044417 | ALGORITHM DESIGN [ING-INF/05] [ENG]6

Obiettivi formativi

L'obiettivo
del corso è quello di introdurre i concetti fondamentali della progettazione di
algoritmi per problemi polinomiali e problemi computazionali difficili. Il
corso presenterà i concetti di base di progettazione di algoritmi per problemi
di flusso nelle reti e problemi di matching. Tecniche generali come
greedy e programmazione e dinamica saranno applicate a problemi di
cammino minimo, spanning tree, knapsack. Algoritmi di approssimazione saranno
presentati per problemi computazionali difficili come TSP, vertex cover set
cover, sat, scheduling. Particolare enfasi sarà data ai metodi basati sulla
programmazione lineare e gli algoritmi randomizzati. Infine , il corso
introdurrà i principali problemi computazionali in teoria dei giochi.

10599896 | DEPENDABLE DISTRIBUTED SYSTEMS [ING-INF/05] [ENG]9

Obiettivi formativi

OBIETTIVI GENERALI
Il corso ha come obiettivo principale quello di fornire le conoscenze di base per la progettazione e lo sviluppo di un sistema distribuito che sia in grado di soddisfare i principali requisiti di dependability (e.g., affidabilità, disponibilità del servizio, integrità dei dati, confidenzialità delle informazione etc.).

OBIETTIVI SPECIFICI
- Conoscenza e comprensione
I sistemi distribuiti sono alla base di qualsiasi applicazione informatica moderna e pertanto devono essere progettati e sviluppati tenendo in considerazione i principali requisiti non funzionale in grado garantire la qualità del servizio erogato a fronte di guasti, malfunzionamenti e intrusioni nel sistema.
Il corso si propone l'obiettivo principale di fornire agli studenti una chiara caratterizzazione della concorrenza in un sistema distribuito considerando le caratteristiche di tale sistema come guasti, latenza variabile nelle comunicazioni e assenza di un clock globale.
Successivamente si analizzeranno i principali modelli di sistema e le astrazioni di base per la comunicazione e la sincronizzazione, si introdurranno le primitive di base per la costruzione di un middleware, si forniranno i concetti di base di un sistema peer-to-peer con alcuni esempi di sistemi reali. Infine, verranno presentate agli studenti tecniche di base per l'analisi della dependability (modelli analitici e modelli di simulazione) che consentano di valutare il sistema stesso e la sua capacità di soddisfare i livelli di dependability e di qualità del servizio imposti dalle specifiche del sistema stesso.

- Applicare conoscenza e comprensione
Lo studente sarà in grado di progettare sistemi e algoritmi distribuiti al di sopra di diversi modelli di sistema da quelli sincrono, asincrono e parzialmente sincrono capendo impossibilità e limitazione nelle prestazioni. Inoltre avrà la capacita di astrarre sistemi e piattaforme reali in modelli astratti più facili da trattare.
Infine, lo studente sarà in grado di svolgere un'analisi delle dependability del sistema stesso e di svolgere un'analisi comparativa tra diverse soluzioni.

- Capacità critiche e di giudizio
Lo studente sarà in grado di valutare e comparare diverse soluzioni per la realizzazione di applicazioni distribuite. Sarà, inoltre, in grado valutare gli opportuni trade-off in considerazione dei vari aspetti che caratterizzano l'ambiente specifico in cui l'applicazione andrà in esercizio.

- Capacità comunicative
Lo studente acquisirà la terminologia propria del settore.

- Capacità di apprendimento
Lo studente apprenderà tecniche e metodologie di base per la progettazione e lo sviluppo di sistemi e applicazioni distribuite con requisiti di dependability.

10600393 | CYBERSECURITY [ING-INF/05] [ENG]9
1022891 | SOFTWARE ENGINEERING [ING-INF/05] [ENG]6

Obiettivi formativi

Il corso analizza il processo di sviluppo del software e presenta le
metodologia, gli standard di qualità, le metriche e le tecniche
comunemente usate per la stima economica, la pianificazione ed il test
di applicazioni software di qualità professionale.
Al fine di interpretare correttamente le misure utilizzate nel contesto
dell'assicurazione della qualità del software, il corso presenta le
nozioni di base della teoria della misura e della verifica di
esperimenti tramite l'analisi della varianza.Risultati di apprendimento attesi: Alla fine del corso lo studente sarà in grado di:
-scegliere un modello per lo sviluppo di una applicazione software,
stimarne il costo, pianificare le attività di progetto, progettare i
test ed indicare delle metriche per l'assicurazione qualità, nonchè
valutare la significatività statistica di esperimenti basati sulla
raccolta di campioni numerici.

AAF2141 | LABORATORY OF ADVANCED PROGRAMMING [N/D] [ENG]3

Obiettivi formativi

Obiettivi generali.
Il corso propone un'introduzione a varie tecnologie di sviluppo software, anche distribuito, che potenzialmente possono essere utilizzate in altri corsi del percorso formativo. Inoltre vengono applicate, attraverso lo sviluppo di un progetto in gruppo, le moderne metodologie e tecniche di sviluppo software agile.

Obiettivi specifici.
Conoscenza e comprensione:
Programmazione di servizi Web in Java e Python. Programmazione di sistemi distribuiti con chiamate bloccanti e non bloccanti. SCRUM e metodi agili. Virtualizzazione e dockerizzazione.

Applicare conoscenza e comprensione:
Essere in grado di progettare una applicazione costituita da diversi componenti e microservizi.

Capacità critiche e di giudizio:
Essere in grado di valutare la qualità di una applicazione anche in termini di differenti scelte architetturali e di distribuzione.

Capacità comunicative:
Le attività progettuali e la presentazione del progetto in modalità pitch e con demo funzionante permettono allo studente di essere in grado di comunicare/condividere i requisiti di una applicazione software di media complessità, nonché le scelte progettuali e le metodologie di progettazione e sviluppo di tale applicazione.

Capacità di apprendimento:
Oltre alle classiche capacità di apprendimento fornite dallo studio del materiale didattico, le modalità di svolgimento del corso, in particolare le attività progettuali, stimolano lo studente all'approfondimento autonomo di alcuni argomenti presentati nel corso, al lavoro di gruppo, e all'applicazione concreta delle nozioni e delle tecniche apprese durante il corso.

1022797 | DATA MANAGEMENT [ING-INF/05] [ENG]6

Obiettivi formativi

Obiettivi generali:
L'obiettivo del corso è l'indagine sui concetti di base dei sistemi di gestione dei dati, facendo riferimento sia al modello relazionale, sia a modelli NoSQL. Vengono affrontate diverse questioni fondamentali relative alla teoria e alla progettazione di sistemi di gestione dei dati relazionali, tra cui controllo della concorrenza, ripristino, organizzazioni di file e indici, elaborazione delle query, OLAP e OLTP. È richiesta una buona conoscenza dei fondamenti di strutture di programmazione, linguaggi di programmazione e database (SQL, modello di
dati relazionali, modello di dati Entità-Relazione, progettazione di database concettuali e logici).

Conoscenza e comprensione:
Lo studente avrà una buona conoscenza di diversi modelli di dati, anche NoSQL, di come funziona un sistema di gestione dei dati, di come è strutturato e di come è progettato.
Inoltre, lo studente acquisirà conoscenza dell'architettura di un sistema di gestione di database e dei suoi moduli principali (gestore delle transazioni, gestore di recupero, analizzatore di query). Lo studente acquisirà inoltre una buona conoscenza di come progettare l'organizzazione fisica delle relazioni (file e indici) e di come funziona l'ottimizzatore di query di un sistema di gestione dati.

Applicare conoscenza e comprensione:
Gli studenti saranno in grado di progettare il proprio sistema di gestione dei dati, incluso il modulo di controllo della concorrenza, il modulo di ripristino, il modulo per i metodi accesso ai file e l'ottimizzatore di query.

Capacità critiche e di giudizio:
Lo studente sarà in grado di valutare le caratteristiche e la qualità di diversi modelli di dati utilizzati nel mondo reale e dei relativi sistemi di gestione dei dati. Inoltre sarà in grado di scegliere la tecnica giusta per gestire la concorrenza, il recupero e l'elaborazione delle query in contesti applicativi specifici.

Capacità comunicativa:
Gli studenti acquisiranno una buona conoscenza su come illustrare gli algoritmi e le tecniche alla base di un moderno Data Manager.

Capacità di apprendimento:
Lo studente sarà in grado di comprendere qualsiasi nuova architettura e approccio alla gestione dei dati che si affermerà in futuro.

10599898 | ARTIFICIAL INTELLIGENCE AND MACHINE LEARNING [ING-INF/05] [ENG]9

Obiettivi formativi

Obiettivi generali:
Conoscenza dei principali scenari applicativi di interesse nell'analisi di collezioni di dati appartenenti a spazi euclidei o non di elevata dimensionalità.
Conoscenza e comprensione dei principali problemi metodologici e di analisi posti dalla dimensione crescente dei dati.
Conoscenza delle principali tecniche di soluzione e dei principali strumenti a disposizione per implementarle.
Comprensione degli aspetti teorici e fondazionali delle principali tecniche per l'analisi di collezioni di dati di grandi dimensioni
Capacità di tradurre le nozioni acquisite in programmi per la soluzione di problemi specifici.
Conoscenza delle principali tecniche di valutazione e loro applicazione a scenari specifici.

Obiettivi specifici:
Capacità di:
- individuare le tecniche più adatte a un problema di analisi di dati ad elevata dimensionalità;
- implementare la soluzione proposta, individuando gli strumenti più adatti a raggiungere lo scopo tra quelli disponibili;
- progettare e realizzari scenari sperimentali per valutare le soluzioni proposte
in condizioni realistiche;
Conoscenza e comprensione:
- conoscenza dei principali scenari applicativi;
- conoscenza delle principali tecniche di analisi;
- comprensione dei presupposti teorici e metodologici alla base delle tecniche principali
- conoscenza e comprensione delle principali tecniche e indici di valutazione
delle prestazioni
Applicare conoscenza e comprensione:
- essere in grado di tradurre esigenze applicative in problemi concreti di analisi dei dati;
- essere in grado di identificare gli aspetti del problema, se presenti, che potrebbero rendere la dimensione (o dimensionalità) dei dati un fattore critico;
- essere in grado di individuare le tecniche e gli strumenti più adatti alla soluzione dei problemi concreti di cui sopra;
- essere in grado di stimare a priori, almeno qualitativamente, la scalabilità delle soluzioni proposte;

Capacità critiche e di giudizio:
Essere in grado di valutare, anche sperimentalmente, l'efficacia, l'efficienza e la scalabilità delle soluzioni proposte

Capacità comunicative:
Essere in grado di descrivere in modo efficace le specifiche di un problema e di comunicare ad altri le scelte adottate e le motivazioni sottostanti a
tali scelte.

Capacità di apprendimento:
Il corso consentirà lo sviluppo di capacità di approfondimento autonomo su argomenti del corso o ad essi correlati. Metterà lo studente nelle condizioni di individuare e consultare in modo critico manuali avanzati o letteratura scientifica per affrontare scenari nuovi oppure per applicare tecniche alternative a scenari noti.

A SCELTA DELLO STUDENTE [N/D] [ENG]6

Obiettivi formativi

Fra le altre attività formative sono previsti 12 CFU sono a scelta dello studente.

A SCELTA DELLO STUDENTE [N/D] [ENG]6

Obiettivi formativi

Fra le altre attività formative sono previsti 12 CFU sono a scelta dello studente.

AAF1028 | PROVA FINALE [N/D] [ENG]30

Obiettivi formativi

La prova finale consiste nella presentazione e discussione di un attività progettuale e di una relazione, supervisionata da un docente, nella quale lo studente dimostra di aver raggiunto una padronanza delle metodologie proprie dell'Ingegneria Informatica e/o della loro applicazione.