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

Curricula per l'anno 2025 - Applied Computer Science and Artificial Intelligence – Informatica Applicata e Intelligenza Artificiale (33502)

Curriculum unico

1º anno

InsegnamentoSemestreCFUSSDLingua
10595099 | CALCULUS12MAT/05ENG

Obiettivi formativi

Obiettivi generali:
Acquisire una conoscenza delle tecniche elementari del Calcolo Integrale e differenziale per funzioni di una variabile.
Obiettivi specifici:
Fornire strumenti di analisi matematica di base come integrali, serie numeriche e di potenze ed equazioni differenziali.

Conoscenze e comprensione:
Integrazione secondo Riemann; integrali impropri. Serie numeriche. Serie di potenze. EDO (primo grado: lineari, metodo di separazione delle variabili) secondo grado con coefficienti costanti ( omogenea e con termine noto)

Applicare conoscenza e comprensione:
Essere in grado di svolgere esercizi su serie numeriche e di potenze. Capire al nozione di Integrali definiti e indefiniti, impropri. anche in relazione alle serie numeriche. Conoscere le equazioni alle differenziali ordinarie che possono essere svolte in modo esplicito come quelle del primo ordine lineari e con metodo di separazione delle variabili, o del secondo ordine con coefficienti costanti omogenee e con termine noto elementare.

Capacità di giudizio: Saper individuare il miglior approccio, tra i vari studiati, per risolvere un integrali, serie o Equazioni differenziali. Inoltre, la studentessa o lo studente sarà in grado di comprendere le problematiche relative agli integrali propri e impropri, alle serie divergenti.

Capacità di comunicazione: Essere in grado di discernere tra i vari strumenti matematici utili ai fini della comprensione di integrali, serie e Equazioni differenziali e anche a esporre i metodi rigorosi usati.

Capacità di apprendimento: Essere in grado di enunciare e applicare i teoremi e le tecniche usate nel corso del corso.

UNIT 16MAT/05ENG

Obiettivi formativi

Obiettivi generali: acquisire una conoscenza delle tecniche elementari del Calcolo Differenziale e delle principali applicazioni a problemi di massimo-minimo e allo studio del grafico di funzioni.
Obiettivi specifici:
Conoscenze e comprensione: al termine del corso lo studente avrà' acquisito le nozioni e i risultati di base del Calcolo Differenziale con particolare attenzione ai concetti di funzione, limite di funzione e derivata.
Applicare conoscenza e comprensione: al termine del corso lo studente sarà in grado di risolvere semplici problemi del Calcolo Differenziale, quali il calcolo esplicito di derivate, il calcolo del massimo e minimo locale e globale di funzioni di una variabile, e il disegno approssimativo del grafico di funzioni.
Capacità di giudizio: lo studente avra' le basi per utilizzare un grafico come strumento di analisi di una situazione concreta descrivibile matematicamente.
Capacità di comunicazione: lo studente sarà in grado di comprendere un testo scientifico di complessità' non elevata e di riassumerne i concetti principali.
Capacità di apprendimento: le conoscenze acquisite permetteranno uno studio, individuale o impartito in un corso, relativo ad aspetti piu' avanzati del Calcolo Differenziale.

10595546 | COMPUTER ARCHITECTURE12INF/01ENG

Obiettivi formativi

Obiettivi generali:
Metodologie di progettazione di circuiti combinatori e sequenziali e far comprendere i principi che sono usati per progettare i calcolatori moderni. In particolare, il corso tratta la struttura interna del microprocessore e le idee che hanno permesso la straordinaria evoluzione della potenza di calcolo negli ultimi 30 anni. come pipelining, caching, branch prediction, e multi-processing.
Obiettivi specifici:
codifica binaria di vari tipi di dato, algebra booleana, analisi e sintesi di circuiti combinatori, flip-flop, analisi e sintesi di circuiti sequenziali, registri, interconnesione tra registri e altri moduli. Inoltre, il corso tratta i principi di base di organizzazione del microprocessore e le nozioni di pipelining, caching, branch prediction, virtualizzazione e multi-processing. Inoltre, il corso tratta la programmazione assembly.
Conoscenza e comprensione:
Conoscere e capire come l'elaboratore gestisce ed elabora l'informazione. Inoltre, lo studente acquisirà conoscenza sull’organizzazione del microprocessore MIPS, come implementazione delle idee generali che fanno parte degli obbiettivi del corso. Inoltre, lo studente acquisirà conoscenza su come si strutturano i programmi in assembly, incluse le strutture dati, i paradigmi standard di programmazione e la ricorsione.
Applicare conoscenza e comprensione:
Dimostrare di saper progettare semplici circuiti combinatori e sequenziali in grado di svolgere determinati compiti. Inoltre, le conoscenze sono applicate sulla architettura MIPS, comprese in modo tale da poter capire le implicazioni delle scelte di programmazione sulla performance dei programmi su hardware specifico. Questa risultato è ottenuto tramite esercizi di programmazione e di valutazione delle prestazioni.
Capacità critiche e di giudizio:
saper scegliere il miglior approccio, tra i vari studiati, per risolvere un determinato compito. Inoltre,
lo studente sarà in grado di comprendere le problematiche relative alle prestazioni del software su hardware specifico e di valutarne autonomamente le caratteristiche.
Capacità comunicative:
essere in grado di valutare e motivare le proprie scelte nella progettazione di un circuito. Formare all'esposizione rigorosa degli argomenti tecnici.
Capacità di apprendimento:
Capire le differenze e i vantaggi delle varie tecniche di progettazione. Inoltre, il corso pone le basi per la comprensione dei moduli dell'insegnamento di Sistemi operativi e di tutti i corsi di programmazione, inclusa la programmazione di sistemi paralleli.

UNIT 16INF/01ENG

Obiettivi formativi

Obiettivi generali:
Metodologie di progettazione di circuiti combinatori e sequenziali e far comprendere i principi che sono usati per progettare i calcolatori moderni. In particolare, il corso tratta la struttura interna del microprocessore e le idee che hanno permesso la straordinaria evoluzione della potenza di calcolo negli ultimi 30 anni. come pipelining, caching, branch prediction, e multi-processing.
Obiettivi specifici:
codifica binaria di vari tipi di dato, algebra booleana, analisi e sintesi di circuiti combinatori, flip-flop, analisi e sintesi di circuiti sequenziali, registri, interconnesione tra registri e altri moduli. Inoltre, il corso tratta i principi di base di organizzazione del microprocessore e le nozioni di pipelining, caching, branch prediction, virtualizzazione e multi-processing. Inoltre, il corso tratta la programmazione assembly.
Conoscenza e comprensione:
Conoscere e capire come l'elaboratore gestisce ed elabora l'informazione. Inoltre, lo studente acquisirà conoscenza sull’organizzazione del microprocessore MIPS, come implementazione delle idee generali che fanno parte degli obbiettivi del corso. Inoltre, lo studente acquisirà conoscenza su come si strutturano i programmi in assembly, incluse le strutture dati, i paradigmi standard di programmazione e la ricorsione.
Applicare conoscenza e comprensione:
Dimostrare di saper progettare semplici circuiti combinatori e sequenziali in grado di svolgere determinati compiti. Inoltre, le conoscenze sono applicate sulla architettura MIPS, comprese in modo tale da poter capire le implicazioni delle scelte di programmazione sulla performance dei programmi su hardware specifico. Questa risultato è ottenuto tramite esercizi di programmazione e di valutazione delle prestazioni.
Capacità critiche e di giudizio:
saper scegliere il miglior approccio, tra i vari studiati, per risolvere un determinato compito. Inoltre,
lo studente sarà in grado di comprendere le problematiche relative alle prestazioni del software su hardware specifico e di valutarne autonomamente le caratteristiche.
Capacità comunicative:
essere in grado di valutare e motivare le proprie scelte nella progettazione di un circuito. Formare all'esposizione rigorosa degli argomenti tecnici.
Capacità di apprendimento:
Capire le differenze e i vantaggi delle varie tecniche di progettazione. Inoltre, il corso pone le basi per la comprensione dei moduli dell'insegnamento di Sistemi operativi e di tutti i corsi di programmazione, inclusa la programmazione di sistemi paralleli.

10595524 | LINEAR ALGEBRA6MAT/02ENG

Obiettivi formativi

Obiettivi generali:
Fornire conoscenze di base di teoria dei gruppi e di algebra lineare che sono comunemente utilizzati in informatica."

Obiettivi specifici:
Concetti di Algebra elementari
Introduzione alle strutture algebriche
Sviluppo del linguaggio dell'algebra lineare: spazi vettoriali e loro omomorfismi; spazi vettoriali, numeri e algebra delle matrici; endomorfismi, determinanti e diagonalizzazione; applicazioni.

Conoscenze e comprensione:
Alla fine del corso lo studente sarà in grado di fare conti in gruppi piccoli di facile struttura e di comprendere il significato e l'utilizzo di matrici nello studio di fenomeni lineari.

Applicare conoscenza e comprensione:
Utilizzo della diagonalizzazione di operatori per fornire un'interpretazione geometrica ad un fenomeno lineare e ricavarne informazioni rilevanti. Utilizzo del concetto di gruppo nello studio di problemi combinatori finiti.

Capacità di giudizio:
Gli studenti saranno in grado di scegliere lo strumento algebrico più appropriato allo studio di un problema.

Capacità di comunicazione:
Gli studenti impareranno il linguaggio dell'algebra lineare e dei gruppi e rudimenti di complessità.

Capacità di apprendimento:
L'apprendimento del linguaggio lineare e gruppale fornirà agli studenti la capacità di apprendere argomenti che ne fanno uso.

10595102 | PROGRAMMING12INF/01ENG

Obiettivi formativi

Obiettivi generali
Questo corso introduce agli studenti i metodi di base per la progettazione e l’analisi degli algoritmi. Studieranno vari ben noti algoritmi che risolvono problemi di base come l’ordinamento o la ricerca, insieme con i più semplici strumenti per analizzarli dal punto di vista dell’efficienza.

Obiettivi specifici:

Conoscenza e comprensione
Al termine del corso gli studenti conosceranno le metodologie di base per la progettazione e l'analisi di algoritmi iterativi e ricorsivi, le strutture dati elementari, i principali algoritmi di ordinamento e le implementazioni più elementari dei dizionari.

Applicare conoscenza e comprensione:
Al termine del corso gli studenti avranno acquisito familiarità con le principali strutture dati di base, in particolare quelle che implementano i dizionari. Sapranno spiegarne gli algoritmi e analizzarne la complessità, evidenziando come le prestazioni dipendano dalla struttura dati
utilizzata. Saranno in grado di progettare nuove strutture dati e i relativi algoritmi, rielaborando quelli esistenti; sapranno spiegare i principali algoritmi di ordinamento, illustrando le strategie di progetto sottostanti e le relative analisi di complessità; saranno in grado di confrontare i comportamenti asintotici dei tempi di esecuzione degli algoritmi studiati; saranno in grado di progettare soluzioni ricorsive di problemi e di analizzare asintoticamente gli algoritmi risultanti.

Capacità critiche e di giudizio
Lo studente avrà le basi per analizzare la qualità di un algoritmo e delle relative strutture dati, sia dal punto di vista della effettiva risoluzione del problema che da quello della efficienza computazionale con la quale il problema viene risolto.

Capacità comunicative
Lo studente acquisirà la capacità di esporre in modo chiaro ed organizzato le proprie conoscenze, capacità che verrà verificata sia mediante i quesiti presentati nelle prove scritte che durante la prova orale. Lo studente sarà in grado di esprimere un’idea algoritmica in modo rigoroso ad alto livello, in pseudocodice.

Capacità di apprendimento
Le conoscenze acquisite permetteranno allo studente di affrontare lo studio, individuale o previsto nell’ambito di un corso di laurea magistrale, di tecniche algoritmiche e di strutture dati più avanzate.

UNIT 26INF/01ENG

Obiettivi formativi

Obiettivi generali
Questo corso introduce agli studenti i metodi di base per la progettazione e l’analisi degli algoritmi. Studieranno vari ben noti algoritmi che risolvono problemi di base come l’ordinamento o la ricerca, insieme con i più semplici strumenti per analizzarli dal punto di vista dell’efficienza.

Obiettivi specifici:

Conoscenza e comprensione
Al termine del corso gli studenti conosceranno le metodologie di base per la progettazione e l'analisi di algoritmi iterativi e ricorsivi, le strutture dati elementari, i principali algoritmi di ordinamento e le implementazioni più elementari dei dizionari.

Applicare conoscenza e comprensione:
Al termine del corso gli studenti avranno acquisito familiarità con le principali strutture dati di base, in particolare quelle che implementano i dizionari. Sapranno spiegarne gli algoritmi e analizzarne la complessità, evidenziando come le prestazioni dipendano dalla struttura dati
utilizzata. Saranno in grado di progettare nuove strutture dati e i relativi algoritmi, rielaborando quelli esistenti; sapranno spiegare i principali algoritmi di ordinamento, illustrando le strategie di progetto sottostanti e le relative analisi di complessità; saranno in grado di confrontare i comportamenti asintotici dei tempi di esecuzione degli algoritmi studiati; saranno in grado di progettare soluzioni ricorsive di problemi e di analizzare asintoticamente gli algoritmi risultanti.

Capacità critiche e di giudizio
Lo studente avrà le basi per analizzare la qualità di un algoritmo e delle relative strutture dati, sia dal punto di vista della effettiva risoluzione del problema che da quello della efficienza computazionale con la quale il problema viene risolto.

Capacità comunicative
Lo studente acquisirà la capacità di esporre in modo chiaro ed organizzato le proprie conoscenze, capacità che verrà verificata sia mediante i quesiti presentati nelle prove scritte che durante la prova orale. Lo studente sarà in grado di esprimere un’idea algoritmica in modo rigoroso ad alto livello, in pseudocodice.

Capacità di apprendimento
Le conoscenze acquisite permetteranno allo studente di affrontare lo studio, individuale o previsto nell’ambito di un corso di laurea magistrale, di tecniche algoritmiche e di strutture dati più avanzate.

UNIT 16INF/01ENG

Obiettivi formativi

Obiettivi generali
Questo corso introduce agli studenti i metodi di base per la progettazione e l’analisi degli algoritmi. Studieranno vari ben noti algoritmi che risolvono problemi di base come l’ordinamento o la ricerca, insieme con i più semplici strumenti per analizzarli dal punto di vista dell’efficienza.

Obiettivi specifici:

Conoscenza e comprensione
Al termine del corso gli studenti conosceranno le metodologie di base per la progettazione e l'analisi di algoritmi iterativi e ricorsivi, le strutture dati elementari, i principali algoritmi di ordinamento e le implementazioni più elementari dei dizionari.

Applicare conoscenza e comprensione:
Al termine del corso gli studenti avranno acquisito familiarità con le principali strutture dati di base, in particolare quelle che implementano i dizionari. Sapranno spiegarne gli algoritmi e analizzarne la complessità, evidenziando come le prestazioni dipendano dalla struttura dati
utilizzata. Saranno in grado di progettare nuove strutture dati e i relativi algoritmi, rielaborando quelli esistenti; sapranno spiegare i principali algoritmi di ordinamento, illustrando le strategie di progetto sottostanti e le relative analisi di complessità; saranno in grado di confrontare i comportamenti asintotici dei tempi di esecuzione degli algoritmi studiati; saranno in grado di progettare soluzioni ricorsive di problemi e di analizzare asintoticamente gli algoritmi risultanti.

Capacità critiche e di giudizio
Lo studente avrà le basi per analizzare la qualità di un algoritmo e delle relative strutture dati, sia dal punto di vista della effettiva risoluzione del problema che da quello della efficienza computazionale con la quale il problema viene risolto.

Capacità comunicative
Lo studente acquisirà la capacità di esporre in modo chiaro ed organizzato le proprie conoscenze, capacità che verrà verificata sia mediante i quesiti presentati nelle prove scritte che durante la prova orale. Lo studente sarà in grado di esprimere un’idea algoritmica in modo rigoroso ad alto livello, in pseudocodice.

Capacità di apprendimento
Le conoscenze acquisite permetteranno allo studente di affrontare lo studio, individuale o previsto nell’ambito di un corso di laurea magistrale, di tecniche algoritmiche e di strutture dati più avanzate.

1049269 | ALGORITHMS6INF/01ENG

Obiettivi formativi

Obiettivi generali
Introduzione ai metodi di base per la progettazione e l'analisi degli algoritmi, iterativi e ricorsivi, ed alla valutazione della loro efficienza computazionale.

Obiettivi specifici
Conoscenza e comprensione:
Al termine del corso gli studenti conosceranno le metodologie di base per la progettazione e l'analisi di algoritmi iterativi e ricorsivi, le strutture dati elementari, alcuni modi per scandire tali strutture, i principali algoritmi di ordinamento e le implementazioni più elementari dei dizionari.

Applicare conoscenza e comprensione:
Al termine del corso gli studenti avranno acquisito familiarità con le principali strutture dati di base, in particolare quelle che implementano i dizionari. Sapranno spiegarne gli algoritmi e analizzarne la complessità, evidenziando come le prestazioni dipendano dalla struttura dati utilizzata. Saranno in grado di progettare nuove strutture dati e i relativi algoritmi, rielaborando quelli esistenti; sapranno spiegare i principali algoritmi di ordinamento, illustrando le strategie di progetto sottostanti e le relative analisi di complessità; saranno in grado di confrontare i comportamenti asintotici dei tempi di esecuzione degli algoritmi studiati; saranno in grado di progettare soluzioni ricorsive di problemi e di analizzare asintoticamente gli algoritmi risultanti.

Capacità critiche e di giudizio:
Lo studente avrà le basi per analizzare la qualità di un algoritmo e delle relative strutture dati, sia dal punto di vista della effettiva risoluzione del problema che da quello della efficienza computazionale con la quale il problema viene risolto.

Capacità comunicative:
Lo studente acquisirà la capacità di esporre in modo chiaro ed organizzato le proprie conoscenze, capacità che verrà verificata sia mediante i quesiti presentati nelle prove scritte che durante la prova orale. Lo studente sarà in grado di esprimere un'idea algoritmica in modo rigoroso ad alto livello, in pseudocodice.

Capacità di apprendimento successivo:
Le conoscenze acquisite permetteranno allo studente di affrontare lo studio, individuale o previsto nell'ambito di un corso di laurea magistrale, di tecniche algoritmiche e di strutture dati di base.

10595099 | CALCULUS12MAT/05ENG

Obiettivi formativi

Obiettivi generali:
Acquisire una conoscenza delle tecniche elementari del Calcolo Integrale e differenziale per funzioni di una variabile.
Obiettivi specifici:
Fornire strumenti di analisi matematica di base come integrali, serie numeriche e di potenze ed equazioni differenziali.

Conoscenze e comprensione:
Integrazione secondo Riemann; integrali impropri. Serie numeriche. Serie di potenze. EDO (primo grado: lineari, metodo di separazione delle variabili) secondo grado con coefficienti costanti ( omogenea e con termine noto)

Applicare conoscenza e comprensione:
Essere in grado di svolgere esercizi su serie numeriche e di potenze. Capire al nozione di Integrali definiti e indefiniti, impropri. anche in relazione alle serie numeriche. Conoscere le equazioni alle differenziali ordinarie che possono essere svolte in modo esplicito come quelle del primo ordine lineari e con metodo di separazione delle variabili, o del secondo ordine con coefficienti costanti omogenee e con termine noto elementare.

Capacità di giudizio: Saper individuare il miglior approccio, tra i vari studiati, per risolvere un integrali, serie o Equazioni differenziali. Inoltre, la studentessa o lo studente sarà in grado di comprendere le problematiche relative agli integrali propri e impropri, alle serie divergenti.

Capacità di comunicazione: Essere in grado di discernere tra i vari strumenti matematici utili ai fini della comprensione di integrali, serie e Equazioni differenziali e anche a esporre i metodi rigorosi usati.

Capacità di apprendimento: Essere in grado di enunciare e applicare i teoremi e le tecniche usate nel corso del corso.

UNIT 26MAT/05ENG

Obiettivi formativi

Obiettivi generali:
Acquisire una conoscenza delle tecniche elementari del Calcolo Integrale e differenziale per funzioni di una variabile.
Obiettivi specifici:
Fornire strumenti di analisi matematica di base come integrali, serie numeriche e di potenze ed equazioni differenziali.

Conoscenze e comprensione:
Integrazione secondo Riemann; integrali impropri. Serie numeriche. Serie di potenze. EDO (primo grado: lineari, metodo di separazione delle variabili) secondo grado con coefficienti costanti ( omogenea e con termine noto)

Applicare conoscenza e comprensione:
Essere in grado di svolgere esercizi su serie numeriche e di potenze. Capire al nozione di Integrali definiti e indefiniti, impropri. anche in relazione alle serie numeriche. Conoscere le equazioni alle differenziali ordinarie che possono essere svolte in modo esplicito come quelle del primo ordine lineari e con metodo di separazione delle variabili, o del secondo ordine con coefficienti costanti omogenee e con termine noto elementare.

Capacità di giudizio: Saper individuare il miglior approccio, tra i vari studiati, per risolvere un integrali, serie o Equazioni differenziali. Inoltre, la studentessa o lo studente sarà in grado di comprendere le problematiche relative agli integrali propri e impropri, alle serie divergenti.

Capacità di comunicazione: Essere in grado di discernere tra i vari strumenti matematici utili ai fini della comprensione di integrali, serie e Equazioni differenziali e anche a esporre i metodi rigorosi usati.

Capacità di apprendimento: Essere in grado di enunciare e applicare i teoremi e le tecniche usate nel corso del corso.

10595546 | COMPUTER ARCHITECTURE12INF/01ENG

Obiettivi formativi

Obiettivi generali:
Metodologie di progettazione di circuiti combinatori e sequenziali e far comprendere i principi che sono usati per progettare i calcolatori moderni. In particolare, il corso tratta la struttura interna del microprocessore e le idee che hanno permesso la straordinaria evoluzione della potenza di calcolo negli ultimi 30 anni. come pipelining, caching, branch prediction, e multi-processing.
Obiettivi specifici:
codifica binaria di vari tipi di dato, algebra booleana, analisi e sintesi di circuiti combinatori, flip-flop, analisi e sintesi di circuiti sequenziali, registri, interconnesione tra registri e altri moduli. Inoltre, il corso tratta i principi di base di organizzazione del microprocessore e le nozioni di pipelining, caching, branch prediction, virtualizzazione e multi-processing. Inoltre, il corso tratta la programmazione assembly.
Conoscenza e comprensione:
Conoscere e capire come l'elaboratore gestisce ed elabora l'informazione. Inoltre, lo studente acquisirà conoscenza sull’organizzazione del microprocessore MIPS, come implementazione delle idee generali che fanno parte degli obbiettivi del corso. Inoltre, lo studente acquisirà conoscenza su come si strutturano i programmi in assembly, incluse le strutture dati, i paradigmi standard di programmazione e la ricorsione.
Applicare conoscenza e comprensione:
Dimostrare di saper progettare semplici circuiti combinatori e sequenziali in grado di svolgere determinati compiti. Inoltre, le conoscenze sono applicate sulla architettura MIPS, comprese in modo tale da poter capire le implicazioni delle scelte di programmazione sulla performance dei programmi su hardware specifico. Questa risultato è ottenuto tramite esercizi di programmazione e di valutazione delle prestazioni.
Capacità critiche e di giudizio:
saper scegliere il miglior approccio, tra i vari studiati, per risolvere un determinato compito. Inoltre,
lo studente sarà in grado di comprendere le problematiche relative alle prestazioni del software su hardware specifico e di valutarne autonomamente le caratteristiche.
Capacità comunicative:
essere in grado di valutare e motivare le proprie scelte nella progettazione di un circuito. Formare all'esposizione rigorosa degli argomenti tecnici.
Capacità di apprendimento:
Capire le differenze e i vantaggi delle varie tecniche di progettazione. Inoltre, il corso pone le basi per la comprensione dei moduli dell'insegnamento di Sistemi operativi e di tutti i corsi di programmazione, inclusa la programmazione di sistemi paralleli.

UNIT 26INF/01ENG

Obiettivi formativi

Obiettivi generali:
Metodologie di progettazione di circuiti combinatori e sequenziali e far comprendere i principi che sono usati per progettare i calcolatori moderni. In particolare, il corso tratta la struttura interna del microprocessore e le idee che hanno permesso la straordinaria evoluzione della potenza di calcolo negli ultimi 30 anni. come pipelining, caching, branch prediction, e multi-processing.
Obiettivi specifici:
codifica binaria di vari tipi di dato, algebra booleana, analisi e sintesi di circuiti combinatori, flip-flop, analisi e sintesi di circuiti sequenziali, registri, interconnesione tra registri e altri moduli. Inoltre, il corso tratta i principi di base di organizzazione del microprocessore e le nozioni di pipelining, caching, branch prediction, virtualizzazione e multi-processing. Inoltre, il corso tratta la programmazione assembly.
Conoscenza e comprensione:
Conoscere e capire come l'elaboratore gestisce ed elabora l'informazione. Inoltre, lo studente acquisirà conoscenza sull’organizzazione del microprocessore MIPS, come implementazione delle idee generali che fanno parte degli obbiettivi del corso. Inoltre, lo studente acquisirà conoscenza su come si strutturano i programmi in assembly, incluse le strutture dati, i paradigmi standard di programmazione e la ricorsione.

Applicare conoscenza e comprensione:
Dimostrare di saper progettare semplici circuiti combinatori e sequenziali in grado di svolgere determinati compiti. Inoltre, le conoscenze sono applicate sulla architettura MIPS, comprese in modo tale da poter capire le implicazioni delle scelte di programmazione sulla performance dei programmi su hardware specifico. Questa risultato è ottenuto tramite esercizi di programmazione e di valutazione delle prestazioni.

Capacità critiche e di giudizio:
saper scegliere il miglior approccio, tra i vari studiati, per risolvere un determinato compito. Inoltre,
lo studente sarà in grado di comprendere le problematiche relative alle prestazioni del software su hardware specifico e di valutarne autonomamente le caratteristiche.

Capacità comunicative:
essere in grado di valutare e motivare le proprie scelte nella progettazione di un circuito. Formare all'esposizione rigorosa degli argomenti tecnici.

Capacità di apprendimento:
Capire le differenze e i vantaggi delle varie tecniche di progettazione. Inoltre, il corso pone le basi per la comprensione dei moduli dell'insegnamento di Sistemi operativi e di tutti i corsi di programmazione, inclusa la programmazione di sistemi paralleli.

10595523 | PHYSICS6FIS/01ENG

Obiettivi formativi

OBIETTIVI GENERALI:
1) Insegnare agli studenti le leggi fondamentali della fisica e la loro applicazione a situazioni del mondo reale.

2) Sviluppare le abilità di problem-solving descrivendo i fenomeni fisici con formule matematiche da un lato, ed intuizione fisica dall’altro.

OBIETTIVI SPECIFICI:
Conoscenza e comprensione
3) Conoscere le nozioni di base della Meccanica Newtoniana, fisica dei fluidi, termodinamica, elettricita’ e magnetismo.
4) Conoscere I concetti fondamentali di forza, momento della forza, lavoro, energia potenziale, energia cinetica, energia meccanica, potenza, impulso, quantita’ di moto e momento angolare.
5) Conoscere alcune leggi di conservazione della fisica e la loro importanza.
6) Conoscere I concetti di temperatura, calore ed entropia applicati a semplici sistemi termodinamici.
7) Conoscere i concetti di campo elettrico e potenziale, campo magnetico e correnti elettriche.
8) Comprendere il testo di un esercizio di fisica.

Capacità applicative
Lo studente sara’ in grado di:
9) Risolvere una grande varieta’ di problemi di fisica formalizzando la loro soluzione dal punto di vista matematico.
10) Risolvere un problema di fisica  in modo coerente, sia dal punto di vista formale che quantitativo.
11) Valutare gli effetti dominanti in un problema fisico.
12) Applicare le leggi di Newton per descrivere il moto di un punto materiale, di sistemi di punti e la rotazione di corpi rigidi.
13) Risolvere problemi di dinamica utilizzando i concetti di lavoro, energia cinetica, energia potenziale ed energia meccanica.
14) Utilizzare la conservazione dell’energia, della quantità di moto e del momento angolare in un'ampia gamma di situazioni.
15) Risolvere semplici problemi riguardanti la statica e la dinamica dei fluidi.
16) Risolvere semplici problemi riguardanti l'energia termica utilizzando il primo principio della termodinamica.
17) Descrivere il significato del concetto di entropia e della seconda legge della termodinamica.
18) Descrivere i campi elettrici e il loro potenziale nel caso di cariche stazionarie.
19) Descrivere i campi magnetici generati da correnti stazionarie e I fenomeni legati all’induzione elettromagnetica.

Capacita’ critiche e di giudizio

20) Essere in grado di stabilire se una relazione tra grandezze fisiche o una legge sono corrette, anche da un punto di vista dimensionale.

21) Sviluppo di doti di ragionamento quantitativo e analitico utili per studiare, modellizzare e comprendere problemi di fisica.

Capacita’ comunicative
22) Saper parlare di fisica usando una terminologia appropriata.
23) Saper descrivere un problema complesso, isolandone i contributi più rilevanti.

Capacità di apprendimento
24) Avere la capacità di consultare un testo che parla di fisica.

10600241 | PROGRAMMING 26INF/01ENG

Obiettivi formativi

Obiettivi generali:
Apprendimento dei concetti della programmazione orientata agli oggetti mediante il linguaggio di programmazione Java.

Obiettivi specifici:
I concetti fondamentali della programmazione orientata agli oggetti: classi e oggetti, incapsulamento, ereditarietà, polimorfismo, binding statico e dinamico, i design pattern. La programmazione funzionale. Gli strumenti e le metodologie di base della progettazione software tramite un linguaggio orientato agli oggetti. Il linguaggio Java.

Conoscenza e comprensione:
Conoscenza dei costrutti dei linguaggi di programmazione orientata agli oggetti, con particolare riferimento al linguaggio Java. Comprensione di un programma Java. Capacità di scrittura di un programma Java di piccole e medie dimensioni.

Applicazione di conoscenza e comprensione:
Essere in grado di applicare le metodologie di base per affrontare la progettazione di sistemi software di grandezza medio-piccola. Saper usare i principali strumenti di sviluppo per realizzare tali sistemi in Java.

Autonomia di giudizio:
Capacità di identificare istruzioni, costrutti o pattern errati o inefficienti così come corretti o efficienti in Java.

Abilità comunicative:
Illustrazione del progetto sviluppato.

Capacità di apprendimento:
Capacità di apprendere e applicare nuove tecniche di programmazione a partire da quelle apprese durante il corso.

2º anno

InsegnamentoSemestreCFUSSDLingua
10595529 | CALCULUS 26MAT/05ENG

Obiettivi formativi

Obiettivi generali:
Acquisire una conoscenza delle tecniche elementari del Calcolo Integrale e differenziale per funzioni di una variabile.
Obiettivi specifici:
Fornire strumenti di analisi matematica di base come integrali, serie numeriche e di potenze ed equazioni differenziali. 
Conoscenze e comprensione:
Integrazione secondo Riemann; integrali impropri. Serie numeriche.  Serie di potenze. EDO (primo grado: lineari, metodo di separazione delle variabili)  secondo grado con coefficienti costanti (omogenea e con termine noto).
Applicare conoscenza e comprensione:
Essere in grado di svolgere esercizi su serie numeriche e di potenze.  Capire la nozione di Integrali definiti e indefiniti, impropri. anche in relazione alle serie numeriche. Conoscere le equazioni alle differenziali ordinarie che possono essere svolte in modo esplicito come  quelle  del primo ordine lineari e con metodo di separazione delle variabili, o del  secondo ordine con coefficienti costanti omogenee e con termine noto elementare.
Capacità di giudizio:
Saper individuare il miglior approccio, tra i vari studiati, per risolvere un integrali, serie o Equazioni differenziali.  Inoltre, la studentessa o lo studente sarà in grado di comprendere le problematiche relative agli integrali propri e impropri, alle serie divergenti. 
Capacità di comunicazione:
Essere in grado di discernere tra i vari strumenti matematici utili ai fini della comprensione di integrali, serie e Equazioni differenziali e anche a esporre i metodi rigorosi usati.
Capacità di apprendimento:
Essere in grado di enunciare e applicare i teoremi e le tecniche usate nel corso del corso.

10595525 | PROBABILITY6MAT/06ENG

Obiettivi formativi

Obiettivi generali:
Acquisire conoscenza e capacità di applicazione di argomenti di base di probabilità e statistica.

Obiettivi specifici:
Assiomi e proprietà elementari delle probabilità. Variabili Aleatorie. Distribuzioni continue e discrete. Valori attesi. Introduzione all'inferenza statistica.

Conoscenza e comprensione:
Al termine del corso lo studente avrà acquisito le nozioni e i risultati di base relativi alla teoria della probabilità su spazi finiti e numerabili, al concetto di vettore aleatorio discreto e al concetto di variabile aleatoria continua.

Applicare conoscenza e comprensione:
Gli studenti che abbiano superato l’esame saranno in grado di applicare le nozioni di calcolo combinatorio per risolvere semplici problemi di probabilità discreta, problemi inerenti vettori casuali discreti e numeri casuali rappresentati da variabili aleatorie continue. Lo studente sarà anche in grado di apprezzare il significato e le implicazioni dell’indipendenza e del condizionamento (nell’ambito di modelli discreti), comprendere il significato di alcuni teoremi limite fondamentali, quali la legge dei grandi numeri.

Capacità critiche e di giudizio:
Lo studente avrà le basi per analizzare e costruire modelli probabilistici in semplici situazioni di interesse fisico, biologico e tecnologico, utilizzare tavole e software di simulazione delle leggi discrete di più comune applicazione, nonché della legge gaussiana, e di comprendere l’utilizzazione di strumenti statistici elementari nell’inferenza, nel campionamento statistico e nella simulazione.

Capacità comunicative:
Capacità di esporre i contenuti nella parte orale della verifica e negli eventuali quesiti teorici presenti nella prova scritta.

Capacità di apprendimento: le conoscenze acquisite permetteranno uno studio, individuale o impartito in un corso relativo ad aspetti più specialistici di teoria della probabilità.

10595617 | DATA MANAGEMENT AND ANALYSIS12INF/01ENG

Obiettivi formativi

Obiettivi generali:
Essere in grado di progettare/valutare le proprietà, la struttura di memorizzazione e i protocolli di un sistema di gestione di basi di dati.

Obiettivi specifici:
Conoscenza delle proprietà di uno schema relazionale e di una decomposizione. Capacità di utilizzare le espressioni di algebra relazionale per la ricerca di informazioni in una base di dati relazionale. Capacità di valutare i costi delle operazioni di accesso ai dati.

Avere conoscenza e comprensione:
Fondamenti teorici della progettazione e della interrogazione di una base di dati relazionale (algebra relazionale). Principali strutture di organizzazione dei dati su memoria secondaria.

Applicare conoscenza e comprensione:
Progettare schemi relazionali con “buone proprietà”. Interrogare una base di dati mediante algebra relazionale. Valutare i costi delle operazioni fondamentali su file con diversi tipi di organizzazione fisica.

Capacità critiche e di giudizio:
Essere in grado di valutare le proprietà di uno schema relazionale e di una sua decomposizione. Essere in grado di scegliere la struttura dati più appropriata per memorizzare le informazioni di uno schema.

Capacità comunicative:
Essere in grado di comunicare/condividere caratteristiche qualitative/quantitative relative alla struttura relazionale di una base di dati.

UNIT I6INF/01ENG

Obiettivi formativi

Obiettivi generali:
Essere in grado di progettare/valutare le proprietà, la struttura di memorizzazione e i protocolli di un sistema di gestione di basi di dati.

Obiettivi specifici:
Conoscenza delle proprietà di uno schema relazionale e di una decomposizione. Capacità di utilizzare le espressioni di algebra relazionale per la ricerca di informazioni in una base di dati relazionale. Capacità di valutare i costi delle operazioni di accesso ai dati.

Avere conoscenza e comprensione:
Fondamenti teorici della progettazione e della interrogazione di una base di dati relazionale (algebra relazionale). Principali strutture di organizzazione dei dati su memoria secondaria.

Applicare conoscenza e comprensione:
Progettare schemi relazionali con “buone proprietà”. Interrogare una base di dati mediante algebra relazionale. Valutare i costi delle operazioni fondamentali su file con diversi tipi di organizzazione fisica.

Capacità critiche e di giudizio:
Essere in grado di valutare le proprietà di uno schema relazionale e di una sua decomposizione. Essere in grado di scegliere la struttura dati più appropriata per memorizzare le informazioni di uno schema.

Capacità comunicative:
Essere in grado di comunicare/condividere caratteristiche qualitative/quantitative relative alla struttura relazionale di una base di dati.

10595616 | SYSTEMS AND NETWORKING12INF/01ENG

Obiettivi formativi

I sistemi operativi sono parte essenziale di un sistema di calcolo e costituiscono l'esempio ideale di un concetto fondamentale e trasversale all'intero percorso di studio in Informatica, ossia quello dell'astrazione. Più specificamente, grazie al processo di virtualizzazione delle risorse fisiche, i sistemi operativi consentono ai programmatori di sviluppare software applicativi evitando di doversi concentrare sui dettagli della macchina hardware, garantendo infine un miglior livello di usabilità da parte dell'utente finale. È pertanto necessario che uno studente di Informatica possieda le basi per comprendere le principali problematiche relative all'efficace progettazione (e utilizzo) di un software altamente complesso come quello di un sistema operativo moderno.
Allo scopo di fornire tali basi, durante il corso verranno discussi alcuni concetti fondamentali relativi ai sistemi operativi cosiddetti general purpose (tipicamente installati su PC/laptop) e alle loro funzionalità primarie (gestione dei processori, della memoria e dei dispositivi di ingresso/uscita). Verranno altresì forniti cenni sulle caratteristiche principali dei sistemi operativi installati sui dispositivi mobili (tablet/smartphone).
I concetti generali previsti per il corso, ampiamente coperti dal materiale bibliografico consigliato, verranno discussi a lezione in maniera relativamente indipendente da specifici sistemi operativi. Essi saranno comunque esemplificati facendo riferimento a sistemi operativi noti e di utilizzo comune, come ad esempio UNIX/Linux, Windows, Mac, Android, iOS, etc.

UNIT II6INF/01ENG

Obiettivi formativi

Obiettivi Generali

Il corso è articolato in due moduli fortemente complementari. Il primo modulo offre una
preparazione approfondita sui principi, l’architettura e i meccanismi fondamentali dei
sistemi operativi, ponendo attenzione sia alle caratteristiche consolidate dei sistemi
tradizionali sia agli aspetti più innovativi introdotti dall’evoluzione tecnologica. Gli studenti
svilupperanno anche competenze pratiche nell’interazione con il kernel tramite le principali
interfacce di programmazione, con particolare riferimento all’ambiente UNIX/Linux e alla
gestione efficiente delle risorse di sistema.

Il secondo modulo è dedicato alle architetture di rete e alla comunicazione nei sistemi
distribuiti e su larga scala, dai data center fino a Internet. Adottando un approccio top-
down, questa parte del corso analizza le funzionalità chiave e i meccanismi dei protocolli
dello stack TCP/IP, con l’obiettivo di progettare comunicazioni affidabili, sicure e adatte alle
diverse esigenze applicative in termini di prestazioni e scalabilità.

Obiettivi Specifici
Il corso affronta in modo sistematico i concetti fondamentali dei sistemi operativi moderni, con un focus specifico sull’ambiente UNIX/Linux. Tra gli argomenti trattati: l’evoluzione storica dei sistemi operativi; l’architettura hardware di base (CPU, memoria, dispositivi di I/O); la gestione di processi e thread, e il relativo scheduling sulla CPU; le problematiche legate allo stallo e alle sue tecniche di prevenzione; la concorrenza e la sincronizzazione tra processi; la gestione della memoria; i file system; e i meccanismi di sicurezza.
Il secondo modulo si concentra sulla progettazione e implementazione degli stack protocollari che abilitano la comunicazione nei sistemi distribuiti, sia su scala locale che geografica. Seguendo l’approccio top-down introdotto da Kurose e Ross, l’analisi parte dalle applicazioni di rete e dai protocolli che le supportano, per poi approfondire progressivamente i livelli sottostanti: trasporto, rete, data-link e fisico. Verranno esaminati protocolli fondamentali come HTTP, DNS, TCP, UDP, IP ed Ethernet, insieme ai relativi meccanismi di indirizzamento, instradamento, gestione degli errori e controllo del flusso. La componente pratica sarà supportata da strumenti di simulazione e analisi del traffico, utili a comprendere il comportamento dinamico delle reti in scenari realistici.

Conoscenza e comprensione:

Il primo modulo del corso consente agli studenti di comprendere a fondo come i sistemi operativi supportino l’esecuzione dei programmi utente e gestiscano le periferiche hardware. Vengono analizzati metodi e tecniche fondamentali per la rappresentazione dei processi in memoria e la gestione della multiprogrammazione, ovvero l’esecuzione simultanea di più processi in ambienti con risorse limitate.
Un’attenzione particolare è dedicata all’architettura interna del sistema operativo Linux, al funzionamento della shell BASH e all’uso delle principali system call, fornendo agli studenti strumenti pratici per interagire direttamente con il sistema a basso livello.

Nel secondo modulo, gli studenti acquisiscono una solida comprensione delle architetture di rete, spaziando dai sistemi locali fino alle infrastrutture distribuite su scala geografica, come le reti di content delivery e Internet. L’obiettivo è fornire una conoscenza approfondita dei concetti fondamentali che governano le reti di elaboratori, con particolare attenzione alla struttura a livelli dei protocolli e ai servizi associati.
Verranno affrontate in dettaglio le problematiche e le soluzioni legate alla progettazione dei vari livelli dello stack protocollare: fisico, data-link (incluso il sottolivello MAC), rete, trasporto e applicazione.
Attraverso l’analisi critica delle principali architetture e protocolli, gli studenti acquisiranno familiarità con i requisiti di qualità del servizio (QoS) e le metriche prestazionali delle reti. Esercizi pratici e simulazioni del comportamento di sistemi reali completeranno il percorso formativo, rafforzando la comprensione dei concetti chiave in un contesto moderno in cui le crescenti richieste delle applicazioni di intelligenza artificiale pongono nuove sfide alle infrastrutture di rete.
Applicare conoscenza e comprensione:
Attraverso il primo modulo del corso, gli studenti acquisiranno la capacità di progettare programmi a livello utente e di sistema in modo efficiente e sicuro. Saranno in grado di sviluppare script in BASH per risolvere problemi pratici e scrivere programmi in linguaggio C che utilizzano le system call di Linux per ottimizzare l’uso delle risorse del sistema operativo.

Nel secondo modulo, gli studenti svilupperanno competenze avanzate nell’analisi e nell’applicazione dei protocolli di rete. In particolare, saranno in grado di:

comprendere in profondità le finalità, le caratteristiche e il funzionamento di protocolli e sistemi di comunicazione di nuova generazione;

analizzare criticamente le scelte progettuali dei protocolli nello stack TCP/IP e selezionare le configurazioni più adatte in base ai requisiti applicativi;

valutare l’impatto delle scelte protocollari sulle prestazioni di sistemi distribuiti e infrastrutture Internet, anche alla luce delle crescenti esigenze introdotte dall’adozione su larga scala di sistemi di intelligenza artificiale.

Capacità critiche e di giudizio:
Il corso sviluppa la capacità di analisi critica e valutazione tecnica in contesti complessi. Al termine del primo modulo, lo studente sarà in grado di:
prevedere l’utilizzo delle risorse da parte di un programma;
individuare condizioni di stallo in sistemi multiprogrammati e proporre strategie di prevenzione;
garantire la mutua esclusione tra processi e l’accesso sicuro a sezioni di memoria o risorse sensibili.
Inoltre, sarà in grado di scegliere la soluzione tecnica più adeguata per raggiungere un determinato obiettivo, valutando quando ricorrere a comandi shell, a script BASH, o a programmi in C/Java che sfruttano system call di basso livello.
Attraverso lo studio del secondo modulo, lo studente acquisirà strumenti per analizzare criticamente il comportamento delle architetture di rete e comprenderne le limitazioni in termini di prestazioni, raggiungibilità e tolleranza ai guasti. Sarà in grado di diagnosticare i problemi e proporre soluzioni progettuali e configurative coerenti con i vincoli dell’infrastruttura e gli obiettivi applicativi.

Capacità comunicative
Al termine del corso, lo studente sarà in grado di comunicare in modo chiaro, preciso e tecnicamente corretto le caratteristiche dei sistemi operativi e i meccanismi di interazione tra software e hardware. Sarà in grado di redigere e documentare in maniera efficace script BASH e programmi in linguaggio C che utilizzano le system call di Linux, rendendoli comprensibili sia a utenti esperti sia a interlocutori meno tecnici.
Inoltre, grazie alle competenze acquisite nel secondo modulo, lo studente saprà interfacciarsi con utenti finali, progettisti e sviluppatori di sistemi di rete, comunicando con efficacia requisiti di qualità del servizio (QoS), illustrando i meccanismi alla base del funzionamento delle architetture di rete, e discutendo criticamente eventuali problematiche e soluzioni in scenari complessi e distribuiti.
Capacità di apprendimento:
I sistemi operativi e le reti di comunicazione costituiscono esempi paradigmatici di sistemi hardware/software complessi. Le conoscenze acquisite durante il corso forniscono una base solida e generalizzabile, che risulterà particolarmente preziosa nell’affrontare domini tecnologici caratterizzati da elevata complessità.
Tra questi rientrano: i sistemi distribuiti, le architetture cloud, i framework per l’elaborazione e l’analisi di big data, le infrastrutture enterprise multilivello, le reti 5G/6G, l’edge computing, e le architetture per l’intelligenza artificiale, incluse quelle basate su approcci di federated learning. Il corso prepara quindi gli studenti a un apprendimento continuo e consapevole, abilitando una comprensione critica dei sistemi complessi che caratterizzano l’informatica contemporanea.

UNIT I6INF/01ENG

Obiettivi formativi

I sistemi operativi sono parte essenziale di un sistema di calcolo e costituiscono l'esempio ideale di un concetto fondamentale e trasversale all'intero percorso di studio in Informatica, ossia quello dell'astrazione. Più specificamente, grazie al processo di virtualizzazione delle risorse fisiche, i sistemi operativi consentono ai programmatori di sviluppare software applicativi evitando di doversi concentrare sui dettagli della macchina hardware, garantendo infine un miglior livello di usabilità da parte dell'utente finale. È pertanto necessario che uno studente di Informatica possieda le basi per comprendere le principali problematiche relative all'efficace progettazione (e utilizzo) di un software altamente complesso come quello di un sistema operativo moderno.
Allo scopo di fornire tali basi, durante il corso verranno discussi alcuni concetti fondamentali relativi ai sistemi operativi cosiddetti general purpose (tipicamente installati su PC/laptop) e alle loro funzionalità primarie (gestione dei processori, della memoria e dei dispositivi di ingresso/uscita). Verranno altresì forniti cenni sulle caratteristiche principali dei sistemi operativi installati sui dispositivi mobili (tablet/smartphone).
I concetti generali previsti per il corso, ampiamente coperti dal materiale bibliografico consigliato, verranno discussi a lezione in maniera relativamente indipendente da specifici sistemi operativi. Essi saranno comunque esemplificati facendo riferimento a sistemi operativi noti e di utilizzo comune, come ad esempio UNIX/Linux, Windows, Mac, Android, iOS, etc.

10595618 | ARTIFICIAL INTELLIGENCE AND MACHINE LEARNING12INF/01ENG

Obiettivi formativi

Obiettivi generali:

Introdurre lo studente alla disciplina dell’apprendimento automatico e alla progettazione e implementazione di sistemi di predizione con apprendimento supervisionato e senza supervisione.

Obiettivi specifici:

Il corso è concepito per introdurre alla disciplina dell’apprendimento automatico (machine learning, ML), una classe di metodi che apprendono pattern dai dati ed effettuano delle predizioni su nuovi dati. Solitamente è utile usare questo tipo di approccio quando non si riesce a programmare il calcolatore con un insieme di regole o un algoritmo ben definito.

Questo unità è complementare alla Unit I del medesimo corso. Il corso è introduttivo e generale sull’apprendimento automatico e non è un corso interamente su Deep Learning, anche se verranno impartite alcune nozioni fondamentali (sia teoriche che computazionali) che stanno alla base del Deep Learning. Il corso è propedeutico per corsi avanzati su Deep Learning.

Gli obiettivi specifici sono:

1) Introduzione all’apprendimento automatico, quando è necessario usarlo, paradigmi e applicazioni.

2) Apprendimento con supervisione. Modelli parametrici: linear regression, logistic regression, regularization; multilayer perceptron, overparameterized models; the backpropagation algorithm; gradient descent; computational graph for automatic differentiation; loss function for classification. Support Vector Machines: Optimal hyperplane, margin, kernels. Modelli non parametrici: the nearest neighbour (NN) Classifier, Decision Trees/Random Forest.

3) Apprendimento senza supervisione. Dimensionality Reduction: Principal Components Analysis (PCA), t-SNE; Clustering, Kmeans, Expectation-Maximization (EM); Gaussian Mixture Model (GMM)

4) Progettare ed implementare sistemi di apprendimento automatico: Visualizzazione dei dati e analisi, cross-validation, impostare iper-parametri.

Conoscenza e comprensione:

Le conoscenze e competenze apprese sono divise su due assi: fornire principi teorici riguardo ai metodi di base per apprendimento con e senza supervisione. Saper applicare tali concetti nella pratica a dati sintetici o dataset reali ma di piccola scala al fine di applicare nella pratica tali nozioni.

Applicazione di conoscenza e comprensione:

Verranno usati strumenti come NumPy (con un enfasi a scrivere codice vettorizzato), scikit learn, PyTorch (automatic differentiation e piccole reti neurali) per implementare sistemi di base. Le applicazioni e i domini applicativi possono essere diversi, principalmente su dati sintetici o immagini.

Autonomia di giudizio:

Sviluppare spirito critico sull’applicazione e l’uso di un sistema di ML e saper valutare e misurare le prestazioni di una algoritmo su dei dati. Saper distinguere i vantaggi e gli svantaggi di diversi algoritmi e determinare il più idoneo in base al problema.

Abilità comunicative:

Mostrare padronanza degli argomenti, comunicando in maniera chiara e con rigore logico, e con la giusta terminologia i concetti appresi al corso sia per quanto riguarda la parte teorica che pratica. La comunicazione può avvenire anche con un report su attività di laboratorio svolta, motivando propriamente le decisioni prese.

Capacità di apprendimento:

Il corso pone le basi per comprendere articoli scientifici avanzati su apprendimento automatico in diversi ambiti applicativi (computer vision, NLP) e fornisce una buona base di concetti fondamentali per corsi avanzati su Deep Learning.

UNIT II6INF/01ENG

Obiettivi formativi

Obiettivi generali:

Introdurre lo studente alla disciplina dell’apprendimento automatico e alla progettazione e implementazione di sistemi di predizione con apprendimento supervisionato e senza supervisione.

Obiettivi specifici:

Il corso è concepito per introdurre alla disciplina dell’apprendimento automatico (machine learning, ML), una classe di metodi che apprendono pattern dai dati ed effettuano delle predizioni su nuovi dati. Solitamente è utile usare questo tipo di approccio quando non si riesce a programmare il calcolatore con un insieme di regole o un algoritmo ben definito.

Questo unità è complementare alla Unit I del medesimo corso. Il corso è introduttivo e generale sull’apprendimento automatico e non è un corso interamente su Deep Learning, anche se verranno impartite alcune nozioni fondamentali (sia teoriche che computazionali) che stanno alla base del Deep Learning. Il corso è propedeutico per corsi avanzati su Deep Learning.

Gli obiettivi specifici sono:

1) Introduzione all’apprendimento automatico, quando è necessario usarlo, paradigmi e applicazioni.

2) Apprendimento con supervisione. Modelli parametrici: linear regression, logistic regression, regularization; multilayer perceptron, overparameterized models; the backpropagation algorithm; gradient descent; computational graph for automatic differentiation; loss function for classification. Support Vector Machines: Optimal hyperplane, margin, kernels. Modelli non parametrici: the nearest neighbour (NN) Classifier, Decision Trees/Random Forest.

3) Apprendimento senza supervisione. Dimensionality Reduction: Principal Components Analysis (PCA), t-SNE; Clustering, Kmeans, Expectation-Maximization (EM); Gaussian Mixture Model (GMM)

4) Progettare ed implementare sistemi di apprendimento automatico: Visualizzazione dei dati e analisi, cross-validation, impostare iper-parametri.

Conoscenza e comprensione:

Le conoscenze e competenze apprese sono divise su due assi: fornire principi teorici riguardo ai metodi di base per apprendimento con e senza supervisione. Saper applicare tali concetti nella pratica a dati sintetici o dataset reali ma di piccola scala al fine di applicare nella pratica tali nozioni.

Applicazione di conoscenza e comprensione:

Verranno usati strumenti come NumPy (con un enfasi a scrivere codice vettorizzato), scikit learn, PyTorch (automatic differentiation e piccole reti neurali) per implementare sistemi di base. Le applicazioni e i domini applicativi possono essere diversi, principalmente su dati sintetici o immagini.

Autonomia di giudizio:

Sviluppare spirito critico sull’applicazione e l’uso di un sistema di ML e saper valutare e misurare le prestazioni di una algoritmo su dei dati. Saper distinguere i vantaggi e gli svantaggi di diversi algoritmi e determinare il più idoneo in base al problema.

Abilità comunicative:

Mostrare padronanza degli argomenti, comunicando in maniera chiara e con rigore logico, e con la giusta terminologia i concetti appresi al corso sia per quanto riguarda la parte teorica che pratica. La comunicazione può avvenire anche con un report su attività di laboratorio svolta, motivando propriamente le decisioni prese.

Capacità di apprendimento:

Il corso pone le basi per comprendere articoli scientifici avanzati su apprendimento automatico in diversi ambiti applicativi (computer vision, NLP) e fornisce una buona base di concetti fondamentali per corsi avanzati su Deep Learning.

UNIT I6INF/01ENG

Obiettivi formativi

Obiettivi generali:

Il corso si propone di introdurre gli studenti a una presentazione ad ampio spettro dell'intelligenza artificiale (IA), con particolare attenzione al ragionamento automatizzato.

Obiettivi specifici:

Il corso persegue l'obiettivo di rendere gli studenti abili nella comprensione, nell'uso, nell'adattamento e nello sviluppo di soluzioni a un'ampia serie di problemi di IA nel contesto della progettazione di sistemi software intelligenti, che vanno dalla ricerca alla soddisfazione dei vincoli, dai linguaggi formali ai sistemi deduttivi.

Conoscenza e comprensione:

Gli studenti apprenderanno gli approcci e le euristiche fondamentali per i problemi di ricerca e di soddisfazione dei vincoli, la rappresentazione della conoscenza e il ragionamento in logica proposizionale e logica del primo ordine.

Applicazione di conoscenza e comprensione:

Gli studenti saranno in grado di rappresentare in modo appropriato i problemi di IA dal punto di vista di un agente intelligente, di sfruttare il portafoglio di tecniche e i diversi approcci mostrati nel corso per la soluzione di nuovi problemi, di spiegare la logica alla base del processo decisionale autonomo di un agente.

Capacità critiche e di giudizio:

Gli studenti saranno in grado di valutare i vantaggi e gli svantaggi nell'applicazione e nell'adattamento di tecniche conosciute per la progettazione di sistemi software intelligenti, di esaminare l'ambiente in cui si opera, di definire una funzione di utilità per misurare le prestazioni degli agenti, di ideare nuove soluzioni su misura per le nuove sfide dell'IA.

Abilità comunicative:

Gli studenti acquisiranno la capacità di esporre le proprie conoscenze in modo chiaro e organizzato per proporre soluzioni basate sull'IA, formalizzare i problemi contestati e discutere efficacemente le proprie idee con esperti del settore.

Capacità di apprendimento:

Le competenze acquisite consentiranno agli studenti di approfondire e ampliare autonomamente la propria gamma di conoscenze e capacità, dotandosi degli strumenti interpretativi necessari per leggere autonomamente i lavori pubblicati nella letteratura scientifica sull'IA.

10595610 | AI LAB: COMPUTER VISION AND NLP6INF/01ENG

Obiettivi formativi

Obiettivi generali: L'obiettivo del corso è quello di fornire agli studenti gli strumenti pratici necessari per poter usufruire delle moderne applicazioni di Machine e Deep Learning. In particolare, il corso sarà focalizzato sullo studio e l'implementazione di algoritmi di Computer Vision e Natural Language Processing.
Obiettivi specifici: Il corso tratta l'elaborazione di immagini, partendo dai metodi classici e arrivando alle moderne tecniche che sfruttano il Machine/Deep Learning, nonchè l'utilizzo del Natural Language Processing congiuntamente alla Computer Vision per effettuare specifici tasks.
Conoscenza e comprensione: Lo studente acquisirà conoscenza riguardo i moderni strumenti per analizzare immagini e testo in modo del tutto automatico sfruttando il Machine e il Deep Learning. Inoltre, lo studente acquisirà conoscenza sui moderni framework utilizzati per adempiere a tali tasks.
Applicazione di conoscenza e comprensione: Lo studente sarà in grado di sfruttare le conoscenze acquisite durante il corso, nonchè i framework utilizzati, per definire i propri modelli di Machine e Deep Learning per la risoluzione di diversi tasks riguardanti l'analisi di immagini e testo.
Autonomia di giudizio: Lo studente sarà in grado di comprendere le operazioni necessarie per adempiere a un task inerente la Computer Vision o il Natural Language Processing e, conseguentemente, sarà in grado di utilizzare o definire un modello per la risoluzione dello stesso.
Abilità comunicative: Lo studente sarà in grado di descrivere in maniera dettagliata i modelli di Machine/Deep Learning utilizzati o definiti.
Capacità di apprendimento: Il corso pone le basi pratiche per l'utilizzo e la definizione di modelli di Machine e Deep Learning utilizzabili in qualsiasi corso inerente a questi ultimi.

10595617 | DATA MANAGEMENT AND ANALYSIS12INF/01ENG

Obiettivi formativi

Obiettivi generali:
Essere in grado di progettare/valutare le proprietà, la struttura di memorizzazione e i protocolli di un sistema di gestione di basi di dati.

Obiettivi specifici:
Conoscenza delle proprietà di uno schema relazionale e di una decomposizione. Capacità di utilizzare le espressioni di algebra relazionale per la ricerca di informazioni in una base di dati relazionale. Capacità di valutare i costi delle operazioni di accesso ai dati.

Avere conoscenza e comprensione:
Fondamenti teorici della progettazione e della interrogazione di una base di dati relazionale (algebra relazionale). Principali strutture di organizzazione dei dati su memoria secondaria.

Applicare conoscenza e comprensione:
Progettare schemi relazionali con “buone proprietà”. Interrogare una base di dati mediante algebra relazionale. Valutare i costi delle operazioni fondamentali su file con diversi tipi di organizzazione fisica.

Capacità critiche e di giudizio:
Essere in grado di valutare le proprietà di uno schema relazionale e di una sua decomposizione. Essere in grado di scegliere la struttura dati più appropriata per memorizzare le informazioni di uno schema.

Capacità comunicative:
Essere in grado di comunicare/condividere caratteristiche qualitative/quantitative relative alla struttura relazionale di una base di dati.

UNIT II6INF/01ENG

Obiettivi formativi

Obiettivi generali:

Introdurre lo studente alla disciplina dell’apprendimento automatico e alla progettazione e implementazione di sistemi di predizione con apprendimento supervisionato e senza supervisione.

Obiettivi specifici:

Il corso è concepito per introdurre alla disciplina dell’apprendimento automatico (machine learning, ML), una classe di metodi che apprendono pattern dai dati ed effettuano delle predizioni su nuovi dati. Solitamente è utile usare questo tipo di approccio quando non si riesce a programmare il calcolatore con un insieme di regole o un algoritmo ben definito.

Questo unità è complementare alla Unit I del medesimo corso. Il corso è introduttivo e generale sull’apprendimento automatico e non è un corso interamente su Deep Learning, anche se verranno impartite alcune nozioni fondamentali (sia teoriche che computazionali) che stanno alla base del Deep Learning. Il corso è propedeutico per corsi avanzati su Deep Learning.

Gli obiettivi specifici sono:

1) Introduzione all’apprendimento automatico, quando è necessario usarlo, paradigmi e applicazioni.

2) Apprendimento con supervisione. Modelli parametrici: linear regression, logistic regression, regularization; multilayer perceptron, overparameterized models; the backpropagation algorithm; gradient descent; computational graph for automatic differentiation; loss function for classification. Support Vector Machines: Optimal hyperplane, margin, kernels. Modelli non parametrici: the nearest neighbour (NN) Classifier, Decision Trees/Random Forest.

3) Apprendimento senza supervisione. Dimensionality Reduction: Principal Components Analysis (PCA), t-SNE; Clustering, Kmeans, Expectation-Maximization (EM); Gaussian Mixture Model (GMM)

4) Progettare ed implementare sistemi di apprendimento automatico: Visualizzazione dei dati e analisi, cross-validation, impostare iper-parametri.

Conoscenza e comprensione:

Le conoscenze e competenze apprese sono divise su due assi: fornire principi teorici riguardo ai metodi di base per apprendimento con e senza supervisione. Saper applicare tali concetti nella pratica a dati sintetici o dataset reali ma di piccola scala al fine di applicare nella pratica tali nozioni.

Applicazione di conoscenza e comprensione:

Verranno usati strumenti come NumPy (con un enfasi a scrivere codice vettorizzato), scikit learn, PyTorch (automatic differentiation e piccole reti neurali) per implementare sistemi di base. Le applicazioni e i domini applicativi possono essere diversi, principalmente su dati sintetici o immagini.

Autonomia di giudizio:

Sviluppare spirito critico sull’applicazione e l’uso di un sistema di ML e saper valutare e misurare le prestazioni di una algoritmo su dei dati. Saper distinguere i vantaggi e gli svantaggi di diversi algoritmi e determinare il più idoneo in base al problema.

Abilità comunicative:

Mostrare padronanza degli argomenti, comunicando in maniera chiara e con rigore logico, e con la giusta terminologia i concetti appresi al corso sia per quanto riguarda la parte teorica che pratica. La comunicazione può avvenire anche con un report su attività di laboratorio svolta, motivando propriamente le decisioni prese.

Capacità di apprendimento:

Il corso pone le basi per comprendere articoli scientifici avanzati su apprendimento automatico in diversi ambiti applicativi (computer vision, NLP) e fornisce una buona base di concetti fondamentali per corsi avanzati su Deep Learning.

1055043 | STATISTICS6SECS-S/01ENG

Obiettivi formativi

Lo scopo principale del corso è quello di insegnare le più popolari metodologie di inferenza non parametrica, soprattutto da un punto di vista bayesiano.
Lo studente, alla fine del corso, sarà in grado di utilizzare processi di Dirichlet e loro ramificazioni nei più consueti contesti inferenziali di data science

Obiettivi generali:

Il corso si propone di fornire le basi della teoria delle successioni e serie di funzioni e della teoria delle funzioni di variabile complessa, con applicazioni alla trasformata di Laplace e cenni di applicazione alla trasformata di Fourier.

Obiettivi specifici:

Conoscenza e comprensione:
Conoscere i rudimenti della teoria dell’approssimazione, con particolare riguardo alle nozioni di convergenza puntuale e uniforme per successioni di funzioni di una o più variabili reali e di convergenza puntuale, assoluta, uniforme e totale per serie di funzioni, in particolare per serie di potenze e serie trigonometriche, scarto quadratico medio e convergenza in media quadratica, eguaglianza di Parseval per serie trigonometriche. Conoscere le basi della teoria delle funzioni di variabile complessa, con particolare riguardo alle nozioni di olomorfia, di punto singolare, di residuo, di trasformata di Laplace e formula di inversione.

Applicare conoscenza e comprensione:
Essere in grado di analizzare il comportamento di successioni di funzioni di una o più variabili reali (o di una variabile complessa) e di serie di funzioni di variabile reale o complessa dal punto di vista delle varie nozioni di convergenza. Saper ricostruire un segnale a partire dalla sua trasformata di Laplace. Essere in grado di risolvere problemi di Cauchy per equazioni differenziali lineari a coefficienti costanti mediante trasformata di Laplace e calcolare trasformate di Fourier di opportune classi di funzioni.

3º anno

InsegnamentoSemestreCFUSSDLingua
10595530 | FOUNDATIONS OF COMPUTER SCIENCE6INF/01ENG

Obiettivi formativi

Obiettivi generali:
Durante il corso saranno introdotti i più importanti risultati dell’Informatica teorica: a partire dai fondamentali risultati in teoria della calcolabilità degli anni trenta, passando per quelli in teoria degli automi degli anni cinquanta per arrivare al problema aperto P contenuto o uguale a NP, esplicitamente sollevato negli anni settanta.

Obiettivi specifici:
Gli studenti capiranno che ci sono diversi modelli di computazione e cosa ne determina il potere computazionale.
Gli studenti apprenderanno concetti astratti come classi di linguaggi, macchine universali, riducibilità e sapranno che alcuni problemi non possono essere risolti con un calcolatore e che altri sono computazionalmente difficili da risolvere o addirittura così difficili da poter essere considerati non risolvibili. Faremo vedere come alcuni di questi risultati sono utilizzati oggi.

Conoscenza e comprensione:
Al termine del corso gli studenti conosceranno i metodi e risultati di base della della teoria degli automi, della calcolabilità e della complessità e sapranno applicarli per individuare la complessità di problemi in diversi campi. In particolare sapranno:
dimostrare l’equivalenza tra le diverse caratterizzazioni dei linguaggi regolari
dimostrare l’equivalenza tra le diverse caratterizzazioni dei linguaggi context-free
spiegare il concetto di non determinismo
giustificare l'esistenza di problemi privi di soluzioni algoritmiche o intrattabili.

Applicazione di conoscenza e comprensione:
Gli studenti impareranno:
come costruire automi finiti (deterministici e non) da una specifica (formale o informale)
come costruire automi a pila (deterministici e non) da una specifica (formale o informale)
a usare la riducibilità tra problemi per dimostrarne la decidibilità o l'indecidibilità
a usare la riducibilità polinomiale per provare la NP-hardness di un problema

Autonomia di giudizio:
Capire il giusto livello di astrazione utile per risolvere un problema, scegliere il modello computazionale più conveniente in un determinato contesto alicativo

Abilità comunicative:
descrivere un linguaggio formale, a parole o attraverso uno degli strumenti offerti di descrizione finita, descrivere problemi indecidibili, intrattabili o trattabili, spiegare il significato e la rilevanza dele classi P ed NP nonché del problema “P=NP?"

Capacità di apprendimento:
Lo studente sarà in grado di imparare altri modelli computazionali, sia completamente diversi da quelli studiati durante il corso, sia variazioni di questi. Egli sarà capace di capire nuove prove di NP-completezza o più in generale prove di completezza per una qualunque classe di complessità

Elective course12ENG

Obiettivi formativi

Insegnamenti a scelta come previsto da percorso formativo

AAF2604 | INTERNSHIP15ENG

Obiettivi formativi

Il tirocinio formativo è svolto sotto la guida di un responsabile e può essere esterno (svolto presso aziende o enti esterni) o interno (svolto nell'ambito del corso di laurea). In entrambi i casi il tirocinio ha una durata di circa tre mesi e prevede che allo studente sia proposto un problema del mondo reale, da risolvere attraverso l'elaborazione di un progetto sviluppato con un approccio professionale.

AAF2608 | FINAL EXAM3ENG

Obiettivi formativi

La formazione si completa con un tirocinio, da svolgere o esternamente presso aziende del settore informatico, tipicamente seguendo attività di analisi, progettazione e sviluppo software, analisi di dati, intelligenza artificiale, sistemi e reti, o internamente, approfondendo tematiche avanzate. In entrambi i casi il tirocinio ha una durata di circa tre mesi e prevede che allo studente sia proposto un problema del mondo reale, da risolvere attraverso l'elaborazione di un progetto sviluppato con un approccio professionale.

Applied Computer Science
Law and Economics

Gruppi opzionali

Lo studente deve acquisire 18 CFU fra i seguenti esami
InsegnamentoAnnoSemestreCFUSSDLingua
10595532 | CYBERSECURITY6INF/01ENG

Obiettivi formativi

Obiettivi generali:
Il corso di Sicurezza ha l’obiettivo di formare figure professionali capaci di affrontare con successo le sfide costituite dai problemi di sicurezza della società dell’informazione.

Obiettivi specifici:
Il corso prevede lo studio di vari modelli di controllo degli accessi, dell’analisi delle principali difficoltà e risoluzioni di problemi di crittografia e dei principali protocolli di sicurezza utilizzati in rete

Conoscenza e comprensione:
Al superamento dell’esame, lo studente avrà conoscenza e capacità di comprensione delle basi della sicurezza informatica e delle principali tecnologie per l'analisi e la soluzione di problemi di sicurezza.

Applicare conoscenza e comprensione:
Il corso mette in grado lo studente di applicare la propria conoscenza e capacità di comprensione per risolvere problemi di sicurezza informatica, con sufficiente autonomia per affrontare problemi complessi; e per la consultazione efficace di documentazione avanzata di tipo scientifico e tecnologico.

Autonomia di giudizio:
Il corso mira ad acquisire capacità d’interpretazione autonoma per proporre soluzioni a problemi di sicurezza congruenti con le tecnologie disponibili, e di aggiornamento continuo dell'evoluzione tecnologica, per formulare giudizi critici autonomi contribuendo all'avanzamento della sicurezza del sistema.

Abilità comunicative:
Lo studente acquisisce la capacità di presentare e di argomentare le proprie idee in merito ai problemi di sicurezza affrontati ed alle soluzioni proposte, sia con colleghi che con utenti

Capacità di apprendimento successivo:
Il corso prevede lo sviluppo di capacità di approfondimento nell’ambito della sicurezza informatica sia degli aspetti metodologici sia di quelli tecnologici, per adeguarsi al progredire delle tecniche e delle soluzioni ai problemi di sicurezza più comuni, e per proseguire anche in autonomia alla soluzione di nuovi problemi di sicurezza.

10595531 | DEEP LEARNING6INF/01ENG

Obiettivi formativi

Obiettivi generali
Acquisire familiarità con tecniche avanzate di machine learning supervisionato e non supervisionato; acquisire competenze di modellazione di problemi complessi attraverso tecniche di deep learning, e saperle applicare a contesti applicativi diversi.

Obiettivi specifici
Gli argomenti includono: reti neurali profonde, il loro addestramento e l'interpretazione dei risultati; reti convoluzionali e architetture prominenti; teoria del deep learning con particolare riferimento a questioni di convergenza; utilizzo di framework esistenti per l'implementazione di tecniche avanzate di machine learning; autoencoders; attacchi avversari.

Conoscenza e comprensione:
Conoscenza sul funzionamento delle reti neurali e loro interpretazione matematica come approssimatori universali. Comprensione dei limiti e delle potenzialità di modelli avanzati di machine learning.

Applicazione di conoscenza e comprensione
Progettazione, implementazione, messa in esercizio e analisi di architetture di deep learning per risolvere problemi complessi in disparati ambiti applicativi.

Autonomia di giudizio
Essere in grado di valutare le prestazioni di diverse architetture, e di valutare la capacità di generalizzazione delle stesse.

Abilità comunicative
Essere in grado di comunicare con chiarezza la formulazione di un problema di apprendimento avanzato e la sua implementazione, la sua applicabilità in contesti realistici, nonchè di motivare le scelte architetturali e di regolarizzazione.

Capacità di apprendimento successivo:
Essere in grado di apprendere tecniche alternative e più complesse quali i modelli generativi basati su traporto ottimo, le trasformate di scattering e lo studio del probilo energetico delle reti neurali. Essere in grado di implementare tecniche esistenti in maniera efficiente, robusta e affidabile.

10620671 | MULTICORE PROGRAMMING6INF/01ENG

Obiettivi formativi

Obiettivi generali:
Il corso è finalizzato all'acquisizione della conoscenza di tecniche algoritmiche e di programmazione adatte alle moderne piattaforme di calcolo multicore ed embedded.

Obiettivi specifici:

Conoscenza e comprensione:
Al termine del corso gli studenti avranno una profonda comprensione dei principali problemi di programmazione posti dai sistemi embedded e multi-core, nonché delle tecniche di programmazione utili per scrivere codice efficiente e scalabile. Avranno una comprensione della programmazione a basso livello e della progettazione HW.

Capacità di applicare conoscenza e comprensione:
gli studenti saranno in grado di progettare, programmare e realizzare sistemi embedded ed avranno una comprensione dei sistemi operativi adottati in tali tipi di sistemi.

Capacità critiche e di giudizio:
gli studenti saranno in grado di affrontare le sfide che si presentano nella progettazione di sistemi embedded e multicore e nell'implementazione di programmi efficienti e scalabili per tali sistemi, anche tenendo conto delle caratteristiche architetturali delle diverse piattaforme di calcolo.

Capacità di comunicare quanto si è appreso:
gli studenti saranno in grado di comunicare in modo efficace, riassumendo le idee principali nella progettazione di software embedded e multicore in modo chiaro e presentando informazioni tecniche accurate.

Capacità di studio autonomo:
obiettivo del corso è di introdurre i principi di base nella progettazione di software embedded e multicore. Gli studenti saranno quindi in grado di estendere la loro conoscenza in modo indipendente, adattandola all’evoluzione delle tecnologie e delle piattaforme di calcolo.

10620672 | PROGRAMMING LANGUAGES6INF/01ENG

Obiettivi formativi

Obiettivi generali:
Il corso illustra i fondamenti dei linguaggi di programmazione. Particolare attenzione viene dedicata alla semantica statica e dinamica dei linguaggi (teoria dei tipi, semantica operazionale ed assiomatica) ed agli strumenti formali per la specifica e la verifica del software.

Obiettivi specifici:
Approfondimento sulle algebre induttive come fondamento di sintassi astratta, strutture dati e semplici logiche (equazionali) di programmi. Cenni sulla co-induzione come fondamento di analisi di processi concorrenti e strutture lazy. Confronto fra linguaggi lazy e eager, statici e dinamici, nel contesto di diversi paradigmi di programmazione: imperativo, funzionale, ad oggetti. Teoria dei tipi, con particolare attenzione al polimorfismo parametrico (alla ML) e di sottoclasse (alla Java).

Conoscenze e comprensione:
Alla fine del corso lo studente avrà acquisito conoscenze fondazionali relative ai linguaggi di programmazione e ai principali paradigmi di programmazione, e sarà in grado di inquadrare in una mappa concettuale coerente alcuni fra le principali aree di studio dell’informatica teorica, comprendendone le interconnessioni.

Applicazione di conoscenza e comprensione:
Alla fine del corso lo studente sarà in grado di orientarsi fra i diversi paradigmi della programmazione, con particolare attenzione alla programmazione funzionale. Avrà acquisito una conoscenza di base del linguaggio funzionale SML e della sua teoria dei tipi, nonchè dell’uso dei metodi formali.

Capacità di giudizio:
Gli studenti acquisiranno strumenti culturali per sviluppare software di qualità e per comprendere ed inquadrare le tendenze emergenti dei linguaggi moderni.

Capacità di comunicazione:
Gli studenti impareranno ad usare il linguaggio della matematica e della logica per descrivere, sviluppare ed analizzare il software, e ad integrare l’approccio formale con un’esposizione intuitiva delle idee.

Capacità di apprendimento:
L’uso di strumenti matematici nella teoria e nella pratica della programmazione sviluppa capacità logiche e consapevolezza della complessità della materia di studio.

10595534 | WEB AND SOFTWARE ARCHITECTURE6INF/01ENG

Obiettivi formativi

Obiettivi generali:
Lo scopo del corso è lo studio del linguaggio java lato server, per la realizzazione di applicazioni web. Il corso fornisce inoltre un’analisi critica di diverse soluzioni implementative di molte funzionalità applicative comuni nello sviluppo di applicazioni web.

Obiettivi specifici:
Programmazione lato server mediante Java Servlet e pagine JSP.

Conoscenza e comprensione:
Il corso permetterà la comprensione del supporto fornito dal linguaggio Java alla realizzazione di applicazioni web. In particolare lo studente studierà le motivazioni alla base di tutte le scelte implementative, in particolare facendo riferimento alle architetture client-server e ai protocolli di rete in uso.

Applicare conoscenza e comprensione:
Attraverso il corso lo studente imparerà a riconoscere tra le possibili soluzioni applicative ad un problema, quale offra i maggiori vantaggi in termini di prestazioni, sicurezza, portabilità e efficienza.

Capacità critiche e di giudizio:
Il corso metterà lo studente in condizione di saper scegliere, dato un problema, la migliore metodologia risolutiva, attraverso la profonda comprensione dei requisiti e dei vincoli imposti dall'architettura.

Capacità comunicative:
Lo studente sarà in grado di motivare le proprie scelte nella proposta di uno specifico approccio realizzativo di un’applicazione Web, e fornire una analisi comparativa dell’approccio scelto con altri approcci possibili.

Capacità di apprendimento:
Lo studente svilupperà capacità di studio autonome e di comprensione e valutazione critica di nuove metodologie, tecnologie e modelli di sviluppo di applicazioni Web.

10595535 | HUMAN COMPUTER INTERACTION6INF/01ENG

Obiettivi formativi

Obiettivi generali:

Al termine del corso gli studenti conoscono le teorie, i modelli e le regole che guidano il progetto e lo sviluppo e la validazione di interfacce e sistemi interattivi usabili.
Gli studenti che superano l’esame sono in grado di progettare sistemi interattivi seguendo i criteri dell’interazione uomo-computer, analizzando il ruolo dell’utente, gli scenari e i compiti principali, e tenendo in considerazione i vincoli implementativi mediante cicli di progetto e sviluppo molto brevi.

Obiettivi specifici:

Conoscenza e comprensione:
Al termine del corso gli studenti conoscono le teorie, i modelli e le regole che guidano il progetto di interfacce e sistemi interattivi usabili.​ Conoscono inoltre i principi di progettazione agile centrata sull'utente.​

Applicare conoscenza e comprensione:
​Gli studenti applicano le conoscenze acquisite nella progettazione di un'interfaccia come lavoro di gruppo per l'esame.

Capacità critiche e di giudizio:
​Gli studenti, anche attraverso esercitazioni pratiche, acquisiscono competenze nella valutazione e validazione di interfacce uomo computer e ​sviluppano capacità di giudizio sull'usabilità di un'interfaccia e quindi sulle ricadute dell'uso dell'interfaccia in termini di efficacia, efficienza e soddisfazione.

Capacità comunicative:
​Gli studenti sostengono due presentazioni del loro lavoro di gruppo in occasione delle due revisioni previste con il docente. La prima revisione è svolta in aula e la presentazione è pertanto rivolta a tutti i colleghi al fine di esercitare le capacità comunicative.​

Capacità di apprendimento:
​La capacità di apprendimento​ è stimolata attraverso 1) attività di progettazione guidata e autonoma con supervisione; 2) l'esposizione a problemi realistici di progettazione stimolando la ricerca autonoma di soluzioni non standard; 3) la presentazione di casi reali e stimolandone la discussione critica.

10595533 | OPTIMIZATION6INF/01ENG

Obiettivi formativi

Obiettivi generali:
Il corso introduce lo studente alla modellazione matematica di problemi di ottimizzazione, allo studio della programmazione lineare e intera e alle loro applicazioni in contesti reali.

Obiettivi specifici:
Apprendere:
1. Le principali tecniche di modellazione di problemi usando strumenti logico/matematici;
2. Le proprietà teoriche e sulle applicazioni pratiche dei principali problemi di ottimizzazione (in particolare su reti);
3. sulla programmazione lineare e sue applicazioni;
4. sull’uso di software di modellazione ed ottimizzazione.

Conoscenza e comprensione:
Sviluppare
1. Capacità di sintesi, di ragionamento logico e di problem solving, mediante tecniche quantitative;
2. capacità di formulare e risolvere (anche in maniera approssimata) problemi computazionalmente difficili;
3. capacità di usare bibliografia e software in inglese;
4. capacità di identificare problemi di programmazione matematica e ottimizzazione;
5. capacità di realizzare un modello di un problema matematico, determinando se è lineare, intero, non lineare, di trovare soluzioni per il modello usando gli algoritmi appropriati, di interpretare la soluzione;

Applicazione di conoscenza e comprensione:
1. Applicazioni pratiche dei principali problemi di ottimizzazione (in particolare su reti);
2. uso di software di modellazione ed ottimizzazione.

Autonomia di giudizio:
Viene rafforzata la autonomia di giudizio dello studente attraverso l'approfondimento della capacità di sintesi, di ragionamento logico-matematico e di problem solving, mediante tecniche quantitative;

Abilità comunicative:
Il corso sviluppa le abilità comunicative degli studenti attraverso lavoro in equipe degli studenti finalizzato a simulare la risoluzione di problemi di ottimizzazione che si possono presentare nel contesto reale di un azienda di logistica.

Capacità di apprendimento
Le capacità acquisite nel corso sono di utilità in insegnamenti di livello superiore su temi avanzati nella teoria della complessita, di algoritmi di rete e di teoria dei grafi.

10620673 | FUNCTIONAL PROGRAMMING6INF/01ENG

Obiettivi formativi

Obiettivi generali:
Apprendimento del paradigma di programmazione funzionale e di aspetti avanzati di programmazione imperativa.
Studio comparato di diversi paradigmi di programmazione (imperativo, funzionale e a oggetti) per sviluppare un senso critico nell'apprendimento e valutazione dei linguaggi di programmazione.

Obiettivi specifici:

Conoscenza e Comprensione:
Aspetti avanzati di programmazione C (in particolare uso di puntatori espliciti e (de)allocazione dinamica di memoria, valutazione della complessità concreta dei programmi). Aspetti base ed avanzati di programmazione funzionale in Haskell (in particolare tipi polimorfi, funzionali di ordine superiore, laziness).

Applicare Conoscenza e Comprensione:
Applicare la metodologie specifiche di diversi paradigmi di programmazione alla soluzione dei problemi.

Capacità Critiche e di Giudizio:
Lo studio comparato dei paradigmi di programmazione permette di valutare ad esempio quale sia il linguaggio più adatto per risolvere un certo problema o sviluppare un progetto software.
Le tecniche di ragionamento sui programmi possono guidare sia il testing che lo sviluppo dei programmi.
Inoltre, lo studente dovrebbe acquisire strumenti necessari per valutare criticamente altri linguaggi di programmazione.

Capacità Comunicative
Lo studente è stimolato, soprattutto nella presentazione da fare a fine corso, a esporre concisamente ma in modo preciso le idee necessarie allo sviluppo di una brillante soluzione a un problema computazionale ed anche l'analisi di un programma.

Capacità di Apprendimento:
Lo studio comparato di diversi paradigmi di programmazione stimola la capacità di apprendimento di altri linguaggi di programmazione, dando allo studente gli strumenti per distinguere gli aspetti caratterizzanti di un linguaggio di programmazione (logica del core language, come ad esempio passaggio di parametri, sistema dei tipi, semantica dei comandi) da quelli più strettamente tecnici (come imparare a usare librerie e strumenti di sviluppo, come IDE e debugger).

10620674 | INTELLIGENT SYSTEM DESIGN METHODS6INF/01ENG

Obiettivi formativi

Obiettivi generali:
Il corso si propone di fornire agli studenti gli strumenti di base per la modellazione, analisi e progettazione di sistemi intelligenti.
Obiettivi specifici:
Il corso si propone di mettere gli studenti in grado di comprendere ed usare un'ampia gamma di tecniche di modellazione, progettazione, verifica e validazione per sistemi intelligenti.
Conoscenza e comprensione:
Introduzione ad ampio spettro dei principi fondamentali della modellazione, analisi e progettazione dei sistemi intelligenti modellati come sistemi dinamici sia tempo continuo che tempo discreto.
Applicazione di conoscenza e comprensione:
Saper applicare il portafoglio di tecniche e gli approcci illustrati per la modellazione, progettazione, verifica e validazione di sistemi intelligenti.
Autonomia di giudizio:
Gli studenti saranno in grado di prendere autonomamente decisioni razionali sulle tecniche da impiegare nella modellazione, progettazione, verifica e validazione di sistemi intelligenti.
Abilità comunicative:
Gli studenti saranno in grado di interagire in modo proficuo con esperti di dominio su un'ampia gamma di argomenti relativi alla modellazione, progettazione, verifica e validazione di sistemi intelligenti.
Capacità di apprendimento:
Gli studenti saranno in grado di ampliare le loro conoscenze in modo autonomo consultando, secondo necessità, la letteratura scientifica di rilievo.

Lo studente deve acquisire 6 CFU fra i seguenti esami
InsegnamentoAnnoSemestreCFUSSDLingua
10595536 | BUSINESS AND COMPUTER SCIENCE6SECS-P/07ENG

Obiettivi formativi

Obiettivi generali

Il corso di Business and Computer Science analizza differenti tipologie di sistemi informativi e come esse possono contribuire al successo degli obiettivi di un’azienda; permette di comprendere gli approcci e i modelli da usare per valutare la qualità dei processi, del software e dei servizi ICT; e fornisce le conoscenze di base per pianificare, gestire e controllare i progetti IT.

Obiettivi specifici
• Conoscenza e comprensione
– Modello funzionale e struttura informativa dei processi aziendali
– esigenze di integrazione e requisiti di controllo dei dati dei sistemi informatici aziendali
– sistemi e tecnologie per sviluppare e mantenere un e-business di successo
– principali settori di applicazione dei sistemi di informazione in vari settori di mercato
– organizzazione IT e modelli di valutazione della qualità IT
– conoscenze di base di contesto, tecniche/metodologie e soft skill per la gestione dei progetti ICT
– systems and technologies to develop&maintain a successful e-business
– main application areas of info systems in various industries
– ICT organization and mainstream techniques (e.g. quality management)
– basic definitions (context), techniques/methodologies and soft skills for project management in ICT

• Conoscenza e comprensione applicate:
– Analizzare le diverse vategorie di requisiti estratti da differenti categorie di utenti (stakeholder) di sistemi informativi
– Selezionare l’appropriato modello per valutare la qualità dei processi ICT, del prodotto software e dei servizi ICT
– Sviluppare uno studio di fattibilità selezionando l’appropriata architettura applicativa e tecnologica
– Preparare, per un semplice progetto ICT, un piano di sviluppo nel rispetto dei vincoli di tempo, costi, qualità e definendo l’appropriata organizzazione
– Controllare un progetto ICT in corso, applicando le tecniche di project management
– Comprendere a valutare le lezioni apprese nei precedenti progetti

• Abilità critiche e di giudizio:
La combinazione di lezioni teoriche frontali ed esercitazioni pratiche mirate alla discussione e alla soluzione di specifici problemi consente agli studenti di acquisire la capacità di valutare potenzialità e limiti degli approcci e dei modelli ai fini dello sviluppo delle imprese e del raggiungimento dei loro obiettivi strategici.

• Abilità comunicative:
Al termine del corso, gli studenti sono in grado di illustrare e spiegare i principali approcci alla gestione dell’impresa, dei suoi processi e dei servizi ICT a una varietà di interlocutori eterogenei per formazione e ruolo professionale.

• Capacità di apprendimento:
Lo studente acquisisce la capacità di condurre in autonomia studi individuali su argomenti specifici inerenti i sistemi informativi, la gestione dei processi e dei servizi. Durante il corso, lo studente è stimolato ad approfondire argomenti di particolare interesse mediante la consultazione di materiale bibliografico supplementare, quali articoli accademici, libri specialistici e siti internet. L’acquisizione di tali capacità viene verificata e valutata tramite l'analisi e la risoluzione di problemi nuovi sulla base degli argomenti trattati e del materiale di riferimento distribuito durante il corso.

10595537 | LAW AND COMPUTER SCIENCE6IUS/20ENG

Obiettivi formativi

Obiettivi
L’obiettivo del corso è quello di approfondire i principali temi di regolazione giuridica delle attività informatiche, nelle imprese e nella pubblica amministrazione, con riferimento ai temi della intelligenza artificiale, della regolamentazione europea sulla elaborazione e del trattamento dei dati personali e sul commercio elettronico e proprietà intellettuale in materia informatica. Si presenteranno anche gli strumenti giuridici, protocolli e standard della cooperazione europea nell'uso dell'intelligenza artificiale. Il corso è strutturato in moduli di approfondimento anche con esame di casi pratici.

Conoscenza e comprensione
Al termine del corso lo studente è in grado di identificare e di sviluppare le principali conoscenze giuridiche in materia di elaborazione dati e intelligenza artificiale e quindi di operare efficacemente nell'ambito di amministrazioni pubbliche. Inoltre è in grado di partecipare efficacemente a gruppi di lavoro sull'uso dell'intelligenza artificiale avendo chiare le indispensabili nozioni e responsabilità giuridiche. Il corso consente di raccordare competenze tecnologiche informatiche e competenze organizzative economiche e giuridiche riguardanti l’uso dell’informatica e AI o di strumenti informatici e AI in ambito aziendale e pubblico.

Capacità di applicare conoscenza e comprensione
Per la realizzazione degli obiettivi formativi le attività didattiche si articolano in moduli di approfondimento tematico, per la definizione e l’intervento in specifici contesti e per comprendere le esigenze degli operatori.