Corso di laurea

Informatica

Università degli Studi di MILANO-BICOCCA · 67 materie · 0 file condivisi

Ecco tutti i dettagli sul corso di laurea selezionato. Sul UniDocs troverai gli appunti condivisi dagli altri studenti del tuo corso di laurea, ordinati per materia. Ricordati che per poter visualizzare il materiale devi essere registrato al sito e possedere un numero di crediti sufficiente.

Sfoglia il materiale didattico

Con UniDocs hai l'opportunità di studiare insieme a tutto il tuo corso di laurea. Guadagna subito dei crediti, carica il materiale del tuo ultimo esame!
Più condividi, più tempo avrai per studiare con tutta la community!

Materie del corso

Bioinformatics 1° anno · 6 CFU · INFO-01/A · 0 file

Conoscenze e comprensionell corso si propone di introdurre lo studente alla Bioinformatica. Questa disciplina nasce dalla necessità di sviluppare adeguati strumenti computazionali per la soluzione di molteplici…

Scheda dell'insegnamento

Obiettivi formativi

Conoscenze e comprensionell corso si propone di introdurre lo studente alla Bioinformatica. Questa disciplina nasce dalla necessità di sviluppare adeguati strumenti computazionali per la soluzione di molteplici problemi che sono ispirati dalla biologia. Tali strumenti trovano comunque applicazione anche in altri ambiti caratterizzati da elementi comuni alla Bioinformatica, quali il trattamento di dati massivi principalmente su sequenze. L'obiettivo principale del corso è quello di fornire allo studente la padronanza delle tecniche algoritmiche e delle strutture dati per poter affrontare lo studio e la soluzione di problemi computazionali di analisi e confronto di genomi multipli anche considerando gli aspetti di genomica comparativa mediante la costruzione di alberi filogenetici. In particolare, il corso si occupa di genomica informatica e aspetti di pangenomica computazionale. Capacità di applicare conoscenza e comprensioneIn particolare verrano forniti allo studente gli strumenti per: - progettare la soluzione algoritmica di problemi di analisi di genomi multipli o di confronto e ricostruzione di alberi filogenetici,- progettare strutture dati adeguate a trattare dati massivi di sequenze,- modellare la soluzione di problemi su sequenze genomiche mediante la formulazione di problemi combinatori,- utilizzare le banche dati genomiche e il software disponibile per estrarre le informazioni di interesse dal genoma umano, quali le variazioni che caratterizzano una popolazione di individui. Autonomia di giudizioLo studente sarà in grado di comprendere la rilevanza di un metodo computazionale dal punto di vista delle richieste di risorse spazio e tempo.Dovrà essere in grado di comprendere se una data struttura dati è adeguata per la soluzione di problemi su sequenze genomiche, in funzione della dimensione del dato Capacità comunicativaLo studente acquisirà il linguaggio e formalismo tipo della disciplina informatica Capacità di apprendereLo studente deve essere in grado di leggere e capire autonomamente un articolo di bioinformatica che tratta le tematiche affrontate nel corso

Programma

1. L'importanza del confronto e dell'analisi di sequenze biologiche. Tecniche di allineamento di sequenze (allineamento globale e locale e multiplo). Algoritmi per l’allineamento di sequenze nella predizione della struttura di un gene (splicing alternativo). 2. Strutture dati e algoritmi su grafi in bioinformatica: grafi di de Bruijn, grafi di overlap e indicizzazione. Applicazioni al problema del sequenziamento di dati NGS e assemblaggio dati. 3. La ricerca di motivi in sequenze biologiche. Il problema generale del matching esatto. Gli alberi suffisso, i suffix array e la trasformata di Burrows-Wheeler e la loro applicazione nella ricerca di pattern nelle sequenze biologiche. 4. Lo studio delle variazioni (mutazioni) geniche nella popolazione. Alberi evoluzionari. Ricostruzione della storia evolutiva di specie con alberi evoluzionari: metodi principali. Assemblaggio di aplotipi: metodi combinatori. 5. Metodi combinatori in Cancer genomics. 6. Internet e la post-genomica. Le banche dati e il software per l’analisi del genoma. La pangenomica computazionale.

Modalità d'esame

In itinere vengono assegnate delle prove intermedie da svolgere relativa alle diverse parti del corso. E' prevista poi una prova scritta finale (opzionale sulla base dell'esito delle prove in itinere). Il voto finale è determinato dalla valutazione della prova intermedia e della prova scritta finale (opzionale).

Testi di riferimento

(1) Slides e dispense (2) An Introduction to Bioinformatics Algorithms N.C Jones, P.A. Pevzner. (3) Introduction to Computational molecular biology - Carlos Setubal, Joao Meidanis. (4) Algorithms on Strings, Trees, and Sequences: Computer Science and Computational Biology -Dan Gusfield.

Codice insegnamento 2627-1-F1802Q114

Complex Systems: Models and Simulation 1° anno · 6 CFU · INFO-01/A · 0 file

Gli studenti acquisiranno conoscenze in merito a nuovi modelli, astrazioni e meccanismi utili per la modellazione di sistemi complessi e anche strumenti pratici per la progettazione e realizzazione di sistemi informatici…

Scheda dell'insegnamento

Obiettivi formativi

Gli studenti acquisiranno conoscenze in merito a nuovi modelli, astrazioni e meccanismi utili per la modellazione di sistemi complessi e anche strumenti pratici per la progettazione e realizzazione di sistemi informatici (prevalentemente ma non esclusivamente) volti alla simulazione di sistemi complessi secondo un approccio orientato agli agenti. Dovendo realizzare e documentare un progetto (individuale o di un gruppo di 2/3 persone) sul tema della simulazione di sistemi complessi, consultando la letteratura rilevante sul tema, gli obiettivi dell'insegnamento non si limitano a conoscenze e applicazioni di queste conoscenze (sopra introdotte), ma stimolano l'autonomia di giudizio e la capacità di apprendere (per quanto concerne lo studio della letteratura e anche degli strumenti di supporto alla realizzazione del progetto) e le abilità comunicative (per quanto concerne la scrittura della relazione e la sua discussione in forma orale, eventualmente supportata da una presentazione).

Programma

Introduzione al concetto di agente e sistemi multi-agente: dal singolo agente intelligente ad un sistema multi-agente; architetture di agente; modelli di interazione fra agenti; agenti ed ambiente Automi cellulari e simulazione di sistemi complessi: sistemi complessi e sistemi complicati; automi cellulari monodimensionali e bidimensionali e loro applicazioni a casi paradigmatici di sistemi complessi: simulazione di traffico veicolare e di dinamiche di popolazione in sistemi biologici Dagli automi cellulari ai sistemi multi-agente: modellazione e simulazione basata su agenti; modellazione e simulazione di pedoni e folle con agenti situati; social simulation; integrazione di modelli eterogenei; altri casi di studio Agenti che apprendono: cenni di apprendimento per rinforzo e applicazioni di esempio Validazione di simulatori di sistemi complessi; esempi di tecniche di analisi di comportamenti collettivi in sistemi complessi Cenni su agenti deliberativi Cenni su altre applicazioni di sistemi basati su agenti e multi-agente

Modalità d'esame

Viene richiesta la realizzazione di un approfondimento in relazione ai temi trattati durante il corso che comporta la realizzazione di un progetto (realizzazione e sperimentazione di un simulatore in forma prototipale, con riferimento alla letteratura rilevante sul tema), con una discussione orale estesa a tutti i temi trattati nel corso. Il tema dell'approfondimento e del progetto viene di norma concordato con il docente, anche durante lo svolgimento del corso; il docente fornisce una valutazione dell'adeguatezza e della difficoltà del lavoro ipotizzato, e propone delle indicazioni utili alla impostazione del lavoro.

Testi di riferimento

Libro di testo, per la prima parte del corso (punto 1 del programma dettagliato): Multi-Agent System: An Introduction to Distributed Artificial Intelligence. Jacques Ferber, Harlow: Addison Wesley Longman, 1999, ISBN 0-201-36048-9 Ulteriore materiali didattici: slide presentate a lezione e rese disponibili tramite piattaforma di eLearning, articoli scientifici suggeriti.

Codice insegnamento 2627-1-F1802Q152

Complex and Uncertain Systems 1° anno · 6 CFU · INFO-01/A · 0 file

Coerentemente con gli obiettivi formativi del Corso di Studio, l'insegnamento si propone di fornire allo studente le conoscenze per trattare in modo formale i modelli che descrivono sistemi complessi e sistemi incerti.…

Scheda dell'insegnamento

Obiettivi formativi

Coerentemente con gli obiettivi formativi del Corso di Studio, l'insegnamento si propone di fornire allo studente le conoscenze per trattare in modo formale i modelli che descrivono sistemi complessi e sistemi incerti. Lo studente sarà, inoltre, in grado di affrontare problemi concreti anche con tecniche tipiche della collective intelligence, del soft computing e dell’apprendimento automatico. Conoscenza e capacità di comprensioneQuesto insegnamento fornisce le conoscenze basilari e capacità di comprensione relativamente a: Cosa è un sistema complesso, cosa è l’incertezza e da quali diverse fonti deriva Automi Cellulari come modelli di collective intelligence per sistemi complessi : proprietà formali associate a raggiungibilità, reversibilità, stabilità, instabilità e caos. Algoritmi di decisione/indecidibilità di proprietà formali Tile sets, Tiling e Domino Problem, proprietà indecidibili in Automi Cellulari, cenni al self-assembly (DNA computing) Dinamica simbolica: subshifts e linguaggi, entropia di un subshift, Teorema di Perron Frobenius, schemi di codifica/decodifica di dati basati su subshift Applicazioni nei Sistemi Complessi: crittografia mediante Automi Cellulari, simulazione di fenomeni reali mediante Automi Cellulari, l'algoritmo PageRank di Google e data storage (subshifts), Reaction Systems come modello per simulare reazioni biochimiche Logiche Multivalore e Fuzzy Sets: logiche a tre valori e loro applicazioni (valore NULL in database); Logiche a valori di verità nell'intervallo [0,1]: t-norme, t-conorme, reticoli residuati; Fuzzy sets e variabili linguistiche; Sistemi a regole fuzzy Introduzione alle rappresentazione della conoscenza con teoria della possibilità e teoria dell’evidenza Rough Sets: approssimazione di concetti; apprendimento di regole, feature selection e applicazione al data mining; legame con logiche multivalore; applicazione ai sistemi dinamici Introduzione alla gestione dell’incertezza nell’apprendimento automatico: Soft Clustering; multi-label learning; Three-way strategy Conoscenza e capacità di comprensione applicate Capacità di affrontare il problema di modellare un fenomeno (locale ed uniforme nello spazio) tramite Automi Cellulari Capacita' di stabilire determinate proprieta' di un Automa Cellulare Capacita' di rappresentare un sistema di stringhe soggette a vincoli mediante un subshift e stabilire come codificare sequenze qualunque in sequenze di tale sistema e viceversa Capacità di rappresentare nel modo opportuno l'incertezza Capacità di gestire diversi tipi di incertezza nell'apprendimento automatico Autonomia di giudizio Capacità di individuare le classi di Automi Cellulari piu' idonee per modellare specifici Sistemi Complessi Capacità di individuare il metodo più oppportuno per rappresentare e gestire l'incertezza Abilità comunicative Capacità di esporre in maniera chiara e rigorosa i contenuti teorici, incluse le dimostrazioni, gli algoritmi di decisione di alcune proprieta' formali e le tecniche di riduzione per dimostrare l'indecidibilita' di altre proprieta'. Capacità di apprendere Capacità di ricercare e apprendere autonomamente nuovi modelli formali per Sistemi Complessi.Capacità di comprendere nuove proprieta' di modelli formali per Sistemi Complessi e relative questioni di decidibilita'/indecidibilita'.Capacità di affrontare nuove situazioni in cui ci sia da gestire incertezza

Programma

1 ) Introduzione - cosa è un sistema complesso, cosa è l’incertezza e da quali diverse fonti deriva - ripasso di logica proposizionale classica, insiemi parzialmente ordinati e algebra booleana 2) Automi Cellulari come modelli di collective intelligence per sistemi complessi : - proprietà formali associate a raggiungibilità, reversibilità, stabilità, instabilità e caos. Relative classificazioni. - algoritmi di decisione/indecidibilità di proprietà formali - esempi di Automi Cellulari significativi 3) Tiling: - Tile set, tiling, simulazione di una macchina di Turing e Domino Problem - proprietà indecidibili in Automi Cellulari - cenni al self-assembly (DNA computing) 4) Dinamica simbolica: - subshifts e linguaggi - subshifts di tipo finito e sofici con relative rappresentazioni - entropia di un subshift, Teorema di Perron Frobenius, schemi di codifica/decodifica di dati basati su subshift 5) Applicazioni (Sistemi Complessi): - crittografia (secret sharing schemes e generazione di numeri pseudo-casuali) mediante Automi Cellulari - simulazione di fenomeni reali mediante Automi Cellulari - l'algoritmo PageRank di Google e data storage (subshifts) - Reaction Systems come modello per simulare reazioni biochimiche 6) Logiche Multivalore e Fuzzy Sets- Logiche a tre valori e loro applicazioni (valore NULL in database)- Logiche a valori di verità nell'intervallo [0,1]: t-norme, t-conorme, reticoli residuati.- Fuzzy sets e variabili linguistiche- Sistemi a regole fuzzy 7)Introduzione alle rappresentazione della conoscenza con teoria della possibilità e teoria dell’evidenza 8) Rough Sets:- Approssimazione di concetti- Apprendimento di regole, feature selection e applicazione al data mining- Legame con logiche multivalore- Applicazione ai sistemi dinamici 9) Introduzione alla gestione dell’incertezza nell’apprendimento automatico- Soft Clustering- Multi-label learning- Three-way strategy

Modalità d'esame

Esame orale.L'esame consiste di due parti. parte 1. Esame orale su tutti gli argomenti riguardanti i Sistemi Complessi (punti 1, 2, 3, 4 e 5 del programma dettagliato). Le dimostrazioni dei teoremi saranno richieste solo una parte scelta dal candidato. parte 2. Per quanto riguarda la parte sull'incertezza, verranno assegnati esercizi da consegnare su vari argomenti del corso, tra cui un approfondimento su un argomento concordato con il docente, che sarà oggetto di una discussione orale. Ogni parte è valutata con un voto (voto massimo 30/30, eventualmente con lode). La valutazione finale tiene conto di entrambe le parti in egual misura (media dei voti delle due parti).

Testi di riferimento

D. Lind, B. Marcus. An introduction to Symbolic dynamics and coding. Cambridge University Press, 1995. J. Kari. Cellular Automata. Lecture Notes. http://users.utu.fi/jkari/ca/ P. Kurka. Topological and symbolic dynamics. Société Mathématique de France, 2004. Alberto Dennunzio. Lecture Notes on Cellular Automata. Witold Pedrycz: An Introduction to Computing with Fuzzy Sets - Analysis, Design, and Applications. Intelligent Systems Reference Library 190, Springer 2021, ISBN 978-3-030-52799-0https://doi.org/10.1007/978-3-030-52800-3 D. Ciucci, "Rough Sets and Non-Classical Logics”, DispenseA. Campagner, "Uncertainty in Machine Learning", Dispense

Codice insegnamento 2627-1-F1802Q135

Data Architecture 1° anno · 6 CFU · IINF-05/A · 0 file

Il corso, erogato in lingua Italiana, intende fornire conoscenze e competenze nell'ambito delle moderne architetture dati. Veranno presentanti sia gli aspetti teorici e di ricerca ancora aperti sia come tali tecnologie…

Scheda dell'insegnamento

Obiettivi formativi

Il corso, erogato in lingua Italiana, intende fornire conoscenze e competenze nell'ambito delle moderne architetture dati. Veranno presentanti sia gli aspetti teorici e di ricerca ancora aperti sia come tali tecnologie possono essere utilizzate per risolvere specifici contesti applicativi. Particolare attenzione sarà posta sullo studio e analisi di come le architetture e le soluzioni presentate consentano l'esecuzione di scritture, anche concorrenti in ambito distribuito e letture in ambiente distribuito e in presenza di possibili malfunzionamenti sulla rete. Saranno anche presentate le modalità di uso dei sistemi di ai generativa applicati alla gestione dei datiAl termine del corso lo studente sarà in grado di sceligere la più opportuna soluzione architetturale per la gestione di dati

Programma

User cases 1Richiami di architetture relazionali centralizzate: transazioni, ottimizzazione queryArchitetture dbms distribuiti: protocollo two phase commit, deadlock distriubuitoUse case 2Modelli non relazionaliArchitetture distribuite di sistemi non relazionaliSistemi poliglottiUse case 3Data management for machine learningData understadingData validationData preparation ( integration, quality, fusion)Feture engineeringMLOpsUse case 4Modelli di AI generativaFine tuningArchitetture RAG

Modalità d'esame

Prove scritta con domande a risposte aperte sui contenuti del corso, esercizi numerici eventualmente seguite da un orale a richiesta del docente In alternativa progetto relativo a uno degli use cases presentnato durante il corso. il progetto può essere esteso a tesi e può essere fatto anche a gruppi di studenti. l'argomento del progetto deve essere concordato con il doente

Testi di riferimento

slide pubblicate sulla piattaforma elearning Libro di testo adottato Text book Next Generation Databases: NoSQL, NewSQL, and Big Data by Guy Harrison Publisher: Apress Release Date: January 2016 ISBN 9781484213292

Codice insegnamento 2627-1-F1802Q100

Green Computing 1° anno · 6 CFU · INFO-01/A · 0 file

(DdD 1) Conoscenza e capacità di comprensioneAl termine del corso, lo studente sarà in grado di: Descrivere i principi fondamentali del green computing, comprese le motivazioni etiche, ambientali ed economiche alla…

Scheda dell'insegnamento

Scheda dell'a.a. 2025/2026: quella dell'anno in corso non è ancora pubblicata.

Obiettivi formativi

(DdD 1) Conoscenza e capacità di comprensioneAl termine del corso, lo studente sarà in grado di: Descrivere i principi fondamentali del green computing, comprese le motivazioni etiche, ambientali ed economiche alla base della sostenibilità in ambito informatico. Conoscere le principali tecniche di data science e intelligenza artificiale orientate all'efficienza energetica e alla sostenibilità. (DdD 2) Capacità di applicare conoscenza e comprensioneAl termine del corso, lo studente sarà in grado di: Condurre analisi del ciclo di vita (Life Cycle Assessment, LCA) delle risorse informatiche, identificando impatti ambientali e possibili ottimizzazioni. (DdD 3) Autonomia di giudizioDurante il corso, lo studente svilupperà la capacità di: Valutare criticamente soluzioni informatiche esistenti in termini di impatto ambientale e proporre strategie migliorative basate su dati e metriche. Redigere report o brevi saggi tecnici in cui esprime con rigore il proprio giudizio sul bilancio tra prestazioni e sostenibilità. (DdD 4) Abilità comunicativeDurante le attività del corso, lo studente sarà in grado di: Presentare progetti o analisi di sostenibilità in ambito ICT. (DdD 5) Capacità di apprendereAl termine del corso, lo studente avrà acquisito la capacità di:. Proseguire lo studio in modo autonomo approfondendo tematiche avanzate, anche interdisciplinari, relative all’impatto ambientale dell’informatica.

Programma

Modulo 1 - Panoramica sulla sostenibilità e sull’impatto dell’informatica Introduzione al Green Computing Definizione e importanza del green computing. Contesto storico ed evoluzione. Attori principali e fattori chiave del green computing. Impatto ambientale dell’informatica L’effetto serra Consumo energetico nell’informatica Che cos’è l’Intelligenza Artificiale e perché consuma così tanta energia Nozioni di base sulle blockchain Stima delle emissioni di carbonio L’impronta di carbonio dei data center Modulo 2 - Architetture, calcolo e ingegneria del software orientati all’efficienza energetica Sistemi ad alta efficienza energetica Principi dell’informatica ad alta efficienza energetica Hardware a basso consumo energetico Architetture energeticamente efficienti Reti, 5G, 6G Analisi dei flussi e analisi predittiva del consumo energetico Consumo energetico dei linguaggi di programmazione Algoritmi a basso consumo Pratiche di sviluppo software sostenibili Valutazione del ciclo di vita delle risorse informatiche Metriche e standard per il Green Computing Metriche per misurare l’efficienza energetica e la sostenibilità Strumenti per il monitoraggio e la rendicontazione delle metriche di sostenibilità Modulo 3 - Data Science, Intelligenza Artificiale e Sostenibilità Data Science e Sostenibilità Impatto ambientale dei Big Data e dell’IA Pipeline tradizionali vs pipeline basate su ML Ottimizzazione algoritmica Transfer Learning Knowledge Distillation Pruning Tendenze della ricerca in ML e green computing Informatica neuromorfica Reservoir Computing Elementi di Intelligenza Artificiale per la sostenibilità (AI4Green) Casi di studio

Modalità d'esame

L'esame consiste in una prova scritta (peso 20/30) e nella realizzazione di un progetto (peso 10/30).Il progetto comporta tipicamente l'analisi di dati e si svolge su un tema concordato con i docenti. Deve essere svolto individualmente. Lo scritto si compone di domande aperte e problemi.Durante lo scritto si possono consultare libri e appunti ed è consentito l'uso si una calcolatrice.Non sono presenti prove in itinere Criteri di valutazione: Domande Aperte-Comprensione dei Concetti: La capacità di spiegare chiaramente i concetti chiave e le teorie relative al materiale del corso.-Chiarezza e Coerenza: La chiarezza, coerenza e organizzazione delle risposte.-Rilevanza: La rilevanza e accuratezza delle informazioni presentate in relazione alle domande poste. Soluzioni Analitiche dei Problemi-Accuratezza: Correttezza dei calcoli matematici e delle soluzioni.-Metodologia: L'adeguatezza e correttezza dei metodi e degli approcci utilizzati per risolvere i problemi.-Chiarezza del Lavoro: Presentazione chiara delle soluzioni, inclusi tutti i passaggi e le giustificazioni. Report di Progetto Originalità Appropriatezza delle tecniche di analisi Interpretazione dei risultati e comunicazione

Testi di riferimento

Note, slide e articoli forniti dal docente.

Codice insegnamento 2526-1-F1802Q108

Informatics for Industrial Applications 1° anno · 6 CFU · IINF-05/A · 0 file

L'insegnamento ha l'obiettivo di fornire le conoscenze e le competenze fondamentali per l'analisi, la progettazione e la verifica di sistemi logici digitali mediante linguaggi di descrizione hardware (HDL) e…

Scheda dell'insegnamento

Obiettivi formativi

L'insegnamento ha l'obiettivo di fornire le conoscenze e le competenze fondamentali per l'analisi, la progettazione e la verifica di sistemi logici digitali mediante linguaggi di descrizione hardware (HDL) e dispositivi logici programmabili (FPGA). Particolare attenzione è dedicata all'utilizzo di strumenti professionali di Computer-Aided Design (CAD) per la simulazione, la sintesi e la verifica di circuiti digitali, con un'introduzione ai flussi di progettazione di circuiti integrati digitali (ASIC).Al termine dell'insegnamento lo studente sarà in grado di progettare semplici sistemi digitali, descriverli in VHDL, verificarne il funzionamento mediante simulazione, implementarli su FPGA e utilizzare strumenti CAD orientati alla progettazione di circuiti integrati su silicio. Risultati di apprendimento attesi Conoscenza e capacità di comprensioneGli studenti acquisiranno le conoscenze fondamentali della progettazione di sistemi logici digitali, dei dispositivi logici programmabili (FPGA), dei linguaggi di descrizione hardware (VHDL) e dei principi di funzionamento degli strumenti di Computer-Aided Design (CAD) per la progettazione, simulazione e verifica di circuiti digitali e circuiti integrati. Capacità di applicare conoscenza e comprensioneGli studenti saranno in grado di analizzare, progettare e simulare circuiti logici combinatori e sequenziali, descriverli mediante VHDL, implementarli su FPGA e utilizzare strumenti CAD per la progettazione e la verifica di sistemi digitali e circuiti integrati di base. Autonomia di giudizioGli studenti svilupperanno la capacità di valutare differenti soluzioni progettuali per semplici sistemi digitali, interpretare criticamente i risultati delle simulazioni e del debugging e selezionare le soluzioni più appropriate in funzione delle specifiche progettuali. Abilità comunicativeGli studenti saranno in grado di descrivere il funzionamento dei sistemi digitali, motivare le scelte progettuali e presentare i risultati delle attività di progettazione e simulazione utilizzando una terminologia scientifica e tecnica appropriata. Capacità di apprendimentoGli studenti acquisiranno le competenze metodologiche necessarie per approfondire autonomamente la progettazione di sistemi digitali, l'utilizzo di strumenti CAD e dei linguaggi di descrizione hardware, nonché per affrontare corsi più avanzati dedicati alla progettazione di sistemi digitali, FPGA e circuiti integrati.

Programma

Sistemi di numerazione e codici binari Introduzione ai sistemi di numerazione Rappresentazione binaria dei numeri Codici ottale ed esadecimale Codice Gray Hamming distance Aritmetica binaria Algebra di Boole Operatori logici fondamentali Teoremi di De Morgan Teorema del consenso Sintesi tramite Sum-of-Products (SOP) Sintesi tramite Product-of-Sums (POS) Minimizzazione mediante mappe di Karnaugh Hazard statici e dinamici Circuiti logici combinatori Porte logiche Encoder, Decoder, Multiplexer, Demultiplexer Comparatori Generatori e verificatori di parità Half-Adder, Full-Adder Circuiti logici sequenzialiLatch SR, DFlip-Flop D, JK, TRegistri Contatori Macchine a stati finiti (Finite State Machines) Modello di Mealy Modello di Moore Tecniche di progettazione Esempi progettuali Linguaggi di descrizione hardware Dispositivi logici programmabili FPGA e ASIC Introduzione al VHDL Entity Architecture Tipi di dato Segnali e variabili Assegnamenti concorrenti Process Progettazione digitale in VHDL Modellazione combinatoria, Modellazione sequenziale, Modellazione strutturale Componenti riutilizzabili Bus e vettori, Operatori logici, Circuiti Combinatori Registri e Contatori Progettazione di macchine a stati finiti Interfacce digitali SPI I²C Elaborazione digitale dei segnali su FPGA Acquisizione di segnali digitali Rumore nel dominio digitale Tecniche di filtraggio digitale Condizionamento del segnale Implementazione su FPGA Xilinx Spartan-7 Introduzione alla progettazione di Circuiti Integrati Digitali su silicioFlusso CAD per la progettazione ASICSimulazione funzionaleSintesi logicaTiming analysisIntroduzione al layout digitale

Modalità d'esame

L'esame consiste in una prova scritta e una prova orale. Prova scrittaLa prova scritta comprende tre esercizi di progettazione logica. Il primo esercizio riguarda l'analisi e la sintesi di reti logiche combinatorie. Il secondo esercizio riguarda l'analisi e la progettazione di reti logiche sequenziali. Il terzo esercizio riguarda la progettazione di semplici sistemi digitali comprendenti logica combinatoria, logica sequenziale e macchine a stati finiti.La valutazione tiene conto della correttezza tecnica delle soluzioni, della capacità di sintesi progettuale e della chiarezza espositiva. Prova oraleLa prova orale comprende: discussione critica della prova scritta; presentazione e discussione del progetto di gruppo sviluppato durante il corso. La valutazione considera: padronanza degli argomenti teorici; capacità di motivare le scelte progettuali; utilizzo corretto della terminologia tecnica; capacità di interpretare criticamente i risultati ottenuti mediante simulazione e implementazione.

Testi di riferimento

  • Appunti e Slide fornite dal docente - "Introduzione al Progetto di Sistemi Digitali." Donzellini, Giuliano, Luca Oneto, Domenico Ponta, and Davide Anguita. (2017): 1-474.- “Circuit Design with VHDL” Volnei A. Pedroni MIT Press

Codice insegnamento 2627-1-F1802Q126

Information Systems 1° anno · 6 CFU · IINF-05/A · 0 file

Il corso approfondisce le conoscenze necessarie per comprendere il ruolo e la gestione di sistemi informativi moderni. Il corso approfondisce il ruolo dei sistemi informativi nei processi aziendali e discute gli…

Scheda dell'insegnamento

Obiettivi formativi

Il corso approfondisce le conoscenze necessarie per comprendere il ruolo e la gestione di sistemi informativi moderni. Il corso approfondisce il ruolo dei sistemi informativi nei processi aziendali e discute gli aspetti principali del progetto, gestione, controllo qualità e tecnologie abilitanti dei sistemi informativi.

Programma

Sistemi informativi aziendali* Struttura dei sistemi informativi* Dati e servizi* Modelli di organizzazione, processo e datiModelli di processo e dei dati* Modelli di processi di business* Modelli dei dati e dei serviziValutazione di efficienza e efficacia* Valutazione di efficienza* Valutazione di efficacia* Valutazione di sistemi cloudTecnologie e Progetto dell’architettura* Tecnologie a livello applicativo* Progetto dell’architettura fisica* Gestione dell'infrastruttura

Modalità d'esame

esercizi e questionari proposti online e prova orale

Testi di riferimento

Valacich, Schneider, HashimInformation Systems Today: Managing in the Digital World,Global Edition 9th Edition Articoli offerti sulla piattaforma di eLearningEsercizi sulla piattaforma di eLearning

Codice insegnamento 2627-1-F1802Q138

Information Theory and Cryptography 1° anno · 6 CFU · INFO-01/A · 0 file

Conoscenza e capacità di comprensioneGli studenti comprenderanno i principi di funzionamento dei codici per la correzione d’errore, e di alcune semplici tecniche di compressione dati lossless (senza perdita di…

Scheda dell'insegnamento

Obiettivi formativi

Conoscenza e capacità di comprensioneGli studenti comprenderanno i principi di funzionamento dei codici per la correzione d’errore, e di alcune semplici tecniche di compressione dati lossless (senza perdita di informazione). Comprenderanno inoltre il funzionamento di un crittosistema o di un protocollo crittografico. Conoscenza e capacità di comprensione applicateGli studenti saranno in grado di scegliere gli strumenti crittografici adatti per proteggere i dati durante la loro trasmissione e/o memorizzazione. Autonomia di giudizioGli studenti acquisiranno la capacità di valutare se gli algoritmi proposti di correzione degli errori, di compressione dati, e di cifratura, sono adeguati. Abilità comunicativeLa grande attenzione posta sugli aspetti formali permetterà agli studenti di comprendere l’importanza di una comunicazione non ambigua, utilizzando la terminologia corretta per esprimere le nozioni e i concetti appresi. Capacità di apprendereLa formalizzazione dei concetti faciliterà i meccanismi di apprendimento deduttivo. Inoltre, l'esposizione di esempi ed esercizi svolti alla lavagna, subito dopo aver spiegato una tecnica o un algoritmo, consentirà di chiarire eventuali dubbi e casi particolari.

Programma

Codici per la correzione degli errori: Definizione di sorgente, canale, codifica Codici per il riconoscimento di errori. Controlli di parità Codici a correzione d'errore. Approccio geometrico e approccio algebrico. Codici di Hamming Codifica di sorgente: Codici istantanei e loro costruzione Disuguaglianze di Kraft e di McMillan Codici di Huffman L’entropia: Definizione e proprietà matematiche Codici di Shannon-Fano Primo teorema di Shannon Il canale rumoroso: Definizione di canale, entropie di canale e mutua informazione Capacità di canale Il canale binario simmetrico Secondo teorema di Shannon Introduzione alla Crittografia: Definizione di crittosistema Modelli di attacco Crittosistemi storici, e loro crittoanalisi Crittosistemi simmetrici: Crittosistemi standard: DES, 3DES e AES Modi di funzionamento dei crittosistemi simmetrici Fondamenti teorici dei crittosistemi simmetrici: Confusione e diffusione Reti di permutazione e sostituzione Struttura di Feistel Crittosistemi a chiave pubblica: Funzioni one-way: logaritmi discreti e il problema della fattorizzazione Protocollo di Diffie-Hellman. Il crittosistema ElGamal. Crittosistemi ibridi Il crittosistema RSA. Alcuni semplici attacchi ad RSA. RSA randomizzato Generatori di numeri pseudo-casuali Schemi di firma digitale Funzioni di hash crittografiche Cenni alla crittografia post-quantum

Modalità d'esame

La verifica dell'apprendimento è basata su un colloquio orale avente per oggetto gli argomenti svolti a lezione. Durante il colloquio verrà valutata la capacità dello studente di esporre gli argomenti del corso, e di effettuare brevi ragionamenti su di essi. Non sono presenti prove in itinere.

Testi di riferimento

Libri: R.W. Hamming. Coding and Information Theory. Second edition, Prentice-Hall, 1986 D.R. Stinson. Cryptography: Theory and Practice. Fourth Edition, CRC Press, 2018 Appunti forniti dal docente.

Codice insegnamento 2627-1-F1802Q139

Juridical and Social Issues in Information Society 1° anno · 6 CFU · GIUR-05/A · 0 file

Il corso "Juridical and Social Issues in Information Society" è suddiviso in due moduli: uno si concentra sulle questioni etiche e giuridiche derivanti dalla trasformazione della società in una società…

Scheda dell'insegnamento

Scheda dell'a.a. 2025/2026: quella dell'anno in corso non è ancora pubblicata.

Obiettivi formativi

Il corso "Juridical and Social Issues in Information Society" è suddiviso in due moduli: uno si concentra sulle questioni etiche e giuridiche derivanti dalla trasformazione della società in una società dell'informazione (Prof. Ricci), mentre l'altro affronta le questioni sociali (Prof. Masiero e Bellini). Per quanto riguarda il modulo sulle questioni etiche e legali (Prof. Ricci), il corso mira a fornire agli studenti strumenti teorici e argomentativi utili per sviluppare il pensiero critico negli studenti che lavoreranno direttamente con le tecnologie nel campo della società dell'Informazione. La discussione di casi etici sarà parte integrante di questo obiettivo. Inoltre, poiché l'etica comprende anche la legge, verranno analizzate le normative relative ai principali aspetti di interesse per gli studenti di Data Science. In particolare, verranno esaminati il Regolamento generale sulla protezione dei dati (GDPR) e la proposta di Regolamento sull'intelligenza artificiale (AIA). Per quanto riguarda il modulo "Social Issues in Information Society" (Prof. Roberto Masiero e Camilla Bellini), l'obiettivo è preparare gli studenti a comprendere gli impatti e ad affrontare le sfide poste dalla rivoluzione dei dati sull'economia e sulla società. Questo modulo svolge un ruolo cruciale nel fornire agli studenti una comprensione completa dei settori che beneficeranno maggiormente della Rivoluzione dei dati e nell'assisterli nel perseguire un percorso professionale di successo in futuro. Mentre gli studenti impareranno progressivamente ad utilizzare le metodologie e gli strumenti tecnici che costituiscono il contenuto principale del Corso di Data Science, il modulo si propone di aiutarli ad identificare e comprendere i modelli significativi dei fenomeni sociali, ambientali ed economici, nonché le implicazioni filosofiche ed etiche, associate all'Economia dei Dati.

Programma

Modulo "Juridical Issues in Information Society", Prof. Stefano RicciIl corso sarà diviso in due parti: Una parte generale che si occupa di distinguere e identificare i problemi tecnici ed etico-giuridici. Verranno esplorate le prospettive filosofiche che sostengono diverse concezioni dello sviluppo tecnologico e la sua influenza sul processo legislativo in questo campo. Tratterà anche domini specifici che beneficiano della rivoluzione dei dati, come la medicina. Una parte speciale è dedicata al Regolamento Generale sulla Protezione dei Dati (GDPR) e alla proposta di Regolamento sull'Intelligenza Artificiale (AIA). Social Issues in Information Society, Prof. Roberto Masiero e Camilla BelliniIl modulo affronterà i seguenti argomenti: Lecture 1 - Introduzione al corso: Obiettivi principali, contenuti e metodologia - Dalla Rivoluzione Cognitiva alla Società dell'InformazioneLecture 2 - Il rapporto tra tecnologia e società (parte 1)Lecture 3 - Il rapporto tra tecnologia e società (parte 2)Lecture 4 - Automazione, informazione e piattaforme nell'economia e nella società (parte 1)Lecture 5 - Automazione, informazione e piattaforme nell'economia e nella società (parte 2)Lezione 6 - Come le ICT stanno cambiando la filosofia, l'ecologia e l'etica dell'informazioneLezione 7 - Rivoluzioni tecnologiche, rivoluzioni scientifiche e rivoluzioni mentali. La quarta rivoluzione e oltreLezione 8 - Politica, democrazia e società nell'era digitale. La politica è diventata una forma di marketing? Il digitale può migliorare la coesione sociale o accentua le disuguaglianze sociali?Lezione 9 - L'impatto dell'innovazione digitale su crescita, occupazione e distribuzione della ricchezzaLezione 10 - Questioni teoriche, sociali ed etiche relative all'intelligenza artificiale. La rivoluzione dei Big Data: correlazione, datafication, la fine della teoria? L'intelligenza artificiale dalla predittività alla generatività alla trasformativitàLezione 11 - L'impatto dell'intelligenza artificiale sui modelli di business e sulla vita personale. «Umano dentro, sopra o fuori dal ciclo?» – Il ruolo dell'umanità nel processo decisionale automatizzato. L'etica dell'intelligenza artificiale nella difesa e la sfida degli AWS (sistemi d'arma autonomi)Presentazioni finali dei progetti dei gruppi di lavoro

Modalità d'esame

Juridical Issues in Information Society, Prof. Stefano Ricci Non sono previsti esami parziali.Gli esami consisteranno in otto domande a scelta multipla e tre domande aperte.Ogni risposta corretta vale 3 punti. Undici risposte corrette comportano un voto di 30 e lode. Orale facoltativo su richiesta dello studente o del docente.Informazioni importanti: Per gli studenti che si sono iscritti al corso negli anni precedenti, l'esame si svolgerà nella lingua dell'anno di iscrizione, che potrebbe essere l'inglese o l'italiano. Tuttavia, il programma rimane identico a quello delineato in questo syllabus.Il voto finale sarà registrato una volta che lo studente avrà sostenuto l'esame per entrambi i moduli (Juridical e Social/Ricci-Masiero). Gli studenti devono iscriversi separatamente a ciascun modulo e preferibilmente sostenere entrambi gli esami nella stessa sessione. Social Issues in Information Society, Prof. Roberto Masiero e Camilla BelliniL'esame avrà luogo in forma scritta e consisterà in sei domande aperte.E' previsto un take home assignement (opzionale) che consente di avere dei punti extra da sommare all'esito dell'esame scritto.

Testi di riferimento

Juridical Issues in Information Society, Prof. Stefano Ricci Andrea Rossetti - Stefano Ricci, Aspetti giuridici della società dell'informazione (2024 - in corso di pubblicazione) - Ed. Giuffrè EditoreIl testo offre una panoramica delle principali questioni giuridiche che verranno affrontate a lezione.Opzionale: Luciano Floridi, La quarta rivoluzione: Come l'infosfera sta trasformando il mondo (2016) - Ed. OUP OxfordIl testo di Luciano Floridi fornisce una panoramica introduttiva dell'argomento, che sarà approfondito con riferimento alla bioetica, alla protezione dei dati personali e alla regolamentazione dell'intelligenza artificiale.Il materiale per superare l'esame è quindi costituito dal libro e dalle slides presentate a lezione. Social Issues in Information Society, Prof. Roberto Masiero e Camilla Bellini Luciano Floridi, The Fourth Revolution: How the Infosphere is Reshaping Human Reality (2016) – Ed. OUPLuciano Floridi, The Ethics of Artificial Intelligence -- Principles, Challenges and Opportunities, 2022Alessandro Baricco, The Game, Einaudi, 2018Una lista dettagliata di ulteriori articoli e paper verrà fornita durante il corso.

Codice insegnamento 2526-1-F1802Q109

Logical Foundations of Computer Science 1° anno · 6 CFU · INFO-01/A · 0 file

L'obiettivo dell'insegnamento è quello di introdurre i concetti fondamentali che legano la logica alla scienza dei calcolatori così che lo studente possa comprendere gli sviluppi moderni della logica computazionale.…

Scheda dell'insegnamento

Obiettivi formativi

L'obiettivo dell'insegnamento è quello di introdurre i concetti fondamentali che legano la logica alla scienza dei calcolatori così che lo studente possa comprendere gli sviluppi moderni della logica computazionale. Conoscenza e comprensione: lo studente conoscerà il concetto di Isomorfismo Curry-Howard e come esso si lega alla programmazione funzionale e alla logica intuzionista nell'ambito della correttezza dei programmi. Si introdurranno le logiche modali e si mostrerà come essere si legano alla rappresentazione della conoscenza. Conoscenza e capacità di comprensione applicate: lo studente sarà in grado di scrivere funzioni in lambda calcolo, svolgere esercizi di tipizzazione di funzioni nell'ambito della correttezza dei programmi, stabilire la validità intuizionista di una formula che rappresenta una specifica ed estrarre dalla dimostrazione un programma in lambda calcolo. Lo studente sarà in grado di stabilire la soddisfacibilità di formule modali e modellare problemi scrivendo formule modali. Capacità critiche di giudizio: saper scegliere tra diverse rappresentazioni della stessa funzione o della stessa tipizzazione; saper valutare divese formule che rappresentano la stessa conoscenza; capacità di comunicare: saper definire correttamente i termini introdotti e distinguere cosa catturano le diverse definizioni date; enunciare anche con parole proprie ma in modo matematicamente corretto i teoremi principali mettondone in evidenza il significato; capacità di proseguire lo studio in modo autonomo: essere in grado di cogliere che i meccanismi introdotti sono istanziabili anche ai linguaggi non funzionali; generalizzare la capacità di usare gli strumenti logici anche su logiche modali non viste la lezione e selezionare il framework logico più adatto per affrontare un problema nuovo.

Programma

Illustremo come logica e computazione sono connessi partendo dai concetti di programmazione funzionale e teoria della ricorsività illustrati al secondo anno della Laurea Triennale. Questo ci permetterà di introdurre il linguaggio funzionale noto come Lambda Calcolo ed il concetto di Tipo i quali hanno un ruolo chiave nella correttezza dei programmi; dal punto precedente arriveremo ad introdurre il concetto di Isomorfismo Curry-Howard noto anche come paradigma Propositions as Types che ha grande importanza nei linguaggi funzionali tipati; i precedenti punti oltre ad introdurre aspetti tecnici chiariscono le motivazioni per cui in informatica i concetti logici hanno grande importanza e rendono logica e computazione due concetti strettamente legati. In particolare al termine del punto 2 avremo motivato l'importanza della logica Intuizionista in informatica. Saremo quindi pronti a presentare sintassi, semantica e sistemi di dimostrazione per la logica Classica e successivamente per la logica Intuizionista; le logiche modali sono un'ampia famiglia di logiche oggi ampiamente usate in informatica per applicazioni che vanno dalla verifica di sistemi formali, all'analisi di giochi, alla rappresentazione di sistemi di agenti. Studieremo le proprietà base di queste logiche.

Modalità d'esame

Solo prova finale (non ci sono prove in itinere); solo prova orale, che può svolgersi in una delle due seguenti modalità:1. COLLOQUIO SUGLI ARGOMENTI SVOLTI A LEZIONE;2. COLLOQUIO SU ARGOMENTI DI APPROFONDIMENTO NON TRATTATI A LEZIONE; per entrambe le tipologie di prova la valutazione riguarda la conoscenza degli argomenti, compresa la capacità di rispondere a domande e svolgere esercizi, chiarezza espositiva e rigore matematico nell'esposizione.

Testi di riferimento

Il sito di elearning verrà utilizzato per distribuire materiale ad-hoc. Open Logic Project è un progetto collaborativo che riunisce in modo organico materiali relativi alla logica matematica insegnata nei corsi di filosofia. Contiene tutti gli argomenti trattati nell'insegnamento e può essere un buon riferimento . Circa il materiale standard, purtroppo non esiste un unico libro che copra gli argomenti dell'insegnamento.I seguenti libri ed articoli vengono suggeriti perchè in possesso della nostra biblioteca e/o scaricabili gratuitamente: Dirk van Dalen. Logic and structure (3. ed.). Universitext. Springer, 1994. Di interesse i capitoli su logica classica e intuizionista; Philip Wadler.Propositions as types. Commun. ACM, 58(12):75–84, 2015. Articolo divulgativo; Morten Heine Sörensen and Pawel Urzyczyn. Lectures on the Curry-Howard isomorphism. Elsevier, 2006. Testo avanzato che copre i punti da 1 a 3 del programma.

Codice insegnamento 2627-1-F1802Q122

Machine Learning 1° anno · 6 CFU · INFO-01/A · 0 file

Il corso si propone di introdurre gli elementi di base e di fornire i concetti e gli strumenti fondamentali, basati su metodi computazionali, per rappresentare l’apprendimento, la conoscenza e il ragionamento in…

Scheda dell'insegnamento

Obiettivi formativi

Il corso si propone di introdurre gli elementi di base e di fornire i concetti e gli strumenti fondamentali, basati su metodi computazionali, per rappresentare l’apprendimento, la conoscenza e il ragionamento in condizioni di incertezza. Lo studente sarà in grado di progettare e sviluppare strumenti software basati su tecniche di apprendimento automatico (machine learning) per risolvere semplici problemi di analisi di dati, knowledge discovery e supporto alle decisioni in presenza di informazione incerta o incompleta. Gli obiettivi specifici rispetto ai Descrittori di Dublino (DdD) sono i seguenti:1. Conoscenza e capacità di comprensione le basi teoriche dell’apprendimento automatico; la comprensione dei principali modelli (alberi di decisione, reti neurali, SVM, modelli bayesiani, k-means, ecc.); 2. Conoscenza e capacità di comprensione applicate progettare e sviluppare strumenti software basati su modelli di machine learning; applicare metodi di classificazione supervisionata e non supervisionata a problemi reali; 3. Autonomia di giudizio selezionare i metodi più appropriati in relazione alla natura del problema e dei dati; valutare la qualità delle soluzioni proposte in base ai risultati ottenuti dai modelli rispetto a metriche di performance; analizzare criticamente le assunzioni dei modelli (es. separabilità lineare, indipendenza delle variabili) e i risultati ottenuti rispetto a tali assunzioni. 4. Abilità comunicative comunicare le scelte progettuali e metodologiche in modo argomentato presentare e discutere in modo chiaro i risultati di un progetto in sede di prova orale; lavorare in gruppo, condividendo conoscenze. 5. Capacità di apprendere sviluppare capacità autonome di studio attraverso il completamento di assignment facoltativi derivanti da attività di laboratorio focalizzate all'uso di modelli di machine learning

Programma

Introduzione e terminologia Concept learning· Alberi di decisione· Algoritmo ID3 Reti neurali· Il percettrone; separabilità lineare· Algoritmo di apprendimento del percettrone· Delta rule. Concetto di discesa del gradiente· Il percettrone multistrato· Algoritmo di retropropagazione dell'errore Support vector machines· Separazione ottima· Hard and Soft SVM· Kernels Apprendimento bayesiano· Teorema di Bayes· Classificatore bayesiano ingenuo Apprendimento non supervisionato· L'algoritmo k-means Valutazione dei risultati dell'apprendimento· valutazione per i metodi supervisionati· valutazione del clustering

Modalità d'esame

L'esame consiste di una prova scritta e una prova orale (facoltativa), in accordo alle seguenti modalità: Prova scritta: domande teoriche a riposta multipla e a risposta aperta, esercizi e coding. La prova scritta avrà una valutazione da 0 a 28. Prova orale (facoltativa): domande di approfondimento su contenuti specifici del programma dell'insegnamento. La prova orale avrà una valutazione da 0 a 4 punti. Il voto finale sarà determinato come somma tra la prova scritta e la prova orale. Non sono previste prove in itinere.

Testi di riferimento

Materiali riferiti sulla pagina elearning dell'insegnamento

Codice insegnamento 2526-1-F1802Q101

Media Law and Computer Law 1° anno · 6 CFU · GIUR-05/A · 0 file
Methods of Scientific Computing 1° anno · 6 CFU · MATH-05/A · 0 file

Il corso si propone di presentare in modo critico alcuni algoritmi numerici fondamentali per la modellistica matematica e di imparare a reperire e utilizzare librerie di software scientifico per la soluzione di…

Scheda dell'insegnamento

Obiettivi formativi

Il corso si propone di presentare in modo critico alcuni algoritmi numerici fondamentali per la modellistica matematica e di imparare a reperire e utilizzare librerie di software scientifico per la soluzione di problemi concreti.

Programma

Modellistica matematica Aritmetica Floating Point Algebra Lineare Numerica: Metodi Diretti ed Iterativi per Sistemi Lineari Algoritmi per la Ricerca degli Autovalori e Algoritmo di Ricerca di Google Analisi di Fourier Discrete Cosine Transform (DCT) Formato JPEG per le immagini compresse

Modalità d'esame

Durante il corso verranno assegnate due o più relazioni scritte da consegnare prima della prova d’esame. La prova d’esame consiste nella presentazione delle relazioni e in una discussione sul loro contenuto. In alternativa, oppure in caso di ritiro o mancato superamento dell’esame a progetto, l’esame consisterà in un orale standard sugli argomenti del corso.

Testi di riferimento

Note del docente disponibili sul sito del corso e libri su richiesta.

Codice insegnamento 2627-1-F1802Q105

Models and Computation 1° anno · 12 CFU · 0 file
Probabilistic Models for Decision Making 1° anno · 6 CFU · MATH-06/A · 0 file

Il corso fornirà i principali concetti e strumenti operativi, basati su metodi probabilistici e computazionali, per rappresentare l’incertezza, aggiornare credenze a partire da dati incompleti o rumorosi, modellare…

Scheda dell'insegnamento

Obiettivi formativi

Il corso fornirà i principali concetti e strumenti operativi, basati su metodi probabilistici e computazionali, per rappresentare l’incertezza, aggiornare credenze a partire da dati incompleti o rumorosi, modellare l’evoluzione di sistemi dinamici e supportare decisioni razionali in condizioni di incertezza. Gli studenti acquisiranno abilità nell’utilizzare i concetti e i metodi appresi per risolvere problemi di inferenza, previsione e decisione. In particolare, gli studenti acquisiranno competenze nella costruzione e valutazione di modelli probabilistici, nell’uso di tecniche di simulazione e campionamento, nell’analisi di processi markoviani e modelli temporali, e nella formulazione di problemi decisionali sequenziali. **Conoscenza e capacità di comprensione **(DdD 1) Al termine del corso, lo studente sarà in grado di:• Conoscere e comprendere i principali concetti, teorie e metodi relativi al ragionamento probabilistico in condizioni di incertezza.• Conoscere modelli probabilistici temporali, catene di Markov, Hidden Markov Models, filtri bayesiani e modelli decisionali sequenziali.• Comprendere il ruolo di inferenza, previsione, simulazione e decisione nei sistemi intelligenti e nelle applicazioni informatiche.• Riconoscere le connessioni tra probabilità, intelligenza artificiale, machine learning, analisi di sequenze e reinforcement learning. Conoscenza e capacità di comprensione applicate (DdD 2)Lo studente sarà in grado di:• Applicare le conoscenze teoriche acquisite per risolvere problemi specifici o casi di studio relativi a modelli probabilistici e decisionali.• Utilizzare strumenti e tecniche di analisi per progettare soluzioni concrete in presenza di incertezza.• Condurre esperimenti, attività pratiche o simulazioni.• Implementare semplici procedure di inferenza, campionamento, filtraggio e decisione sequenziale. Autonomia di giudizio (DdD 3)Attraverso attività di laboratorio, esercitazioni e discussioni guidate, lo studente svilupperà:• Capacità critica nell’interpretazione dei dati, delle evidenze e delle informazioni raccolte.• Abilità di valutare diverse strategie modellistiche e decisionali, ponderando vantaggi, limiti e assunzioni.• Capacità di formulare giudizi motivati e argomentati in modo autonomo rispetto alla scelta e all’uso di modelli probabilistici. Abilità comunicative (DdD 4)Durante il corso, lo studente sarà stimolato a:• Comunicare efficacemente i risultati delle proprie analisi sia in forma scritta, attraverso assignments ed esercitazioni, sia in forma orale, attraverso discussioni e presentazioni.• Utilizzare un linguaggio tecnico adeguato e chiaro.• Argomentare le scelte modellistiche e interpretare criticamente i risultati ottenuti. Capacità di apprendere (DdD 5)Al termine del corso, lo studente sarà in grado di:• Organizzare e pianificare in modo autonomo il proprio percorso di approfondimento e aggiornamento professionale.• Utilizzare risorse bibliografiche, digitali e strumenti di autoapprendimento per continuare lo studio in modo efficace.• Sviluppare un approccio critico e riflessivo verso nuove conoscenze e tecnologie relative a modelli probabilistici, sistemi decisionali e intelligenza artificiale.

Programma

1. Rappresentazione dell’incertezza nei problemi decisionali.Azione in condizioni di incertezza. Nozioni di base di probabilità. Distribuzioni congiunte e condizionate. Inferenza tramite distribuzione congiunta completa. Indipendenza e indipendenza condizionale. Regola di Bayes e applicazioni.Riferimento: Russell & Norvig, Artificial Intelligence: A Modern Approach, 4th ed., Chapter 12, Sections 12.1–12.5 (3ª ed. it.: Capitolo 13, sezioni 13.1–13.5).2. Simulazione probabilistica e generazione di variabili casuali.Numeri casuali e pseudo-casuali. Numeri pseudo-casuali, seed, periodo, riproducibilità e proprietà statistiche delle sequenze generate. Generazione da distribuzione uniforme, trasformazione inversa, generazione da distribuzioni discrete e metodo acceptance-rejection. Introduzione alla simulazione Monte Carlo per la stima di probabilità e valori attesi.Riferimento: materiale fornito dal docente; Rubinstein & Kroese, Simulation and the Monte Carlo Method, 3rd ed., Chapter 2, Sections 2.2–2.4; Chapter 4, Sections 4.2–4.3.3. Catene di Markov.Processi stocastici a tempo discreto. Proprietà markoviana. Spazio degli stati, distribuzione iniziale e matrice di transizione. Probabilità a più passi ed evoluzione della distribuzione di stato. Classificazione degli stati, stati assorbenti, ricorrenza e transienza. Distribuzioni stazionarie e comportamento asintotico. Random walk e applicazioni.Riferimento: materiale fornito dal docente; Norris, Markov Chains, Chapter 1.4. Hidden Markov Models e inferenza sequenziale.Estensione delle catene di Markov al caso di stati non direttamente osservabili. Stati nascosti e osservazioni rumorose. Definizione di Hidden Markov Model tramite distribuzione iniziale, modello di transizione e modello di emissione. Ipotesi di Markov, ipotesi di osservazione locale e fattorizzazione della distribuzione congiunta lungo la sequenza. Filtering, prediction, smoothing e likelihood di una sequenza di osservazioni. Algoritmo forward, algoritmo forward-backward e algoritmo di Viterbi. Cenni all’apprendimento dei parametri tramite Baum-Welch/EM.Riferimento: Russell & Norvig, Artificial Intelligence: A Modern Approach, 4th ed., Chapter 14, Sections 14.1–14.3 (3ª ed. it.: Capitolo 15, sezioni 15.1–15.3); Rabiner, “A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition”, limitatamente alla definizione degli HMM, ai tre problemi fondamentali, agli algoritmi forward, forward-backward, Viterbi e Baum-Welch. Per i cenni all’apprendimento dei parametri: Russell & Norvig, Artificial Intelligence: A Modern Approach, 4th Global ed., Chapter 21, Section 21.3 (3ª ed. it.: Capitolo 20, sezione 20.3).5. Filtraggio bayesiano continuo.Filtro di Bayes come schema generale di aggiornamento della belief. Stati continui e osservazioni rumorose. Modelli lineari gaussiani e filtro di Kalman. Predizione, aggiornamento, media, covarianza, innovazione e Kalman gain. Cenni a Extended Kalman Filter e Particle Filter per modelli non lineari, non gaussiani o multimodali. Riferimento: Russell & Norvig, Artificial Intelligence: A Modern Approach, 4th ed., Chapter 14, Sections 14.1–14.2 and 14.4 (3ª ed. it.: Capitolo 15, sezioni 15.1–15.2 e 15.4); materiale fornito dal docente; Thrun, Burgard, Fox, Probabilistic Robotics. 6. Decisioni sequenziali e Markov Decision Processes.Problemi decisionali sequenziali. Stati, azioni, transizioni probabilistiche, ricompense e politiche. Markov Decision Processes. Funzioni di valore. Bellman equation e principio di ottimalità. Value iteration e policy iteration. Cenni a Partially Observable Markov Decision Processes e collegamenti con il reinforcement learning. Riferimento: Russell & Norvig, Artificial Intelligence: A Modern Approach, 4th Global ed., Chapter 16, Sections 16.1–16.2 and 16.4 (3ª ed. it.: Capitolo 17, sezioni 17.1–17.4). Per eventuali cenni agli algoritmi per POMDP: Russell & Norvig, Chapter 16, Section 16.5 (3ª ed. it.: Capitolo 17, sezione 17.4). Per il collegamento con il reinforcement learning: Sutton & Barto, Reinforcement Learning: An Introduction, 2nd ed., Chapter 3 and Chapter 4, Sections 4.1–4.4.

Modalità d'esame

Esame Scritto + orale facoltativo

Testi di riferimento

S. Russell, P. Norvig, “Intelligenza Artificiale: Un Approccio Moderno”, Prentice Hall, III Edizione.Materiale fornito dal docente: slides, esercizi, notebook e papers selezionati. Riferimenti integrativi:• J. R. Norris, Markov Chains.• L. R. Rabiner, A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition.• S. Thrun, W. Burgard, D. Fox, Probabilistic Robotics.• R. S. Sutton, A. G. Barto, Reinforcement Learning: An Introduction.• K. P. Murphy, Machine Learning: A Probabilistic Perspective oppure Probabilistic Machine Learning: An Introduction.

Codice insegnamento 2627-1-F1802Q106

Software Development Process 1° anno · 6 CFU · IINF-05/A · 0 file

Conoscenza e capacità di comprensione (DdD 1): gestire processi con DevOps, gestire i rischi di un progetto software, conoscere techniche informali, semi-formali e formali di analisi e specifica dei requisiti, sviluppare…

Scheda dell'insegnamento

Obiettivi formativi

Conoscenza e capacità di comprensione (DdD 1): gestire processi con DevOps, gestire i rischi di un progetto software, conoscere techniche informali, semi-formali e formali di analisi e specifica dei requisiti, sviluppare software agile. Conoscenza e capacità di comprensione applicate (DdD 2): Realizzare pipeline di automazione, elicitare i requisiti di un progetto software, scrivere codice Clean, analizzare i rischi di un progetto.

Programma

Processi di sviluppo agili (principi generali, Extreme Programming, Scrum) e DevOps. Costruzione di pipeline ci CI/CD. Gestione di Progetto: analisi dei rischi, maturità dei modelli (CMMI) Ingegnerizzazione dei Requisiti: introduzione, comprensione ed elicitazione dei requisiti, valutazione dei requisiti, specifica e documentazione dei requisiti (linguaggio naturale, diagrammi, metodi formali), controllo qualità dei requisiti, evoluzione dei requisiti. Sviluppo Clean Code e automazione.

Modalità d'esame

Due opzioni disponibili: - esercizi + colloquio: gli studenti che lavorano durante l'erogazione del corso possono superare l’esame facendo delle consegne in itinere che sono poi discusse individualmente. - esame scritto + orale: altrimenti gli studenti possono superare l’esame svolgendo una prova scritta e una prova orale.

Testi di riferimento

Libri di testo (selezione di capitoli) Requirements Engineering, Axel van Lamsweerde, Wiley, 2009. Clean Code: A Handbook of Agile Software Craftsmanship, Robert C. Martin, 2025. Risorse online e articoli caricati in piattaforma. Esercizi di autovalutazione.

Codice insegnamento 2627-1-F1802Q104

Software Quality 1° anno · 6 CFU · INFO-01/A · 0 file

Il corso approfondisce le conoscenze necessarie per comprendere a fondo principi, tecniche e organizzazione del processo di qualità, elementi di base della formazione di test designer, quality manager e project…

Scheda dell'insegnamento

Obiettivi formativi

Il corso approfondisce le conoscenze necessarie per comprendere a fondo principi, tecniche e organizzazione del processo di qualità, elementi di base della formazione di test designer, quality manager e project manager. Al termine del corso, lo studente sarà in grado di definire e implementare un piano di qualità per progetti software complessi e avrà le conoscenze che caratterizzano un buon quality e project manager. Dopo il corso lo studente sarà in grado di definire, controllare ed eseguire un piano di qualità per progetti software complessi

Programma

Fundamentals of Test and Analysis Software Test and Analysis in a Nutshell Engineering Processes and Verification Software Qualities Quality Goals Dependability Properties Validation and Verification Degrees of Freedom Basic Principles Dependence and Data Flow Models Data Flow Analysis Classic Analyses Interprocedural Analysis Symbolic Execution and Proof of Properties Symbolic State and Interpretation Test Case Selection and Adequacy Adequacy Criteria Comparing Criteria Functional Testing Random versus Partition Testing Strategies Data Flow Testing Data Flow Testing Criteria The Infeasibility Problem Model-Based Testing Deriving Test Cases from Finite State Machines Testing Decision Structures Deriving Test Cases from Control and Data Flow Graphs Deriving Test Cases from Grammars Fault-Based Testing Mutation Analysis Fault-Based Adequacy Criteria Test Execution From Test Case Specifications to Test Cases Scaffolding Generic versus Specific Scaffolding Test Oracles Self-Checks as Oracles Capture and Replay The Quality Process Test and Analysis Plans Monitoring the Process Integration Testing System Testing Acceptance Testing Regression Testing

Modalità d'esame

esercizi e questionari proposti online e prova orale.

Testi di riferimento

materiale disponibile sulla piattaforma online: libro: Mauro Pezzè and Michal Young, Software Testing and Analysis, process, principle and techniques, John Wiley 2007 articoli slide esercizi questionari

Codice insegnamento 2627-1-F1802Q132

Telecommunication Systems and Services 1° anno · 6 CFU · IINF-03/A · 0 file

1. Conoscenza e capacità di comprensioneLo studente acquisirà conoscenze approfondite sulle architetture e i principi di funzionamento dei sistemi di telecomunicazione, in particolare relativi a reti di accesso, agli…

Scheda dell'insegnamento

Obiettivi formativi

1. Conoscenza e capacità di comprensioneLo studente acquisirà conoscenze approfondite sulle architetture e i principi di funzionamento dei sistemi di telecomunicazione, in particolare relativi a reti di accesso, agli apparati di rete e alla distribuzione dei contenuti. Sarà in grado di comprendere le problematiche tecniche legate alla qualità del servizio, alla codifica vocale, al VoIP e, più in generale, ai servizi multimediali. 2. Capacità di applicare conoscenza e comprensioneLo studente sarà in grado di applicare le conoscenze acquisite per gestire le reti di telecomunicazione in contesti quali la connettività residenziale, enterprise e mobile. Acquisirà la capacità utilizzare strumenti software per emulare scenari di rete reali e comprendere il funzionamento di protocolli come OpenFlow. 3. Autonomia di giudizioLo studente svilupperà la capacità di valutare criticamente soluzioni progettuali diverse nell’ambito delle telecomunicazioni, considerando aspetti tecnici, prestazionali e di efficienza. Sarà inoltre in grado di interpretare i requisiti dei servizi e prendere decisioni informate sulla loro implementazione e gestione. 4. Abilità comunicativeLo studente sarà in grado di presentare in modo chiaro e coerente problematiche e soluzioni riguardanti i sistemi di telecomunicazione, utilizzando un linguaggio tecnico appropriato sia in contesti accademici che professionali. 5. Capacità di apprendimentoLo studente acquisirà le competenze metodologiche necessarie per aggiornarsi autonomamente sulle evoluzioni tecnologiche nel settore delle telecomunicazioni e approfondire in modo critico i temi trattati, anche attraverso la consultazione di fonti specialistiche e documentazione tecnica.

Programma

1. Introduzione alla Teoria della Comunicazione, Multiplazione e Mezzi Trasimissivi Canale di trasmissione e capacità di canale Modulazione analogica e digitale Multiplazione a divisione di frequenza, di tempo e di codice Accesso multiplo Doppino in rame Fibra ottica Trasmissione radio 2. Reti di Accesso a Banda Larga Rete di accesso fissa in rame, fibra e fibra misto rame (FTTE, FTTH, FTTC, FTTB) Tecnologia xDSL e il vectoring Reti wireless a a postazione fissa (FWA) Reti satellitari con satelliti GEO e LEO (a bassa latenza) 3. Connettività WAN Connettività generalizzata e dedicata Protocollo MPLS e relativi protocolli di segnalazione (LDP, RSVP-TE) Reti private virtuali (VPN): VLAN Ethernet, MPLS virtual private LAN service, IP tunneling 4. Apparati di Rete e Software-Defined Networking Architettura di router e switch Architettura di firewall, IDS, load balancer e anti-DDoS Principi di base dell'SDN (previste esercitazioni pratiche con emulatore di rete) Protocollo OpenFlow e P4 (previste esercitazioni pratiche con emulatore di rete) Principi di base della Network Function Virtualization (NFV) 5. Qualità del Servizio nelle Reti Service Level Agreement e Traffic Conditioning Agreement Tecniche di policing, shaping e marking Tecniche di scheduling Call Admission Control (CAC) Integrated Services (IntServ) Differentiated Services (DiffServ) 6. Codifica Vocale e Voice-over-IP (VoIP) Codifiche waveform Source codec Codec ibridi Cause di degrado della voce in una rete a pacchetto Segnalazione VoIP: Session Initiation Protocol (SIP) 7. Content Delivery Network (CDN) Principi e architettura Tecniche di DNS redirection e URL rewriting La CDN di Akamai 8. Reti Radiomobili Concetti base sulle architetture cellulari Pianificazione di rete 2G (GSM e GPRS) 3G (UMTS e HSPA) 4G (LTE) 5G

Modalità d'esame

La verifica dell'apprendimento viene effettuata mediante una prova scritta e una successiva prova orale facoltativa, a discrezione dello studente o del docente. Non sono previste prove in itinere. La prova scritta consta di un certo numero di domande aperte (almeno quattro) sugli argomenti del corso. Le domande potranno vertere su tutti gli argomenti e tre aspetti concorreranno alla valutazione: 1) la correttezza tecnica, 2) il livello di dettaglio e 3) la pertinenza. Nel caso di valutazione minima pari a 18, lo studente può richedere di svolgere la prova orale, la quale annulla il voto dello scritto e deve essere svolta nella medesima sessione della prova scritta. Anche la prova orale verterà su tutto il programma. Il docente può richiedere allo studente con valutazione positiva nella prova scritta lo svolgimento di una prova orale, se ritenuto necessario. Eventuali modifiche alla modalità d'esame sono in fase di valutazione e, nel caso, verranno comunicate agli studenti nella lezione introduttiva del corso.

Testi di riferimento

Materiale on-line sul sito web del corso, principalmente slides e documentazione di approfondimento Testi di riferimento: Jim Kurose, Keith Ross, Computer Networking – A Top-Down Approach, 8th Edition, Pearson, 2021 Martin Sauter, From GSM to LTE-Advanced Pro and 5G: An Introduction to Mobile Networks and Mobile Broadband, 4th Edition, Wiley, 2021

Codice insegnamento 2627-1-F1802Q107

Advanced Machine Learning 2° anno · 6 CFU · INF/01 · 0 file

Questo corso avanzato di apprendimento automatico è rivolto in particolare agli studenti che hanno già familiarità con le basi dell'apprendimento automatico e desiderano rafforzare le loro conoscenze al fine di possedere…

Scheda dell'insegnamento

Obiettivi formativi

Questo corso avanzato di apprendimento automatico è rivolto in particolare agli studenti che hanno già familiarità con le basi dell'apprendimento automatico e desiderano rafforzare le loro conoscenze al fine di possedere capacità approfondite e ad ampio raggio in questo ambito. Il corso tratterà alcuni degli argomenti avanzati più importanti nell'apprendimento automatico come l'apprendimento deep e l'apprendimento per rinforzo, fornendone la teoria di base e con un particolare focus sulla modellizzazione e sull'implementazione pratica. Queste tecniche avanzate saranno applicate a una serie di applicazioni, tra cui: riconoscimento delle immagini, elaborazione del linguaggio naturale, sistemi di raccomandazione. Conoscenza e comprensioneLo studente acquisirà conoscenze avanzate nell’ambito dell’apprendimento automatico, con particolare attenzione all’apprendimento profondo (deep learning) e all’apprendimento per rinforzo (reinforcement learning). Verranno approfonditi i fondamenti teorici e i modelli matematici alla base di queste tecniche, unitamente alla comprensione delle principali architetture e algoritmi utilizzati nelle moderne applicazioni di intelligenza artificiale. Capacità di applicare conoscenza e comprensioneLo studente sarà in grado di modellare, implementare e ottimizzare sistemi di apprendimento automatico avanzato utilizzando framework software diffusi. Sarà inoltre capace di applicare tali modelli a diversi ambiti applicativi, come riconoscimento di immagini, elaborazione del linguaggio naturale e sistemi di raccomandazione, con attenzione alla qualità e all'efficienza dei risultati. Autonomia di giudizioLo studente svilupperà la capacità critica necessaria per valutare le scelte progettuali e metodologiche adottate nei modelli di apprendimento automatico avanzato, comprendendone vantaggi e limiti in relazione ai contesti applicativi. Sarà inoltre in grado di interpretare i risultati ottenuti alla luce degli obiettivi e dei vincoli specifici del problema affrontato. Abilità comunicativeLo studente saprà presentare in modo chiaro ed efficace le soluzioni sviluppate, argomentandone le scelte progettuali e illustrandone i risultati attraverso strumenti di visualizzazione, report tecnici e discussione orale, utilizzando un linguaggio appropriato al contesto scientifico e professionale. Capacità di apprendimentoIl corso fornirà allo studente gli strumenti teorici e pratici necessari per approfondire autonomamente temi di frontiera nel campo dell’apprendimento automatico, permettendo di aggiornare costantemente le proprie competenze in un ambito in continua evoluzione.

Programma

Tecniche di apprendimento per di reti deep: Funzioni obiettivo Funzioni di attivazione Regolarizzazione Ottimizzazione basata sul gradiente Focus su reti deep: Autoencoders Reti neurali convoluzionali Reti ricorrenti e ricorsive Transformers Training paradigms: Supervised learning Unsupervised learning Reinforcement learning Self-supervised learning

Modalità d'esame

Sono previste due diverse modalità d'esame: Esistono due modalità d’esame alternative e mutuamente esclusive. Modalità con Assignment (per gli studenti frequentanti) VALIDA SOLO PER LA SESSIONE INVERNALE Assignment [6 punti] – Gli assignment saranno svolti in aula!!!!Prova scritta [16 punti]Progetto/Approfondimento [10 punti] Modalità senza Assignment Progetto [10 punti]Prova scritta [16 punti]Esame orale / Domande aperte [4 punti] L'esame scritto, sarà volto alla valutazione della conoscenza dei concetti fondamentali, la comprensione generale, la capacità di argomentazione e la conoscenza specifica dei modelli e delle tecniche presentate a lezione. Il progetto/approfondimento dovrà essere svolto in gruppi di 2 o 3 persone e sarà valutato rispetto a: – Un report strutturato Una presentazione orale del progetto o dell'approfondimento volta anche a valutare le capacità di argomentazione.

Testi di riferimento

Ian Goodfellow and Yoshua Bengio and Aaron Courville, Deep Learning, MIT Press, 2016. http://www.deeplearningbook.org Ulteriore materiale didattico sarà reso disponibile sulla piattaforma di e-learning.

Codice insegnamento 2526-2-F1801Q151

Artificial Intelligence 2° anno · 6 CFU · INF/01 · 0 file

L'obiettivo del corso è consentire agli studenti di padroneggiare le conoscenze di base e gli strumenti necessari per comprendere, utilizzare e creare sistemi di Intelligenza Artificiale (IA), insieme alla capacità di…

Scheda dell'insegnamento

Obiettivi formativi

L'obiettivo del corso è consentire agli studenti di padroneggiare le conoscenze di base e gli strumenti necessari per comprendere, utilizzare e creare sistemi di Intelligenza Artificiale (IA), insieme alla capacità di analizzare diverse classi di problemi e soluzioni basate sull'IA. Un'attenzione particolare sarà dedicata all'intersezione tra apprendimento automatico, con particolare considerazione per i modelli del linguaggio di grandi dimensioni (LLM), e sistemi multi-agente e basati sulla conoscenza, adottando una prospettiva spesso definita come IA neuro-simbolica. Il corso ha un duplice obiettivo: Fornire una panoramica della disciplina incentrata sul concetto di agente intelligente, consentendo agli studenti di inquadrare criticamente problemi, soluzioni e approcci metodologici specifici all'interno dello sviluppo di sistemi intelligenti. Fornire un'esplorazione approfondita di alcuni temi e soluzioni di particolare importanza per lo sviluppo dei sistemi intelligenti oggi, ovvero: 1) IA autonoma, 2) IA incarnata e affettiva, 3) IA basata sulla conoscenza.

Programma

Introduzione: apprendimento e ragionamento nell'Intelligenza Artificiale; interpretazione, ragionamento, previsione, controllo; il concetto di agente autonomo (definizione, classificazione, comportamento, modelli di agenti con riflessi semplici, con memoria, basati sugli obiettivi, basati sull'utilità). Modelli e meccanismi di interazione nei Sistemi Multi-Agente (MAS): intelligenza artificiale collettiva e sistemi complessi; modellazione, simulazione, analisi dei comportamenti auto-organizzanti. Agenti conversazionali e modelli d’interazione multi-agente: modellazione, simulazione, analisi dei comportamenti. integrazione di LLM in multi-agent systems. Dalla rappresentazione della conoscenza all'apprendimento di rappresentazioni dai dati: basi di conoscenza, knowledge graph e ontologie; apprendimento di rappresentazioni linguistiche, word embeddings e modelli del linguaggio di grandi dimensioni (LLM), ad es. BERT, GPT; ragionamento nei LLM; rischi e questioni etiche nei LLM. Costruzione e sfruttamento delle basi di conoscenza con LLM: estrazione di informazioni dai testi (Named Entity Recognition, Named Entity Linking, introduzione all'estrazione di relazioni); estrazione di informazioni dai dati tabellari (comprensione e annotazione dei dati tabulari); Retrieval Augmented Generation (RAG) con informazioni da basi di conoscenza e dati annotati. Apprendimento di rappresentazioni di knowledge graph mediante reti neurali: Knowledge Graph Embedding; framework di IA basati sull'integrazione neuro-simbolica (Logic Tensor Network).

Modalità d'esame

La valutazione finale è determinata dalla combinazione dei risultati ottenuti in due prove indipendenti. Progetto di corso e presentazione orale Gli studenti sono tenuti a realizzare un progetto, individualmente o in piccoli gruppi, dedicato a uno specifico argomento trattato nel corso o strettamente collegato ai suoi contenuti. Il progetto ha l’obiettivo di consentire un approfondimento teorico e/o un’esperienza pratica su un tema selezionato dell’Intelligenza Artificiale. Il progetto viene valutato attraverso una presentazione orale della durata di circa 20 minuti, supportata da slide. Ove opportuno, la presentazione può includere una breve dimostrazione del sistema sviluppato o dei risultati sperimentali ottenuti. La valutazione tiene conto di: la rilevanza del progetto rispetto ai temi del corso; la correttezza metodologica dell’approccio adottato, in relazione agli obiettivi di un progetto d’esame; il livello di padronanza dell’argomento dimostrato durante la presentazione. Particolare rilievo è attribuito alla capacità degli studenti di rispondere alle domande e discutere criticamente il proprio lavoro durante la sessione di domande e risposte. Presentazione di un articolo scientifico durante il corso Nel corso del semestre è prevista una prova intermedia consistente nella presentazione di un articolo scientifico pertinente agli argomenti dell’insegnamento. La presentazione può essere svolta individualmente o in piccoli gruppi ed è valutata sulla base della comprensione del lavoro presentato, della qualità dell’esposizione e della capacità di discutere criticamente metodi e risultati illustrati nell’articolo.

Testi di riferimento

Libri di testo: S.J. Russell, P. Norvig, “Intelligenza Artificiale: un approccio moderno“, 2a edizione, Pearson - Prentice Hall, 2005 (volume 1) J. Ferber, Multi-agent systems: An introduction to distributed artificial intelligence, Addison-Wesley Professional, 1999: sintesi a dispense disponibile sull’e.learning del Corso. Libri consigliati: C. Cornoldi, L'intelligenza, Il Mulino Ed., 2009. Cesare Cornoldi. Formicai, imperi, cervelli: introduzione alla scienza della Complessità (Il Mulino, 2007), pp. 235. Grigoris Antoniou, Paul Groth, Frank van Harmelen, Rinke Hoekstra. A Semantic Web Primer (Information Systems) third edition. The MIT Press; third edition edition (August 24, 2012), pp. 288.

Codice insegnamento 2526-2-F1801Q155

Causal Networks 2° anno · 6 CFU · INF/01 · 0 file

Il corso mira a fornire un’introduzione graduale all’inferenza causale e in particolare alle reti causali e ai modelli causali strutturali. In particolare, il corso fornisce forti motivazioni e perché, allo stato…

Scheda dell'insegnamento

Obiettivi formativi

Il corso mira a fornire un’introduzione graduale all’inferenza causale e in particolare alle reti causali e ai modelli causali strutturali. In particolare, il corso fornisce forti motivazioni e perché, allo stato dell’arte attuale, i metodi di apprendimento automatico hanno bisogno della causalità e di strumenti di modellazione causale per affrontare correttamente e risolvere efficacemente problemi di decisione in condizioni di incertezza, Inoltre, il corso fornisce strumenti matematici e strumenti software per condurre ragionamento causale (DdD 1, DdD 2).Inoltre, l'organizzazione della prova d'esame, tramite la realizzazione di un programma e la presentazione di un articilo scientifico assegnato da parte del docente consentirà al candidato di sviluppare capacità critica (DdD 3), di comunicazione (DdD 4), mentre la disponibilià di materiale da leggere, suggerito dal docente durante il corso, consentirà al candidato di proseguire in modo autonomo lo studio e l'approfondimento della materia (DdD 5).

Programma

Introduzione alla causalità e perché la causalità è importante Potential Outcomes; il problema fondamentale dell’inferenza causale, ITE, ATE, proprietà principali come ignorabilità, interscambiabilità, … Reti bayesiane; definizione, collider, catena e forca, fattorizzazione, … Modelli causali; do.operator, aggiustamento del backdoor, modelli causali strutturali. Sperimentazioni controllate randomizzate; comparabilità e bilanciamento delle covariate, interscambiabilità, nessun percorso backdoor. Identificazione non parametrica; aggiustamento del frontdoor, identificazione dalla struttura del grafo. Stima; modellizzazione condizionale dell’outcome, modellizzazione causale condizionale raggruppata, punteggio di propensione e pesatura della probabilità inversa. Confondimento non osservato; nessun vincolo di assunzioni, selezione ottimale del trattamento, analisi di sensibilità. Variabili strumentali; identificazione non parametrica di ATE, identificazione non parametrica di ATE locale. Causal discovery da dati osservazionali; algoritmi basati su vincoli e basati su punteggio. Causal discovery da dati sperimentali; interventi strutturali, interventi parametrici, equivalenza di Markov di intervento. Trasferimento e trasportabilità. Controfattuali

Modalità d'esame

L'esame è strutturato come segue: Project work; Lo studente è invitato a sviluppare un programma software che implementi un algoritmo descritto in un articolo scientifico assegnato dal docente. (Assegna un massimo di 10 punti). Colloquio sulla relazione di laboratorio; Sui temi non presentati direttamente durante il corso. In particolare, presentazione orale di 15 minuti in cui vengono riassunti i contenuti di un articolo scientifico della letteratura specializzata (assegna un massimo di 13 punti) e successiva discussione sugli argomenti principali del corso (assegna un massimo di 10 punti). la lode e' assegnata con voto oltre 31 Non sono previste prove intermedie.

Testi di riferimento

Slides del docente e materiale di lettura suggerito dal docente

Codice insegnamento 2526-2-F1801Q161

Cloud Computing 2° anno · 6 CFU · INF/01 · 0 file

Conoscenza e capacità di comprensione Al termine dell'insegnamento, lo studente sarà in grado di: Comprendere i principi fondamentali del Cloud Computing e delle architetture distribuite service-oriented Conoscere…

Scheda dell'insegnamento

Obiettivi formativi

Conoscenza e capacità di comprensione Al termine dell'insegnamento, lo studente sarà in grado di: Comprendere i principi fondamentali del Cloud Computing e delle architetture distribuite service-oriented Conoscere l'evoluzione dell'Internet e del Web e il paradigma della convergenza tra network, dispositivi e applicazioni Padroneggiare i concetti base dello stile architetturale REST (Web API) e le sue applicazioni nel Web of Services, Web of Data e Web of Things Comprendere i modelli e i principi dei sistemi service-oriented (SOA) e la loro evoluzione verso architetture XaaS (Everything-as-a-Service) Conoscere i principi del Cloud e Fog Computing e il loro impatto sulle organizzazioni e sulla progettazione di soluzioni business Comprendere i concetti fondamentali della virtualizzazione e delle tecnologie container-based Conoscenza e capacità di comprensione applicate Al termine dell'insegnamento, lo studente sarà in grado di: Progettare e sviluppare applicazioni distribuite basate su architetture a microservizi Implementare soluzioni pratiche utilizzando tecnologie di containerizzazione come Docker Gestire servizi e workload in esecuzione utilizzando piattaforme di orchestrazione come Kubernetes Applicare pattern architetturali per microservizi in contesti reali Sviluppare ecosistemi "smart" (smart city, smart building, smart mobility) utilizzando architetture service-oriented Operare sistemi applicativi basati su microservizi e tecnologie container Implementare principi di monitoraggio, deployment scalabile e sicurezza in ambienti distribuiti Competenze trasversali Autonomia di giudizio: Il corso sviluppa la capacità di valutare criticamente le diverse soluzioni architetturali per sistemi distribuiti, scegliendo gli approcci più appropriati in base ai requisiti specifici del contesto applicativo, attraverso esercitazioni pratiche e analisi di casi di studio. Abilità comunicative: Gli studenti sviluppano competenze comunicative attraverso la partecipazione attiva alle sessioni di laboratorio, la presentazione di soluzioni tecniche e la collaborazione in progetti di gruppo, acquisendo la capacità di illustrare soluzioni architetturali complesse a diversi stakeholder. Capacità di apprendere: Il corso fornisce agli studenti le basi metodologiche e gli strumenti concettuali per continuare autonomamente l'approfondimento delle tecnologie emergenti nel campo del Cloud Computing e dei sistemi distribuiti, attraverso l'accesso a materiali didattici interattivi e risorse aggiornate disponibili sulla piattaforma e-learning.

Programma

Introduzione al corso. Evoluzione di Internet e del Web: convergenza di reti, device e applicazioni. Il modello architetturale REST (Web API): Web of Services, Web of Data, e Web of Things. Sistemi service-oriented: Definizione di servizio, modelli organizzativi a servizi, architettura dei sistemi orientati ai servizi (SOA). Processi di business e servizi. Modelli e principi di cloud e fog computing e loro impatto sul piano organizzativo e di architettura delle soluzioni: i modelli di "system of records" e "system of engagement". Cloud Computing: concetti fondamentali, virtualizzazione. Architetture XaaS (anything-as-a-service). Architetture a servizi per ecosistemi “smart”: smart city, smart building, smart mobility, ecc. Principi di interoperabilità di IoT e altri tipi di sistemi. Architetture a microservizi: concetti fondamentali, pattern architetturali. Modelli di sviluppo DevOps (cenni). Architetture a container: concetti fondamentali, pattern architetturali. Principi di monitoring, deployment at scale e sicurezza (cenni). Laboratorio: Progettazione e realizzazione di applicazioni a microservizi in container con tecnologia Docker. Gestione dei servizi e del carico a run-time con Kubernates.

Modalità d'esame

L'esame consta di una prova scritta al terminale con domande aperte e chiuse (su argomenti di lezione e di laboratorio) del valore di punti 28. La prova consiste in: a) domande sulle nozioni presentate b) domande di ragionamento e deduzione c) risoluzione di esercizi che richiedono lo sviluppo di una soluzione ad un problema assegnato Struttura della prova scritta: - parte generale: 10 domande chiuse + 2 aperte [10*2+2*4=28 punti) Chi ha frequentato i laboratori può ottenere 5 punti supplementari così assegnati: 1 punto per la frequenza (>=75%) 1 punto per la partecipazione attiva (svolgimento delle esercitazioni in aula) 3 punti per lo svolgimento dell'esercizio finale (concordato con il docente) L'esame può essere integrato da una prova orale su richiesta del docente e/o dello studente. La prova orale può determinare un incremento o un decremento del voto dello scritto. Prove in itinere La prova scritta del primo appello può essere sostituita dallo svolgimento di due prove in itinere. Ciascuna prova è composta da domande aperte e chiuse, + semplici esercizi sugli argomenti del laboratorio per complessivi 33 punti. L'accesso alla seconda prova si ottiene con un punteggio maggiore o uguale a 18 punti nella prima prova. Il voto della prova scritta è dato dalla media delle due prove. Non sono previste prove di recupero. VOTO FINALE = VOTO PROVA SCRITTA + PUNTI LABORATORIO (se frequentato) + (eventuale integrazione orale)

Testi di riferimento

Non c’è un unico testo di riferimento. Verranno indicati articoli e risorse sul sito di elearning.

Codice insegnamento 2526-2-F1801Q157

Computer Security 2° anno · 6 CFU · INF/01 · 0 file

Conoscenza e comprensione: Tendenze correnti nel settore sicurezza informatica architetture crittografiche a chiave simmetrica e a chiave pubblica algoritmi di analisi statica del software il "model checking" per la…

Scheda dell'insegnamento

Obiettivi formativi

Conoscenza e comprensione: Tendenze correnti nel settore sicurezza informatica architetture crittografiche a chiave simmetrica e a chiave pubblica algoritmi di analisi statica del software il "model checking" per la sicurezza Applicare conoscenze e comprensione: Capacità di leggere correttamente le tendenze nel settore sicurezza informatica Uso corretto dei sistemi crittografici Uso di strumenti di analisi statica del software Uso di strumenti di “model checking” per la sicurezza

Programma

1: "Richiamo dei principi alla base della disciplina Sicurezza InformaticaTendenze nel settore della sicurezza informaticaAnalisi di alcuni episodi di attacco informatico recenti e di grande impatto" 2: "Uso dei sistemi crittografici: approccio simmetrico e asimmetricoimplementazioni degli algoritmi crittograficila scelta degli algoritmi crittografici, il contesto in cui inserirli" 3: la crittografia nelle reti senza fili e cellulari 4: "L'analisi statica della sicurezza del software: motivazioni, limitirappresentazioni astratte di alcuni aspetti dell'esecuzionecaso d'suo: analisi statica di vulnerabilità “buffer overflow”" 5: "Analisi tramite “model checking” per la sicurezza: motivazioni, altri usiformalismi di rappresentazione degli stati, logiche per la descrizione di proprietà,esempi di proprietà da modellare per controlli di sicurezza" 6: "strumenti per il “model checking”esempi di uso del model checking per i protocolli su rete e per componenti software" 7 Esercitazione competitiva di attacco a software vulnerabile appositamente predisposto ("Capture the Flag")

Modalità d'esame

La verifica dell'apprendimento comprende una prova scritta (50% del voto finale) e una breve relazione presentata a colloquio orale (50% del voto finale): lo scritto consiste in alcune domande discorsive su una selezione di argomenti presentati a lezione (indicata all'inizio delle lezioni), la relazione deve riguardare attività sperimentali su uno degli argomenti presentati a lezione, scelto dallo studente.

Testi di riferimento

articoli scientifici e divulgativi disponibili in Internet consultazione: Pfleeger, Pfleeger - “Sicurezza in Informatica”, Pearson

Codice insegnamento 2627-2-F1802Q134

Computer and Robot Vision 2° anno · 6 CFU · ING-INF/05 · 0 file

L'insegnamento ha lo scopo di fornire competenze teoriche e pratiche relative al trattamento di dati generati da sensori di acquisizione visivi e di distanza, per analizzare la scena osservata estraendo informazioni…

Scheda dell'insegnamento

Obiettivi formativi

L'insegnamento ha lo scopo di fornire competenze teoriche e pratiche relative al trattamento di dati generati da sensori di acquisizione visivi e di distanza, per analizzare la scena osservata estraendo informazioni sulla sua geometria. Conoscenza e capacità di comprensioneComprendere i fondamenti teorici della percezione visiva, della geometria delle immagini, della stereoscopia e del filtraggio Bayesiano. Conoscenza e capacità di comprensione applicateElaborare e trattare praticamente dati da sensori visivi e di distanza per applicazioni di visione e robotica. Autonomia di giudizioValutare criticamente la qualità dei dati sensoriali e scegliere gli algoritmi più idonei per ricostruire la scena. Abilità comunicativeEsporre e documentare con rigore tecnico e terminologia appropriata i risultati e i modelli di analisi visiva utilizzati. Capacità di apprendereSviluppare l'autonomia metodologica necessaria per aggiornarsi sulle evoluzioni tecnologiche della computer e robot vision.

Programma

Formazione dell'immagine formazione dell'immagine - geometria: modelli geometrici della proiezione, cenno a visione model-based, necessità dell'ottica, lenti sottili, cerchi di sfuocamento e profondità di campo, parametri di proiezione interni ed esterni, FOV (campo di vista), calibrazione dei parametri di proiezione formazione dell'immagine - aspetti tecnologici: sensori limiti e considerazioni. Stereoscopia introduzione alla terminologia, approcci pixel-level e feature-based esempio di algoritmo di ricerca corrispondenze stereoscopiche pixel-level: stereo-matching a correlazione ed utilizzo della multi-risoluzione algoritmi di ricerca corrispondenze stereoscopiche basati su features, con cenno al rilevamento ed alla descrizione delle features geometria epipolare Analisi di sequenze di immagini i differenti problemi, al variare del moto nella scena e dell'osservatore campo di moto immagine e scena equazione di costanza della luminanza e problema della apertura metodi differenziali per la stima del flusso ottico con approccio LSE approcci basati su features problemi di data association e missing information, effetti degli outliers, livello di breakdown, Least Median of Squares, RANSAC Filtraggio Bayesiano sistemi dinamici e filtraggio Bayesiano Kalman filter (KF), extended Kalman filter (EKF) e utilizzo di misture di gaussiane unscented Kalman Filter (UKF) filtraggio non parametrico: cenni ad histogram filter, particle filter (PF) Percezione per robotica mobile autonoma rassegna di cinematiche di diverse basi mobili, Velocity Motion Model ed Odometry Motion Model breve rassegna di sensori di distanza e modello di misura per laser scanners la registrazione di point clouds ed il suo utilizzo in una varietà di problemi di visione robotica problema di localization, approcci EFK-based e PF-based SLAM PF-based (FASTSLAM) ed EKF-based Visual SLAM con approcci basati su inverse depth

Modalità d'esame

L'esame sarà composto da: Una prova scritta suddivisa in due parti (prima parte a metà Novembre circa, seconda a fine corso). In ogni appello sarà possibile sostenere la prova scritta completa). 2 homework assegnati durante il corso. Una prova orale che è di fatto la discussione degli homework e della prova scritta (Ed eventualmente a richiesta dello studente di ulteriori domande sui temi affrontati durante il corso). Un massimo di 3 punti bonus posso essere assegnati tramite la consegna volontaria di un progetto che ricompra una delle attività di laboratorio svolte in aula.

Testi di riferimento

Libri di testo A. Fusiello, "Visione Computazionale: tecniche di ricostruzione tridimensionale", Franco Angeli, 2013 E. Trucco, A. Verri, "Introductory techniques for 3D Computer Vision", Prentice Hall, 1998 S. Thrun, W. Burgard, D. Fox, "Probabilistic Robotics", Mit press, 2005Altro materiale Brevi video (audio e schermo di tablet usato come lavagna, estratti da lezioni di anni precedenti) per ciascun sotto-argomento Ulteriore materiale, disponibile sulla piattaforma elearning Video report e altri documenti disponibili pubblicamente e prodotti da esperti dell'argomento.

Codice insegnamento 2627-2-F1802Q116

Computing Education 2° anno · 6 CFU · INF/01 · 0 file

Conoscenza e capacità di comprensione Lo studente acquisisce conoscenze avanzate sui fondamenti epistemologici dell'informatica come disciplina scolastica, sulle principali teorie dell'apprendimento applicate…

Scheda dell'insegnamento

Obiettivi formativi

Conoscenza e capacità di comprensione Lo studente acquisisce conoscenze avanzate sui fondamenti epistemologici dell'informatica come disciplina scolastica, sulle principali teorie dell'apprendimento applicate all'insegnamento dell'informatica (costruttivismo, costruzionismo, peer instruction) e sui quadri curricolari nazionali e internazionali (Indicazioni Nazionali MIUR, CSTA Standards, DigComp). Comprende la differenza tra informatica come scienza e uso degli strumenti digitali, e sa collocare il pensiero computazionale nel dibattito scientifico internazionale della CS Education.Il corso fornisce le basi teoriche e gli strumenti pratici per l'insegnamento dell'informatica nella scuola. Partendo dai fondamenti della CS Education, si sviluppano competenze di progettazione curricolare, scelta di metodologie didattiche attive e valutazione degli apprendimenti, con riferimenti alle Indicazioni Nazionali e ai percorsi abilitanti per i docenti. Conoscenza e capacità di comprensione applicate Lo studente è in grado di applicare le conoscenze teoriche alla progettazione concreta di percorsi didattici per la scuola secondaria. Sa utilizzare framework operativi come il backward design (Wiggins & McTighe) e la tassonomia di Bloom rivista per l'informatica per costruire unità di apprendimento (UdA) coerenti e verificabili. Sa scegliere e utilizzare strumenti e ambienti di apprendimento appropriati (attività unplugged, Scratch, Python, PRIMM, robotica) in funzione del livello scolastico e degli obiettivi didattici Autonomia di giudizio Lo studente è in grado di valutare criticamente metodologie didattiche, strumenti e risorse per l'insegnamento dell'informatica, argomentando le proprie scelte in relazione al contesto scolastico, al livello degli studenti e agli obiettivi curricolari. Sa riconoscere e affrontare le misconcezioni tipiche nell'apprendimento della programmazione e delle strutture dati, adattando le strategie didattiche di conseguenza. Sviluppa capacità riflessiva sulla propria pratica attraverso i diari riflessivi e il feedback strutturato post micro-teaching. Abilità comunicative Lo studente sa comunicare contenuti informatici in modo chiaro, efficace e adeguato al livello del destinatario (studenti di scuola secondaria di primo e secondo grado). Attraverso il micro-teaching, dimostra la capacità di condurre una lezione strutturata, gestire i tempi, rispondere alle domande degli studenti e adattare la comunicazione al contesto. Sa fornire e ricevere feedback strutturato tra pari, utilizzando griglie di osservazione condivise, e sa redigere relazioni di riflessione sulla propria pratica didattica. Capacità di apprendimento Lo studente sviluppa la capacità di aggiornarsi autonomamente sui temi della CS Education, disciplina in rapida evoluzione, attraverso la lettura critica di articoli di ricerca, la partecipazione a comunità professionali e l'osservazione sul campo (uscite in scuole secondarie). Acquisisce gli strumenti concettuali e metodologici per proseguire la propria formazione professionale continua come docente di informatica, anche in relazione ai percorsi abilitanti all'insegnamento (TFA e percorsi di abilitazione D.Lgs. 36/2022). ObiettiviIl corso fornisce le basi teoriche e gli strumenti pratici per l'insegnamento dell'informatica nella scuola. Partendo daifondamenti della CS Education, si sviluppano competenze di progettazione curricolare, scelta di metodologiedidattiche attive e valutazione degli apprendimenti, con riferimenti alle Indicazioni Nazionali e ai percorsi abilitantiper i docenti.

Programma

Informatica come disciplina scolastica Cos'è l'informatica? Perché insegnarla? Storia e identità della disciplina, differenza tra informatica e uso degli strumenti digitali, il pensiero computazionale e i suoi limiti come concetto ombrello. Keywords: Epistemologia dell'informatica, Pensiero computazionale Informatica vs. digital literacy Teorie dell'apprendimento e didattica attiva Costruttivismo, costruzionismo (Papert), peer instruction (Mazur), flipped classroom. Misconcezioni tipiche degli studenti nell'apprendimento della programmazione e delle strutture dati. Keywords: Papert & Logo, Misconcezioni in programmazione, Peer instruction, Flipped classroom, Pair programming, metodologie di insegnamento unplugged, metodologia PRIMM Progettazione curricolare e UdA Dal curricolo alla singola lezione: framework backward design (Wiggins & McTighe), tassonomia di Bloom rivista per l'informatica, scrittura di obiettivi operativi, scelta dei contenuti per ciclo scolastico. Keywords: Backward design, Tassonomia di Bloom, Indicazioni Nazionali, UdA pratiche, Differenziazione Strumenti e ambienti di apprendimento Attività unplugged (CS Unplugged), ambienti block-based (Scratch, App Inventor), testo (Python), robotica educativa, intelligenza artificiale nella didattica. Criteri di scelta in base a età e obiettivi. Keywords: CS Unplugged, Scratch, Python didattico, Robotica, AI in classe, Accessibilità digitale Valutazione e sviluppo professionale Valutazione formativa e sommativa in informatica, rubriche e portfolio, autovalutazione degli studenti. Micro-teaching: ogni studente conduce una mini-lezione (15 min) ricevendo feedback strutturato. Cenni alla ricerca in CS Education. Keywords: Valutazione autentica, Rubriche, Micro-teaching, Feedback tra pari, CS Education research

Modalità d'esame

Esame orale basato su un esercizio completo di progettazione didattica in informatica. La valutazione sarà cosi suddivisa: Progetto UdA (50%): Lo studente progetta un'unità di apprendimento completa su un argomento di informatica per la scuola secondaria, comprensiva di obiettivi operativi, sequenza delle attività, strumenti scelti e criteri di valutazione degli studenti. Il progetto viene discusso oralmente durante l'esame, dove il candidato motiva le scelte didattiche e risponde a domande critiche del docente. Micro-teaching (30%): Lo studente conduce in aula una mini-lezione di 15–20 minuti su un argomento a scelta, rivolta al docente che simula il ruolo di classe di scuola secondaria. Alla lezione segue una riflessione in cui il candidato analizza punti di forza e criticità della propria performance, tenendo conto del feedback ricevuto. Partecipazione e diari riflessivi (20%): Nel corso delle settimane di lezione, lo studente redige brevi diari riflessivi (circa mezza pagina) dopo le sessioni laboratoriali, documentando cosa ha appreso, cosa lo ha sorpreso e come collegherebbe i contenuti alla propria futura pratica didattica. La valutazione tiene conto sia della regolarità nella consegna sia della profondità della riflessione.

Testi di riferimento

Orit Hazzan, Noa Ragonis, Tami Lapidot. Guide to Teaching Computer Science - An activity based approach. Third edition, Springer Nature Switzerland, 2020, ISBN 978-3-030-39359-5. Slide del corso. Articoli suggeriti dal docente. Altre risorse: Guzdial, M. (2015). Learner-Centered Design of Computing Education. Morgan & Claypool.Wing, J. M. (2006). Computational thinking. CACM, 49(3), 33–35.Wiggins, G. & McTighe, J. (2005). Understanding by Design. ASCD.CSTA K–12 CS Standards (2017, aggiornamento 2022). csteachers.orgCS Unplugged. csunplugged.org — attività unplugged pronte all'uso.MIUR Indicazioni Nazionali per il Liceo Scientifico e gli Istituti Tecnici (Informatica).

Codice insegnamento 2627-2-F1802Q119

Data Analytics 2° anno · 6 CFU · INF/01 · 0 file

I principali obiettivi del corso riguardano l'acquisizione di conoscenze relative alle principali tecniche di analisi di dati, sia strutturati che non strutturati, maturando competenze specifiche di data, networks e text…

Scheda dell'insegnamento

Obiettivi formativi

I principali obiettivi del corso riguardano l'acquisizione di conoscenze relative alle principali tecniche di analisi di dati, sia strutturati che non strutturati, maturando competenze specifiche di data, networks e text analytics. Gli studenti saranno inoltre in grado di progettare e realizzare applicativi per lo sviluppo di specifiche funzionalità di analytics (Python). Gli obiettivi specifici rispetto ai Descrittori di Dublino (DdD) sono i seguenti:1. Conoscenza e capacità di comprensioneLo studente acquisirà: Conoscenze teoriche sulle principali tecniche di analisi dei dati, strutturati e non strutturati; Comprensione dei fondamenti della Teoria dei Grafi e Natural Language Processing (NLP); Conoscenze degli strumenti di visualizzazione. 2. Conoscenza e capacità di comprensione applicateLo studente sarà in grado di: progettare e sviluppare applicazioni di analytics in Python; applicare metodi e modelli appresi per risolvere problemi concreti di data analytics; integrare tecniche di visualizzazione per rappresentare risultati in modo efficace. 3. Autonomia di giudizioLo studente svilupperà la capacità di: valutare criticamente l’efficacia delle tecniche di analytics adottate in funzione del tipo di dato e contesto applicativo; scegliere consapevolmente modelli e strumenti adeguati all’obiettivo analitico; interpretare i risultati sperimentali, analizzando implicazioni e limiti. 4. Abilità comunicativeLo studente sarà in grado di: presentare in modo chiaro e strutturato i risultati delle proprie analisi tecniche; esporre la propria soluzione progettuale durante l’orale e giustificare le scelte metodologiche adottate; lavorare in gruppo nella realizzazione del progetto, contribuendo alla documentazione e alla presentazione. 5. Capacità di apprendere Lo studente sarà in grado di sviluppare capacità autonome di studio attraverso il completamento di assignment facoltativi derivanti da attività di laboratorio focalizzate all'uso di modelli e strumenti di network analytics e Natural Language Processing.

Programma

Teoria dei Grafi Reti statiche e dinamiche: proprietà statistiche per l’analisi strutturale Misure di centralità Clustering su grafi: algoritmi ed applicazioni (community detection) Natural Language Processing Fondamenti dell'elaborazione del linguaggio naturale Modelli linguistici statistici e neurali Word e Sentence Embedding Transformers e meccanismi di attenzione Large Language Models (ELMO, BERT, GPT e LLAMA) Metodi di explainability per i modelli del linguaggio

Modalità d'esame

Esame orale e progetto. Sono assenti prove in itinere intermedie. L'esame orale (max 20 punti) prevede 5 domande di teoria tra gli argomenti del corso elencati nel programma dettagliato. Per ciascuna domanda verrà data una valutazione compresa da 0 a 4 per la corrispondente risposta. Il progetto (max 10 punti) consisterà nello sviluppo di uno strumento di analytics basato su metodi e modelli presentati a lezione. Per ciascun progetto verrà valutato: Metodologia adottata (modelli e metodi): max 3 punti Dimostratore e tecniche di visualizzazione adottate: max 3 punti Analisi dei risultati sperimentali: max 4 punti

Testi di riferimento

Albert-László BARABÁSI. Network science. Cambridge University Press.Cristopher MANNING and Hinrich SCHÜTZE. Foundations of Statistical Natural Language Processing. MIT Press.Daniel Jurafsky and James Martin, "Speech and Language Processing, 2nd Edition", Prentice Hall, 2008.

Codice insegnamento 2526-2-F1801Q104

Data and Computational Biology 2° anno · 6 CFU · INF/01 · 0 file

Il corso "Data and Computational Biology", per la Laurea Magistrale in Informatica, permetterà agli studenti di acquisire conoscenze relative ad alcune delle più importanti tecniche in uso in Bioinformatica e Biologia…

Scheda dell'insegnamento

Obiettivi formativi

Il corso "Data and Computational Biology", per la Laurea Magistrale in Informatica, permetterà agli studenti di acquisire conoscenze relative ad alcune delle più importanti tecniche in uso in Bioinformatica e Biologia Computazionale. Il corso si concentrerà principalmente sugli aspetti di modellazione di sistemi biologici e sull'integrazione di dati sperimentali (espressione genica, proteomica, sequenza). Il corso sarà anche ispirato da alcune delle linee di ricerca presenti nel laboratorio DCB, in particolare la modellazione della progressione dei tumori mediate tecniche di analisi su dati "Single-cells".

Programma

Il programma del corso qui riportato è indicativo e passivo di variazioni. La lista degli argomenti riportati è molto ampia e non sarà necessariamente svolta completamente, oppure altri argomenti saranno aggiunti durante il corso. Rappresentazione di sistemi biologici: modelli e problematiche informatiche. Basi di dati di modelli e reti d'interazione regolatoria, metabolica e di comunicazione intra- ed intercellulare (esempio BioModels e KEGG); formati SBML, KGML e CellML. Uso di sistemi per la simulazione (discreta, continua e stocastica) di modelli regolatori, metabolici e d'interazione intra- ed intercellulare. Algoritmo di Gillespie: potenzialità, limiti e inquadramento con metodi Montecarlo. Modelli spazio-temporali: simulazioni in-latticee simulazioni off-lattice. Modelli Booleani, loro generazione, interpretazione come "reti di interazione". Simulazione multiscala e multicellulare. Integrazione di dati di espressione genica, di sequenza e proteomici nei modelli di simulazione mediante analisi e modellazione statistica delle variazioni e delle progressioni dei fenomeni biologici a livello biomolecolare. Ricostruzione di ordinamenti temporali di campioni sulla base di misure genomiche. Modelli epidemiologici (SIR e derivati)

Modalità d'esame

La verifica del profitto e la valutazione del lavoro svolto dalla studentessa o studente iscritta/o al corso di "Data and Computational Biology" sarà basata sulla partecipazione in classe, sul completamento di compiti in itinere e su una presentazione finale pubblica. La presentazione finale è una prova orale in cui la studentessa o studente esporrà un approfondimento di uno degli argomenti presentati a lezione. L'approfondimento consisterà in un riassunto conciso e fruibile dai colleghi di articoli e artefatti software che servono ad analizzare dati, simulare modelli o fare inferenze su caratteristiche di interesse del fenomeno biomedico studiato.

Testi di riferimento

Diapositive dell'insegnamento distribuite sulla piattaforma Moodle. Molti riferimenti bibliografici si trovano all'interno delle diapositive stesse, specie i più recenti. Alcuni testi utili e suggeriti sono i seguenti. Il primo è molto utile per chi non ha una formazione in biochimica ed in biologia. Lawrence E. Hunter, The Processes of Life, An Introduction to Molecular Biology, MIT Press, 2009 (very much recommended for Computer Scientists) Keener and Sneyd, Mathematical Physiology (Vol I), Spinger, 2009 J Marketa Zvelebil and Jeremy O. Baum, Understanding Bioinformatics, Garland Science, 2008 Weinberg, Biology of Cancer, Garland Science, 2006 Original papers by Gillespie (1976, 1977, 1994) U. Alon, “An Introduction to Systems Biology; Design Principles of Biological Circuits”, Chapman & Hall/CRC, 2007 J. M. Bower, H. Bolouri (eds.), “Computational Modeling of Genetic and Biochemical Networks”, MIT Press, 2001 R. Schwartz, “Biological Modeling and Simulation”, MIT Press, 2008

Codice insegnamento 2526-2-F1801Q153

Design Lab 2° anno · 6 CFU · INF/01 · 0 file

Conoscenza e capacità di comprensione (DdD 1): conoscenza dei metodi agili e dei principi di automazione dei processi software. Conoscenza e capacità di comprensione applicate (DdD 2): Capacità di sviluppare secondo i…

Scheda dell'insegnamento

Obiettivi formativi

Conoscenza e capacità di comprensione (DdD 1): conoscenza dei metodi agili e dei principi di automazione dei processi software. Conoscenza e capacità di comprensione applicate (DdD 2): Capacità di sviluppare secondo i principi agili un sistema informatico introducendo un adeguato livello di automazione.

Programma

Il programma consiste di una serie di lezioni iniziali sull'uso di Git, sui metodi agili e su Scrum a cui fa seguito una serie di attività di tipo sperimentale organizzate in iterazioni secondo la metodologia agile Scrum. Argomenti delle Lezioni Utilizzo di Git e Trello Metodi agili Scrittura di storie Scrum Automazione Attività di laboratorio Esecuzione di due iterazioni agili, seguendo pratiche e rituali Svolgimento degli incontri di revisione di fine iterazione (dimostrazione agli stakeholder e revisione tecnica)

Modalità d'esame

Consegna del progetto e discussioni (prove orali) svolte a fine di ciascuna iterazione per verificare la corretta comprensione del metodo di sviluppo.

Testi di riferimento

Videolezioni, articoli e libri. In aggiunta materiale scelto da ciascun gruppo con l'aiuto dei docenti in funzione dello specifico dominio applicativo.

Codice insegnamento 2627-2-F1802Q150

Evolution of Software Systems and Reverse Engineering 2° anno · 6 CFU · ING-INF/05 · 0 file

Lo studente acquisirà competenze relative alle problematiche principali dell'evoluzione del software e della reverse engineering, sarà in grado di effettuare analisi empiriche del software e utilizzare diversi…

Scheda dell'insegnamento

Obiettivi formativi

Lo studente acquisirà competenze relative alle problematiche principali dell'evoluzione del software e della reverse engineering, sarà in grado di effettuare analisi empiriche del software e utilizzare diversi strumenti di reverse engineering, di supporto alla comprensione, evoluzione e manutenzione del software e strumenti per la gestione del debito tecnico. Conoscenza e capacità di comprensioneAl termine del corso, lo studente avrà acquisito una solida conoscenza sulla manutenzione ed evoluzione di progetti software complessi e sulla gestione del debito tecnico.Conoscenza e capacità di comprensione applicataLo studente sarà in grado di effettuare diverse analisi del software, anche analisi di correlazione fra determinati problemi del software e analisi di predizione. Ogni studente dovrà conoscere ed utilizzare strumenti /tools molto noti nelle aziende per la comprensione del codice, gestione del debito tecnico e reverse engineering.Autonomia di giudizioIl corso promuove lo sviluppo del pensiero critico attraverso la valutazione comparativa di strumenti per l’analisi e manutenzione del software, e attraverso il contributo individuale nel progetto d’esame. Gli studenti avranno anche la possibilità di seguire uno o due seminari di aziende su tematiche di grande interesse per l’evoluzione dei sistemi software e reverse engineering che stimoleranno ulteriormente le capacità di giudizio.Abilità comunicativeLo studente sarà in grado di comunicare efficacemente attraverso una o due presentazione individuali in aula, attraverso il progetto d’esame relativo all’utilizzo di strumenti visti a lezione per effettuare analisi empiriche di progetti software, attraverso l’elaborato prodotto sul progetto d’esame e la prova individuale orale.Capacità di apprendereIl corso promuove lo sviluppo dell’autonomia nello studio attraverso un approccio didattico attivo. Al termine del percorso, lo studente sarà in grado di approfondire in modo indipendente tematiche avanzate sull’evoluzione e manutenzione del software che possono sfociare anche in una tesi, consolidando così le basi per un apprendimento continuo anche oltre il contesto curriculare.Le tematiche delle tesi possono riguardare ad esempio la valutazione dell’impatto del refactoring di problemi architetturali sulla sicurezza, prestazioni, consumo energetico e su altre metriche di qualità o sulla migrazione verso architetture a microservizi, o sull’utilizzo degli LLM per il riconoscimento e refactoring di problemi architetturali nel codice.

Programma

1 Introduzione alla Software evolution, Reverse Engineering, Sistemi Legacy. Comprensione e manutenzione del software. 2 Tecniche e tools per la Reverse Engineering. 3 Object-oriented patterns per la reverse engineering e reeengineering. 4 Metriche di Qualità del Software, software quality assessment. Application Portfolio Management: tools e tecniche . Modernizazione dei sistemi legacy: Migrazione dei sistemi legacy verso sistemi a microservizi. Tool e tecniche per la software architecture reconstruction. Riconoscimento di antipattern, code smell e architectural smells nel codice, ed il loro refactoring. Impatto delle tecniche di refactoring sulla qualità del codice, sulle prestazioni e sul consumo energetico. Esempi di diverse analisi empiriche: Analisi di correlazione fra diverse metriche di qualità del codice e violazioni/probelmi nel codice. Analisi della predizione di problemi del software attraverso tecniche di machine Learning e data mining. Introduzione a tecniche di hacking, decompiling and code obfuscation per la protezione del codice. Analisi statica e dinamica per la reverse engineering . Tecniche e strumenti per l'identificazione e gestione del Technical Debt. 12.. Utilizzo degli LLM nella reverse engineering e nella valutazione della qualità del codice.

Modalità d'esame

Uno o due task assegnati durante il corso che prevedono una presentazione in aula. Valutazione nel range di 0-3 punti. Un progetto finale singolo o al massimo in due studenti relativo alla sperimentazione di alcuni tool di reverse engineering e/o analisi empiriche sui dati raccolti dai tool utilizzati per il progetto. Valutazione 0-22 punti Discussione orale sul progetto finale. Valutazione 0-8 punti.

Testi di riferimento

Slides del docente, articoli, survey e tutorial forniti dal docente, tesi di laurea e di dottorato svolte presso il laboratorio di ricerca Essere e presso altre Università straniere con cui il laboratorio collabora. Testi: Ingegneria del Software, Sommerville, solo 3 capitoli. Object Oriented Reeengineering patters, Oscar Nierstrasz -Disponibile online La maggior parte del materiale su cui dovrete studiare sarà disponibile online.

Codice insegnamento 2526-2-F1801Q158

Foundations of Game Design 2° anno · 6 CFU · INF/01 · 0 file

L’obiettivo dell’insegnamento è fornire gli strumenti base concettuali e metodologici necessari per la progettazione e lo sviluppo di videogame. L’insegnamento illustra le varie fasi che portano alla realizzazione di…

Scheda dell'insegnamento

Obiettivi formativi

L’obiettivo dell’insegnamento è fornire gli strumenti base concettuali e metodologici necessari per la progettazione e lo sviluppo di videogame. L’insegnamento illustra le varie fasi che portano alla realizzazione di un videogame. Questo processo richiede conoscenze di programmazione, matematica, interazione uomo-macchina, teoria della comunicazione, grafica e intelligenza artificiale, che devono essere opportunamente declinate nell’ambito dei videogame. Conoscenza e capacità di comprensioneSolida comprensione dei principi fondamentali alla base della progettazione e dello sviluppo di videogiochi.Conoscenza approfondita delle principali tecniche e degli algoritmi che costituiscono gli elementi essenziali dei moderni motori di gioco e dei sistemi interattivi. Conoscenza e capacità di comprensione applicateCapacità di tradurre le conoscenze teoriche in soluzioni pratiche per la progettazione e lo sviluppo di un videogioco completo.Abilità nel comprendere e analizzare le scelte progettuali adottate in videogiochi esistenti, valutandone obiettivi e impatto sul gameplay.Competenza nell’utilizzo di Unity per la realizzazione di componenti funzionali e prototipi interattivi di videogiochi. Autonomia di giudizioCapacità di pianificare le diverse fasi di sviluppo di un videogioco e di selezionare in modo critico le tecniche e gli strumenti più appropriati per ciascun contesto progettuale. Abilità comunicativeCapacità di presentare e discutere in modo chiaro e strutturato le soluzioni sviluppate, illustrando sia gli aspetti teorici che quelli implementativi di un videogioco o di sue parti specifiche. Capacità di apprendereAttitudine ad approfondire autonomamente argomenti avanzati legati alla progettazione e alla realizzazione di videogiochi, sviluppando competenze aggiornate in un ambito in continua evoluzione.

Programma

Introduzione: cosa è un videogame, cosa è un game engine Introduzione ai dati 2D e 3D Matematica 3D per i videogame Fondamenti di ingegneria software per videogame Componenti di un game engine Pipeline di rendering Asset, animazioni, collisioni Intelligenza artificiale per videogame Human-computer interface Fondamenti di gameplay Game industry

Modalità d'esame

L’esame è svolto in forma di progetto+orale e si compone di due parti: Progetto Implementazione (max 3 persone) di un piccolo progetto legato ai videogame. Il progetto valuta la capacità dello studente di analizzare ed applicare argomenti e problematiche legate allo sviluppo e progettazione di videogame. Il tema del progetto deve essere concordato preventivamente con i docenti. Orale con domande libere sul contenuto del corso o sugli esercizi lasciati a lezione al fine di valutare il voto finale dell’esame.

Testi di riferimento

I principali libri suggeriti che aiutano ad approfondire gli argomenti delle lezioni/esercitazioni sono:* Jason Gregory, Game Engine Architecture, A K Peters/CRC Press; 3° edizione* Ian Millington, AI for Games, CRC Press; 3° edizione* Eric Lengyel, Mathematics for 3D Game Programming and Computer Graphics, Cengage Learning, Inc

Codice insegnamento 2526-2-F1801Q173

Information Retrieval 2° anno · 6 CFU · INF/01 · 0 file

Conoscenza e capacità di comprensioneL’obiettivo del corso è fornire conoscenze e capacità di comprensione dei principali concetti, modelli e tecniche alla base della progettazione dei sistemi di Information Retrieval,…

Scheda dell'insegnamento

Obiettivi formativi

Conoscenza e capacità di comprensioneL’obiettivo del corso è fornire conoscenze e capacità di comprensione dei principali concetti, modelli e tecniche alla base della progettazione dei sistemi di Information Retrieval, noti anche come motori di ricerca. Il corso introduce l’Information Retrieval come l’area che si occupa dell’accesso automatico a informazioni testuali in risposta ai bisogni informativi degli utenti, espressi attraverso query. Gli studenti acquisiranno conoscenze sulle principali fasi delle pipeline alla base del funzionamento di un sistema di Information Retrieval, tra cui il preprocessing del testo, la rappresentazione del testo, l’indicizzazione, l’elaborazione delle query, il recupero, il ranking e la valutazione. Comprenderanno i principali modelli di recupero utilizzati per stimare la rilevanza dei documenti rispetto a una query utente, inclusi approcci basati su corrispondenza esatta, lessicali, probabilistici, neurali e ibridi. Il corso mostrerà come l’Information Retrieval costituisca una componente fondamentale di tecnologie moderne, tra cui motori di ricerca Web, sistemi di ricerca per domini specifici, Retrieval-Augmented Generation e sistemi conversazionali basati su Large Language Models. Le attività di laboratorio supporteranno la parte teorica del corso attraverso la progettazione, l’implementazione e la valutazione pratica di applicazioni di Information Retrieval mediante software open-source. Durante le attività di laboratorio, gli studenti avranno l’opportunità di affrontare un problema di ricerca reale e di presentare la propria soluzione. Questa attività permetterà agli studenti di applicare le conoscenze acquisite durante il corso e di mettere alla prova la propria capacità di analizzare un problema, compiere scelte tecniche di progettazione e sviluppare una soluzione originale. Capacità di applicare conoscenza e comprensioneAttraverso le lezioni e le attività di laboratorio, gli studenti saranno incoraggiati e valutati rispetto alla loro capacità di applicare le conoscenze acquisite ai temi trattati nel corso. Autonomia di giudizioIl corso mira a promuovere l’autonomia di giudizio e le capacità di analisi critica in relazione alle principali sfide dell’elaborazione del linguaggio naturale e della ricerca di informazioni, nonché ai relativi compiti principali. Tali competenze saranno ulteriormente sviluppate attraverso discussioni in aula e attività di laboratorio. Abilità comunicativeIl corso favorisce lo sviluppo della capacità di comunicare contenuti tecnici, idee, problemi e relative soluzioni in modo chiaro e non ambiguo a diversi tipi di pubblico. Tali abilità saranno sviluppate durante il corso e valutate come parte dell’esame finale, in particolare attraverso la presentazione del progetto. Capacità di apprendimentoIl corso è progettato per fornire sia conoscenze teoriche sia competenze pratiche, offrendo una solida base di partenza per ulteriori studi individuali sui principi della rappresentazione, dell’analisi e del recupero del testo.

Programma

Introduzione all’Information Retrieval e ai sistemi di ricerca. Principali concetti dell’Information Retrieval, motori di ricerca, biblioteche digitali, enterprise search, moderni sistemi di ricerca basati su AI ed esempi di applicazioni dell’Information Retrieval. Preprocessing, rappresentazione e indicizzazione del testo. Tokenizzazione, normalizzazione, stemming, lemmatizzazione, stopword, n-grammi, metadati, campi dei documenti, rappresentazioni bag-of-words, indici invertiti, posting list, indici posizionali, compressione degli indici e pipeline di indicizzazione. Query, rilevanza e retrieval exact-match. Tipi di query, unità documentali, bisogni informativi, intento dell’utente, rilevanza, giudizi di rilevanza, retrieval booleano, operatori booleani, query di frase, ricerca per prossimità e query strutturate. Modelli di ranking lessicale. Frequenza dei termini, inverse document frequency, TF-IDF, modello a spazio vettoriale, similarità coseno, retrieval probabilistico, BM25, parametri di BM25, BM25 con campi e confronto tra TF-IDF e BM25. Valutazione dei sistemi di Information Retrieval. Collezioni di test, topic, query, qrels, giudizi di rilevanza e misure standard di valutazione per l’Information Retrieval. Interazione con l’utente, personalizzazione e ricerca Web. Riformulazione delle query, sessioni di ricerca, comportamento di click, log di ricerca, personalizzazione, ricerca esplorativa, crawling, indicizzazione Web, analisi dei link, PageRank, rilevamento dello spam, freshness e snippet. Ricerca in domini specifici e Learning to Rank. Ricerca scientifica, ricerca biomedica, ricerca legale, enterprise search, ricerca e-commerce, terminologia di dominio, vincoli di dominio, learning to rank, inclusi approcci pointwise, pairwise e listwise, feature di ranking, LambdaMART e apprendimento basato sui click. Rappresentazioni neurali e dense retrieval. Word embedding, embedding contestuali, sentence embedding, document embedding, rappresentazioni basate su transformer, bi-encoder e vector database. Retrieval neurale sparse, dense, ibrido e multi-stage. Learned sparse retrieval, neural lexical matching, metodi in stile SPLADE, retrieval ibrido sparse-dense, fusione degli score, generazione dei candidati, neural reranking, cross-encoder, modelli a late interaction, ranking in stile ColBERT e trade-off tra efficienza ed efficacia. Sistemi di ricerca basati su LLM, RAG e agenti. Riscrittura delle query, espansione delle query, generazione di query sintetiche, reranking basato su LLM, sintesi dei risultati, generazione delle risposte, architettura RAG, chunking, costruzione del contesto, grounding, generazione di citazioni, controllo delle allucinazioni, valutazione dei sistemi RAG, uso di strumenti, ricerca agentica, memoria, agenti Web e sfide di ricerca aperte.

Modalità d'esame

Esame scritto individuale composto da esercizi, domande aperte e domande chiuse relative ai contenuti del corso. La valutazione comprende inoltre un progetto di laboratorio, che potrà essere sviluppato individualmente o in gruppi di massimo tre studenti. L’esame scritto è finalizzato a valutare il livello di comprensione degli aspetti teorici e tecnici di base trattati durante il corso. L’obiettivo del progetto è utilizzare software open-source per sviluppare soluzioni tecnologiche a problemi di ricerca affrontati nel corso. Il progetto si concentrerà su scenari applicativi reali che richiedono agli studenti di progettare, implementare e valutare componenti di sistemi di Information Retrieval introdotti durante il corso.

Testi di riferimento

Christopher D. Manning, Prabhakar Raghavan, and Hinrich Schütze. Introduction to Information Retrieval. Cambridge University Press, 2008. Bhaskar Mitra and Nick Craswell. An Introduction to Neural Information Retrieval. Foundations and Trends in Information Retrieval, Volume 13, Issue 1, 2018.

Codice insegnamento 2526-2-F1801Q110

Interaction Design Lab 2° anno · 6 CFU · INF/01 · 0 file
Internet of Things Lab 2° anno · 6 CFU · INF/01 · 0 file

Conoscenza e comprensioneLo studente acquisirà conoscenze fondamentali sui concetti, le architetture e i protocolli della disciplina Internet of Things (IoT), con particolare attenzione alle tecnologie di…

Scheda dell'insegnamento

Obiettivi formativi

Conoscenza e comprensioneLo studente acquisirà conoscenze fondamentali sui concetti, le architetture e i protocolli della disciplina Internet of Things (IoT), con particolare attenzione alle tecnologie di comunicazione, ai protocolli di messaggistica (quali MQTT e HTTP), ai sensori/attuatori e ai modelli architetturali del Web of Things. Capacità di applicare conoscenza e comprensioneLo studente sarà in grado di progettare e implementare prototipi funzionanti di sistemi IoT, integrando sensori, attuatori e dispositivi embedded con piattaforme middleware, in scenari applicativi reali (es. domotica, smart manufacturing, metering), anche attraverso l’utilizzo di schede hardware come Arduino ed ESP. Autonomia di giudizioLo studente svilupperà la capacità di valutare criticamente le tecnologie e i protocolli adottati per una soluzione IoT, analizzandone efficacia, scalabilità, interoperabilità e adeguatezza rispetto allo scenario applicativo. Abilità comunicativeLo studente sarà in grado di descrivere in modo chiaro ed efficace le soluzioni IoT sviluppate, documentandone il funzionamento, le scelte progettuali e i risultati, sia attraverso presentazioni orali che relazioni tecniche e repository online. Capacità di apprendimentoLo studente maturerà la capacità di approfondire in autonomia nuove tecnologie IoT emergenti e aggiornarsi su standard e strumenti in continua evoluzione, anche grazie all’esperienza pratica acquisita durante il corso.

Programma

IoT Introduction: Overview of IoT concepts, applications, and potential impacts on society and industry. Internet Principles: Fundamental internet technologies that underpin IoT including TCP/IP protocols and DNS. Communication Technologies: Exploration of various communication technologies used in IoT such as WiFi, ZigBee, and cellular networks. Messaging Protocols: Detailed study of IoT messaging protocols including MQTT, CoAP, and HTTP. The Web of Things: Integration of IoT devices with the web; understanding how devices can use web protocols to interact. IoT Boards for Prototyping: Hands-on sessions with popular IoT boards like Arduino and ESP8266 for developing prototypes. Sensors and Actuators: Practical work with various sensors and actuators to collect data and trigger actions. Data Management and Analytics: Techniques for managing and analyzing data from IoT devices, including the use of databases and data analytics tools.

Modalità d'esame

Esame prevede la progettazione e realizzazione di un progetto assegnato dai docenti. Il progetto sarà discusso con una prova orale che potrà comprendere anche domande sulla parte teorica del corso.

Testi di riferimento

Internet of Things: A Hands-on Approach, by Arshdeep Bahga and Vijay Madisetti, 2015, Publisher: Universities Press, ISBN: 978-8173719547 () Building the Web of Things - With examples in Node.js and Raspberry Pi, by Dominique D. Guinard and Vlad M. Trifa, 2016, Publisher: Manning, ISBN: 9781617292682 () GitHub del corso (https://github.com/) Dispense fornite dai docenti durante le lezioni (http://elearning.unimib.it/).

Codice insegnamento 2627-2-F1802Q129

Knowledge Management 2° anno · 6 CFU · INF/01 · 0 file

Lo studente acquisirà specifiche conoscenze e competenze per partecipare in modo critico e propositivo a progetti di sviluppo di soluzioni tecnologiche e organizzative mirate a promuovere la gestione della conoscenza…

Scheda dell'insegnamento

Obiettivi formativi

Lo studente acquisirà specifiche conoscenze e competenze per partecipare in modo critico e propositivo a progetti di sviluppo di soluzioni tecnologiche e organizzative mirate a promuovere la gestione della conoscenza nelle organizzazioni e nelle comunità di pratica. Tra gli aspetti chiave che caratterizzano i domini applicativi nei quali trovano applicazione le tecniche e metodologie della gestione della conoscenza, sono selezionati casi studio riferiti ad approcci alla gestione della conoscenza che valorizzano il ruolo centrale di: interazioni tra membri di comunità di pratica, distribuzione e condivisione della conoscenza.

Programma

Motivazioni, storia e concetti di base del Knowledge Management (KM). Il modello di creazione e conversione della conoscenza di Nonaka e Takeuchi. Le Comunità di Pratica (CoP),introduzione, concetti e dettagli della visione di Wenger Diverse tipologie di CoP: studio di caso in IBM Da Document Management Systems (DMS) a Knowledge Management Systems (KMS). Stimolare la condivisione e la circolazione della conoscenza nelle organizzazioni. Esempio di KMS per supportare organizzazioni in forte mobilità (il prototipo Milk) Il KM e l'eredità dei Knowledge Based Systems (KBS); introduzione, caratteristiche, tipi di problemi affrontati e diversi approcci ai KBS Gli approcci basati su regole e su casi (Rule-Based e Case Based Reasoning) per la rappresentazione e condivisione di conoscenza Diversi approcci alla progettazione: Participatory Design, Interaction Design, Seductive Design Un esempio di Seductive Design e di sistema di supporto alla creazione e circolazione della conoscenza nelle città d'arte (il prototipo Campiello) Uso dei Social Media nelle Organizzazioni Ontologie come strumenti di rappresentazione e condivisione della conoscenza: caratteristiche, pregi e difetti Il concetto di Social Capital e sue influenze sulla creazione e circolazione della conoscenza sia in azienda che nella società Gestione delle competenze (Expertise Modeling): tecnologie ed esempi Tecnologie di supporto alla cittadinanza per una votazione consapevole nei referendum (il sistema ConsiderIt) Presentazione, discussione e confronto di vari casi reali di KMS usati nelle organizzazioni

Modalità d'esame

La verifica dell'apprendimento viene effettuata tramite un colloquio orale.

Testi di riferimento

Prusak, L. Where did knowledge management come from?, IBM Systems Journal, vol.40, n. 4, 2001, pp. 1002-1007. Capitolo 3 del libro:Takeuchi I., Nonaka H., The Knowledge creating Company: How Japanese Companies Create the Dynamics of Innovation, Oxford University Press, 1995. Capitoli 1 e 2 del libro: Wenger, E., Community of Practice: Learning, meaning and identity, Cambridge University Press, Cambridge, MA 1998. (disponibile in italiano on-line). Agostini, A., Albolino, S. Boselli, R., De Michelis, G, De Paoli, F., Dondi R. Stimulating Knowledge Discovery and Sharing, In Proceeding of GROUP’03, November 9–12, 2003, Sanibel Island, Florida, USA, ACM. Treem J.W., Leonardi P.M. Social Media Use in Organizations: Exploring the Affordances of Visibility, Editability, Persistence, and Association. Communication Yearbook, 36, pp. 143-189 S. Bandini, “KM: l’eredità dei sistemi esperti” Mondo Digitale, 2008 OECD: Organisation for Economic Co-operation and Development; Global Science Forum Report on Applications of Complexity Science for Public Policy: New Tools for Finding Unanticipated Consequences and Unrealized Opportunities, 2008 - Catherine Roussey, Francois Pinet, Myoung Ah Kang, Oscar Corcho, Ontologies in Urban Development Projects, Advanced Information and Knowledge Processing, DOI 10.1007/978-0-85729-724-2_2, Springer-Verlag London Limited 2011 F Kensing, J Blomberg, Participatory Design: Issues and Concerns, Computer Supported Cooperative Work 7: 167–185, 1998, Kluwer Academic Publishers. Capitoli 1, 2, 4, 5 del libro: Dan Saffer, Designing for Interaction, 2nd Edition, New Riders oppure, in Italiano, Dan Saffer, Design dell’Interazione, Pearson Education Agostini, A., De Michelis, G., Susani, M. From user participation to user seduction in the design of innovative user-centered systems. In Proceedings of the Fourth International Conference on the Design of Cooperative Systems, Sophia Antipolis , France, 23-26 May 2000. Yimam, D., Kobsa, A. DEMOIR: A Hybrid Architecture for Expertise Modeling and Recommender Systems 2000, IEEE La documentazione completa, che contiene ulteriori articoli scientifici, verrà fornita durante il corso e messa a disposizione on line (on-line saranno messi a disposizione anche i lucidi delle lezioni frontali e delle esercitazioni che sintetizzano i contenuti del corso)

Codice insegnamento 2627-2-F1802Q125

Large Scale Data Management 2° anno · 6 CFU · ING-INF/05 · 0 file

Lo studente acquisirà competenze relative alle attività di (i) analisi e riconciliazione di sorgenti operazionali eterogenee, (ii) progettazione concettuale relativa alla realizzazione di schemi di fatto, (iii)…

Scheda dell'insegnamento

Obiettivi formativi

Lo studente acquisirà competenze relative alle attività di (i) analisi e riconciliazione di sorgenti operazionali eterogenee, (ii) progettazione concettuale relativa alla realizzazione di schemi di fatto, (iii) utilizzo architetture di big data per la gestione e l'analisi dei dati

Programma

1 "Analisi e riconciliazione di sorgenti operazionali eterogenee: a. tecniche per la comparazione e l’allineamento di schemi concettuali; b. tecniche per integrazione e ristrutturazione di schemi concettuali. 2 Progettazione concettuale relativa alla realizzazione di schemi di fatto: a. il Dimensional Fact Model come modello concettuale grafico per la definizione di schemi di fatto; b. metodologia per la definizione di schemi di fatto a partire da schemi E-R. 3 Big data a. architetture data lake, data lakehouse b. framework di analisi dati: Apache Spark d. Architetture per dati in near real time e. modelli per big data: apache iceberg, arrow, parquet f. Data Lakehouse Cenni di data visualization a. cenni alle principali componenti della data visualization e al data drive storytelling b. buone pratiche ed errori comuni nella realizzazione di interfacce visive LLM e architetture ad agenti a. uso di AI generativa per la gestione dati b. architetture multiagenti per la gestione di grandi volumi di dati

Modalità d'esame

sviluppo di un progetto di datawarehousing o di big data analisys e relativa discussione

Testi di riferimento

Matteo Golfarelli e Stefano Rizzi. Data Warehouse – Teoria e pratica della progettazione (seconda edizione). McGraw-Hill.

Codice insegnamento 2526-2-F1801Q147

Large-Scale Graph Algorithms 2° anno · 6 CFU · INF/01 · 0 file

Al termine dell’insegnamento, gli studenti avranno conoscenze nel campo della teoria dei grafi ed in particolare su algoritmi efficienti per alcuni problemi fondamentali. Inoltre avranno conoscenze relative a complessità…

Scheda dell'insegnamento

Obiettivi formativi

Al termine dell’insegnamento, gli studenti avranno conoscenze nel campo della teoria dei grafi ed in particolare su algoritmi efficienti per alcuni problemi fondamentali. Inoltre avranno conoscenze relative a complessità computazionale e alle tecniche algoritmiche associate, e competenze relative all’implementazione di algoritmi efficienti, anche euristici, su grafi di grandi dimensioni. Conoscenza e capacità di comprensione Questo insegnamento permetterà di comprendere come rappresentare grafi, anche di grandi dimensioni. Inoltre gli studenti acquisiranno conoscenza dei principali algoritmi su grafi, incluse alcune tecniche euristiche necessarie per trattare grafi di grandi dimensioni. Conoscenza e capacità di comprensione applicate Alla fine dell'insegnamento gli studenti saranno in grado di analizzare un problema concreto, modellarlo come problema computazionale su grafi, selezionare la tecnica algoritmica più adatta per la soluzione del problema. Autonomia di giudizio Gli studenti saranno in gradi di comprendere quali algoritmi utillizzare per risolvere problemi specifici Abilità comunicative Gli studenti saranno in grado di descrivere in termini formali una dimostrazione, un algoritmo, la modellazione matematica di un problema. Capacità di apprendere Gli studenti saranno in grado di apprendere nuove tecniche algoritmiche

Programma

Grafi: definizioni fondamentali. Rappresentazioni di grafi: liste di adiacenza, matrice di adiacenza. Strutture dati efficienti e succinte per le rappresentazioni. Problemi su grafi Calcolo delle componenti connesse, biconnesse, triconnesse Matching Tagli e flussi Copertura minima, cricca massima, insieme indipendente massimo Cammino di Eulero, cammino Hamiltoniano e TSP Colorazione di grafi Isomorfismo di grafi Compressione di grafi Grafi planari e disegno di grafi Tecniche euristiche e complessità computazionale Complessità parametrica. Algoritmi per la copertura di grafi Risolutori SAT Algoritmo di Lin-Kernighan Simulated Annealing Complessità di approssimazione. Particle Swarm Optimization Algoritmi Streaming Ant Colony

Modalità d'esame

L'esame consiste in una prova orale con domande aperte su tutti gli argomenti trattati nel corso. La prova verrà valutata principalmente in base alla correttezza e alla completezza delle risposte fornite. Criteri secondari di valutazione saranno la capacità di contestualizzare le risposte rispetto agli altri argomenti trattati nell'insegnamento e all'utilizzo corretto dei formalismi. Non sono previste prove in itinere.Si ricorda che è necessario essere iscritti alle prove d'esame tramite segreterie online. Non ci saranno eccezioni al riguardo.

Testi di riferimento

Il testo utilizzato è Graph Algorithms, una collezione curata di articoli di Wikipedia. I docenti non distribuiranno il materiale utilizzato in classe. Gli studenti sono incoraggiati a seguire le lezioni e prendere appunti.

Codice insegnamento 2526-2-F1801Q162

Parallel Computing 2° anno · 6 CFU · INF/01 · 0 file

Lo studente apprende i paradigmi computazionali delle applicazioni parallele. Per completare l’analisi di tali applicazioni, vengono introdotte ed utilizzate le metriche di prestazione nelle attività di esercitazione…

Scheda dell'insegnamento

Obiettivi formativi

Lo studente apprende i paradigmi computazionali delle applicazioni parallele. Per completare l’analisi di tali applicazioni, vengono introdotte ed utilizzate le metriche di prestazione nelle attività di esercitazione su macchine parallele - OpenMP, MPI e CUDA - con gli algoritmi presentati a lezione.Seguendo gli indicatori di Dublino, gli sudenti sviluppano: Conoscenza e capacita di comprensione - vengono illustrati e discussi i principi su cui si basano i sistemi di calcolo parallelo; Conoscenza e capacita di comprensione applicate: gli studenti applicano i principi a casi reali, con esercitazioni pratiche e progetti specifici; Autonomia di giudizio: vengono forniti gli strumenti e le metriche per sviluppare il calcolo parallelo; Abilita comunicative: vengono introdotti e discussi i termini specifici della disciplina, la prova finale consiste nell'approfondire ed illustrare particolari tematiche del corso; Capacita di apprendere: gli studenti approfondiscono i temi legati al calcolo parallelo con progetti mirati, svolti individualmente o in gruppo.

Programma

1. Considerazioni di base e misura delle prestazioni. 2. La classificazione delle architetture parallele ed i paradigmi computazionali, con approfondimento delle architetture SIMD e MIMD. 3. Tipologie di interconnessione e modelli di comunicazione. 4. Esempi di piattaforme a memoria condivisa con cenni alle architetture multicore 5. Esempi di piattaforma distribuita: cluster di PC/workstation e su network locale e dedicato, sistemi con acceleratori grafici. 6. Tecniche di parallelizzazione: tipi di decomposizione, mapping, bilanciamento del carico e tecniche di ottimizzazione. 7. Inibitori della parallelizzazione 8. Operazioni di comunicazione base 9. Modelli analitici di programmi paralleli 10. Cenni su alcuni algoritmi paralleli significativi 11. Programmazione su piattaforme a memoria condivisa, introduzione a OpenMP 12. Uso di librerie Message Passing Interface (MPI) quale ambiente di programmazione per la realizzazione di algoritmi paralleli su architetture multiprocessore: inizializzazione, operazioni globali, modularità 13. L’architettura degli acceleratori grafici e i relativi paradigmi computazionali 14. Introduzione all’ambiente di programmazione su acceleratori grafici: ambiente CUDA 15. Filesystem paralleli 16. presentazione del framework Hadoop: il modello Map-Reduce

Modalità d'esame

Esame orale. La verifica comprende attività seminariale a cura degli studenti e la discussione di un progetto su un particolare tema affrontato durante il corso, con lo sviluppo di codice e analisi delle prestazioni su architetture parallele. Il voto è determinato nel seguente modo: 40% attività seminariale, 60% progetto.

Testi di riferimento

1. R. Ansorge, Programming in Parallel with CUDA: A Practical Guide, Cambridge University Press, 2022 2. A. Grama, A. Gupta, G. Karypis, V. Kumar.Introduction to Parallel Computing, 2°Ed., Addison-Wesley, 2003. 3. CUDA C++ Programming Guide - Design Guide, v11.2, NVIDIA docs, 2021 4. T. White, Hadoop: The Definitive Guide, O’Reilly, 2012. Materiale disponibile sulla piattaforma di elearning del corso: lezioni, articoli, esercizi di riferimento.

Codice insegnamento 2627-2-F1802Q137

Self-Adaptive Systems 2° anno · 6 CFU · INF/01 · 0 file

Lo studente acquisirà competenze relative alle problematiche principali della progettazione e sviluppo di sistemi self-adaptive, sistemi che sono in grado di gestire incertezze/variabilità e effettuare compromessi tra…

Scheda dell'insegnamento

Obiettivi formativi

Lo studente acquisirà competenze relative alle problematiche principali della progettazione e sviluppo di sistemi self-adaptive, sistemi che sono in grado di gestire incertezze/variabilità e effettuare compromessi tra vari attributi di qualità in fase di esecuzione. Lo studente sarà in grado di valutare i vantaggi di un sistema self-adaptive e l’effort necessario per il suo sviluppo. Al termine del corso, gli studenti saranno in grado di: comprendere e spiegare il concetto di self-adaptive (terminologia, principi, caratteristiche principali) e i suoi utilizzi in diversi ambiti applicativi (Conoscenza e capacità di comprensione); descrivere e sviluppare cicli di adattamento basati sul modello di riferimento MAPE-K: monitorandone il contesto di esecuzione, analizzando le informazioni raccolte per individuare le esigenze di adattamento, pianificando strategie di adattamento ed eseguendo le strategie di adattamento identificate; tutte e quattro le fasi del ciclo di adattamento condividono una base di conoscenza comune espressa come modelli di runtime (Conoscenza e capacità di comprensione); comprendere e applicare modelli di adattamento (Conoscenza e capacità di comprensione) (Conoscenza e capacità di comprensione applicate); progettare e sviluppare un sistema adattivo in grado di gestire incertezze e compromessi tra i diversi attributi di qualità del software a runtime, basato su MAPE-K (Conoscenza e capacità di comprensione applicate); valutare e discutere criticamente i vantaggi del software adattivo e il suo impegno di sviluppo utilizzando i criteri e le metriche disponibili (Autonomia di giudizio) (Abilità comunicative).

Programma

Introduzione ai concetti self-adaptive. Definizione di adattività. Principali component per la progettazione e lo sviluppo di sistemi self-adaptive. Self-adaptive vs sistemi smart, intelligenti, autonomi. Machine learning per sistemi self-adaptive. Proprietà di self*-: self-(re)configuration, self-organization, self-healing, self-protection, self-optimization, self-management, self-adaptation, self-evolution. Incertezze e variabilità nei sistemi self-adaptive: come affrontarle in fase di progettazione ed execuzione. Specifica dei requisiti. Linguaggio RELAX. Un approccio basato sull'architettura per progettare e implementare software adattivo utilizzando cicli di feedback di controllo, ad esempio MAKE-K: monitoraggio, analisi, pianificazione, esecuzione utilizzando una base di conoscenza. Strategie di adattamento. Design e architectural pattern per sistemi self-adaptive. Adattamento reattivo e proattivo. Framework e strumenti per supportare la progettazione e lo sviluppo di sistemi self-adaptive. Meccanismi di basso livello utili per l'adattamento, ad esempio la reflection. Valutazione di sistemi self-adaptive. Trade-offs tra attributi di qualità. Analisi costi benefici. Esempi di sistemi self-adaptive in vari domini applicativi (ad esempio, applicazioni Web, controllo del traffico, droni, elaborazione dati). Adattività per raggiungere la sostenibilità.

Modalità d'esame

Gli studenti saranno valutati attraverso un progetto di gruppo.Identificheranno uno scenario di adattamento e progetteranno il ciclo di adattamento, indicando i passaggi necessari per l'adattamento.Gli studenti possono utilizzare i linguaggi di programmazione, le strategie e i pattern, nonché i framework disponibili per lo sviluppo dell'adattamento.Gli studenti valuteranno i loro sistemi self-adaptive utilizzando le metriche disponibili. Illustreranno i vantaggi dell'utilizzo dei meccanismi di adattamento. Gli studenti valuteranno anche l'effort di sviluppo del software adattivo.Il progetto del team includerà attività sull'identificazione della necessità di adattamento, progettazione e implementazione del ciclo di adattamento e valutazione dei benefici dell'adattamento, nonché dell'effort di sviluppo. Ogni team fornirà un repository con il progetto sviluppato, la relativa documentazione e valutazione e la sua presentazione. Valutazione del progetto: 0 – 24 punti.Presentazione orale del progetto e dei concetti relativi al corso: 0 – 5 punti.Compito assegnato durante il corso: 0 – 6 punti.

Testi di riferimento

Weyns, Danny. Software engineering of self-adaptive systems: an organized tour and future challenges. Chapter in Handbook of Software Engineering. Springer. 2017. Available at: https://people.cs.kuleuven.be/~danny.weyns/papers/Self-Adaptation-Organized-Tour.pdf Danny Weyns. An Introduction to Self-adaptive Systems: A Contemporary Software Engineering Perspective. Wiley. ISBN: 978-1-119-57494-1. October 2020. Self-adaptive Exemplars: https://www.hpi.uni-potsdam.de/giese/public/selfadapt/exemplars/ Materiale didattico (e.g., articoli scientifici) distribuito sulla piattaforma eLearning.

Codice insegnamento 2526-2-F1801Q164

Software Architecture 2° anno · 6 CFU · INF/01 · 0 file

Il corso ha i seguenti obiettivi specifici: Conoscenza e capacità di comprensione (DdD 1): Comprendere i principi di progettazione del sw, i principali pattern e architetture software e i metodi per documentare…

Scheda dell'insegnamento

Obiettivi formativi

Il corso ha i seguenti obiettivi specifici: Conoscenza e capacità di comprensione (DdD 1): Comprendere i principi di progettazione del sw, i principali pattern e architetture software e i metodi per documentare l’architettura di un sistema. Conoscenza e capacità di comprensione applicate (DdD 2): Saper applicare principi e modelli architetturali per sviluppare sistemi riutilizzabili e flessibili, e documentarne correttamente la struttura attraverso notazioni e strumenti adeguati.

Programma

Why architecture is important, Undestanding quality attributes Interfaces Virtualization, Cloud, Mobile Systems Architecturally Significant Requirements Designing an Architecture Evaluating an Architecture The Role of Architects in Projects Architecture Competence, Overview on Documenting an Architecture Managing Architecture Debt Design of an architectural solution for a simplified case study

Modalità d'esame

La valutazione finale si baserà su una discussione su: - approfondimento assegnato- un documento riassuntivo di specifica architetturale del progetto sviluppato. Criteri di valutazione utilizzati: qualità della presentazione e comprensione dell'argomento esposto per la prima parte; qualità della soluzione proposta nella seconda parte.

Testi di riferimento

Verranno indicati articoli e risorse. Software Architecture in Practice 4° Edition (14 october 2021), SEI Series in Software Engineering by Len Bass, Paul Clements, Rick Kazman. ISBN-10: 0136886094 [suggerito] Engineering Software Products by Ian Sommerville. ISBN-10: 013521064-X

Codice insegnamento 2627-2-F1802Q112

Unconventional and Quantum Computing 2° anno · 6 CFU · INF/01 · 0 file

Conoscenza e capacità di comprensioneGli studenti comprenderanno i principi alla base del funzionamento di alcuni modelli di calcolo non convenzionali, modelli bio-ispirati e modelli quantistici. Conoscenza e capacità di…

Scheda dell'insegnamento

Obiettivi formativi

Conoscenza e capacità di comprensioneGli studenti comprenderanno i principi alla base del funzionamento di alcuni modelli di calcolo non convenzionali, modelli bio-ispirati e modelli quantistici. Conoscenza e capacità di comprensione applicateGli studenti saranno in grado di scegliere il modello di calcolo più idoneo per risolvere un problema assegnato. Autonomia di giudizioGli studenti acquisiranno la capacità di valutare se il modello di calcolo sia in grado di affrontare in modo efficiente problemi computazionalmente complessi. Abilità comunicativeLa grande attenzione dedicata agli aspetti formali permetterà agli studenti di comprendere l'importanza di una comunicazione univoca, utilizzando la terminologia corretta per esprimere le nozioni e i concetti appresi. Capacità di apprendimentola definizione di un ambito teorico formale aiuterà gli studenti a sviluppare l'uso di strategie di apprendimento deduttivo.

Programma

Per la parte di Unconventional Computing:• Introduzione: architetture di calcolo classiche, sequenziali e parallele• Problemi di calcolo non-convenzionali• DNA Computing: esperimento di Adleman, algoritmo di Lipton• Computazione Cellulare• Membrane systems: modello standard, membrane systems per problemi computazionalmente complessi• Spiking neural P systems• Algoritmi genetici e reti neurali• Social algorithms Per la parte di Quantum Computing:• Fenomeni fisici quantistici, parallelismo quantistico, entanglement, misurazioni• Notazione matematica: qubit, bra, ket, operatori unitari• Gate quantistici, loro rappresentazione, e operatori corrispondenti• Circuiti quantistici• Algoritmi quantistici fondamentali: trasformata di Fourier quantistica, algoritmi di Shor (fattorizzazione e logaritmi discreti), algoritmo di Grover• Cenni ad altri modelli: Macchine di Turing quantistiche, adiabatiche, …• Linguaggi di programmazione, librerie, simulatori, piattaforme (in particolare: QCEngine , Qiskit)• Reti neurali ibride, e quantum machine learning

Modalità d'esame

La verifica dell'apprendimento è basata su un colloquio orale avente per oggetto gli argomenti svolti a lezione. Durante il colloquio verrà valutata la capacità dello studente di esporre gli argomenti del corso, e di effettuare brevi ragionamenti su di essi. Non sono presenti prove in itinere.

Testi di riferimento

Libri:• Andrew Adamatzky: Unconventional Computing - A Volume in the Encyclopedia of Complexity and Systems Science, Second Edition. Springer, 2018• Wolfgang Polak, Eleanor Rieffel: Quantum Computing : A Gentle Introduction. MIT Press, 2011• Michael A. Nielsen, Isaac L. Chuang: Quantum Computation and Quantum Information. Cambridge University Press, 2010• Eric R. Johnston, Nic Harrigan, Mercedes Gimeno-Segovia: Programming Quantum Computers: Essential Algorithms and Code Samples. O'Reilly Media, 2019 Appunti forniti dai docenti.

Codice insegnamento 2526-2-F1801Q165

Virtual and Augmented Reality 2° anno · 6 CFU · INF/01 · 0 file

Conoscenze e capacità di comprensione Il corso introduce i concetti di base della Realtà Virtuale (VR) e della Realtà Aumentata (AR), sia dal punto di vista teorico che pratico. Verranno affrontati i principi…

Scheda dell'insegnamento

Scheda dell'a.a. 2025/2026: quella dell'anno in corso non è ancora pubblicata.

Obiettivi formativi

Conoscenze e capacità di comprensione Il corso introduce i concetti di base della Realtà Virtuale (VR) e della Realtà Aumentata (AR), sia dal punto di vista teorico che pratico. Verranno affrontati i principi fondamentali che caratterizzano VR e AR, con cenni ai principi di design e alle motivazioni applicative.Saranno inoltre analizzate le tecnologie abilitanti di base, sia hardware che software, per entrambe le tecnologie. Capacità di applicare conoscenze e comprensione Gli studenti impareranno a progettare e sviluppare un semplice prototipo di applicazione VR utilizzando Unity.Verranno realizzati progetti pratici che sfruttano headset VR come dispositivi abilitanti. Autonomia di giudizio Al termine del corso, gli studenti saranno in grado di valutare criticamente l’effettiva utilità delle tecniche di VR e AR e la loro applicabilità in diversi contesti. Abilità comunicative Gli studenti dovranno essere in grado di descrivere e giustificare le scelte progettuali e tecnologiche adottate nello sviluppo del proprio prototipo. Capacità di apprendimento Il corso fornirà le basi per affrontare in autonomia lo studio e la sperimentazione di strumenti e tecnologie emergenti nel campo della VR e AR.Verranno introdotte metodologie per la valutazione delle applicazioni, inclusi test utente e analisi degli effetti avversi.

Programma

Teoria Introduzione ai concetti di base di VR e AR nel “mixed reality continuum” (una linea che parte da ambiente reale, passa per realtà aumentata e arriva a realtà virtuale), differenze e similitudini fra le due tecnologie Cenni su principi di design, motivazioni e storia di VR e AR Output devices e visione Input Devices, Tracking Mondi Virtuali, Locomotion, Interaction Cenni su valutazione di applicazioni di VR / AR (usabilità, valutazione di effetti avversi, user test), casi di studio concretiPratica Introduzione all'Object Oriented Programming Introduzione a Unity Intro a VR, tecnologie abilitanti base (fisica, collisioni, interazione con oggetti, eventi, GUI, locomotion) e avanzate (animazione di oggetti e avatar, scripting, movimento autonomo di avatar) sviluppo di semplici progetti Unity che usino headset come strumento di VRIl corso prevede una forte componente pratica ed applicativa, focalizzata soprattutto su VR.

Modalità d'esame

Prova scritta (svolta in laboratorio su esamionline) sugli argomenti, tecnologie ed esercizi visti a lezione ed esercitazione, e un progetto opzionale di gruppo (2-3 persone) che permette di ottenere alcuni punti aggiuntivi sul voto finale (una singola consegna tenuta poi valida per tutti gli appelli dell’anno accademico).La prova scritta prevede sia domande chiuse a risposta multipla, sia domande aperte, e copre tutti gli argomenti visti a lezione (la parte di teoria) e quelli sperimentati durante le esercitazioni (Unity). Sulla parte pratica, le domande prevedono sia risposte multiple chiuse, risposte aperte, e domande attinenti l'uso di Unity e la programmazione al suo interno, come visto in aula.Il progetto ha lo scopo di mostrare quanto lo studente abbia imparato sia lato teorico, e la sua capacità di concretizzarlo in un design di una semplice applicazione di VR, sia lato pratico, implementandolo in Unity. Il progetto deve essere accompagnato da una relazione che lo presenta e lo descrive, e sarà poi consegnato e discusso col docente.Prova orale su richiesta del professore o dello studente, che può coprire sia argomenti teorici che pratici (quindi con domande oppure piccoli esercizi su Unity)

Testi di riferimento

Slides fornite dal docente.Documentazione tecnica e tutorial di Unity.Libri di testo:Virtual and Augmented Reality (VR/AR), Ralf Doerner, Wolfgang Broll, Paul Grimm, Bernhard Jung Editors. Springer, 2022Augmented Reality: Principles and Practice (Usability) - Dieter Schmalstieg Tobias Hollerer, 2016

Codice insegnamento 2526-2-F1801Q174

Visual Information Processing and Management 2° anno · 6 CFU · INF/01 · 0 file

Lo studente acquisirà le competenze necessarie per acquisire fedelmente, elaborare ed interpretare i media pittorici anche con tecniche basate su Deep Learning. Acquisirà inoltre le competenze per integrare sistemi di…

Scheda dell'insegnamento

Obiettivi formativi

Lo studente acquisirà le competenze necessarie per acquisire fedelmente, elaborare ed interpretare i media pittorici anche con tecniche basate su Deep Learning. Acquisirà inoltre le competenze per integrare sistemi di ricerca basati sul contenuto delle immagini e video in apps e sistemi informativi multimediali.

Programma

  • Percezione e misura oggettiva dei colori, colorimetria, modelli di apparenza colore• Principi di base per la riproduzione delle immagini nei dispositivi grafici, quali le camere digitali, monitor e video proiettori, e stampanti• Catena di acquisizione ed elaborazione delle immagini nelle camere digitali (con recap dei fondamenti dell’elaborazione delle immagini)• Algoritmi adattativi per post elaborazione delle immagini (modifica del contrasto, riduzione del rumore, localizzazione rimozione degli artefatti, composizione di immagini, ...)• Metodi soggettivi e oggettivi per la valutazione della qualità delle immagini• Riconoscimento e classificazione di oggetti ed immagini con tecniche di apprendimento tradizionali basate su caratteristiche pittoriche e visuali• Localizzazione, riconoscimento e classificazione di oggetti ed immagini con tecniche basate su deep learning• Metodi per l’indicizzazione ed il reperimento di dati pittorici nei sistemi informativi multimedialiLe esercitazioni saranno svolte in laboratorio, in linguaggio MATLAB, e comprendono una serie di esercizi quali ad esempio image color transfer, image panorama creation, consumer photo classification, object detection,…

Modalità d'esame

Discussione di un progetto che è possibile fare in gruppo al massimo di tre persone, con valutazione individuale.

Testi di riferimento

Articoli e dispense fornite dal docente.I docenti forniscono a chi lo desidera materiale aggiuntivo (dispense e video) inerenti alla elaborazione delle immagini.

Codice insegnamento 2526-2-F1801Q148

Web Applications: Design and Development 2° anno · 6 CFU · INF/01 · 0 file

Lo scopo del corso è fornire allo studente gli elementi fondamentali per comprendere e progettare applicazioni Web collaborative e a servizi. Al termine del corso lo studente conoscerà i principali modelli di sistemi…

Scheda dell'insegnamento

Obiettivi formativi

Lo scopo del corso è fornire allo studente gli elementi fondamentali per comprendere e progettare applicazioni Web collaborative e a servizi. Al termine del corso lo studente conoscerà i principali modelli di sistemi distribuiti basati su tecnologia Web e le caratteristiche fondamentali delle architetture e degli strumenti per la loro realizzazione. Con questo bagaglio di conoscenze sarà in grado di analizzare sistemi esistenti e partecipare alla progettazione di applicazioni Web, con particolare riferimento alla realizzazione del front-end.

Programma

Introduzione al corso. Evoluzione di Internet e del Web: convergenza di reti, device e applicazioni. Introduzione ai concetti fondamentali di comunicazione con Internet (protocollo TCP/IP) e il Web (protocollo HTTP). Il modello architetturale REST (Web API): Web of Services, Web of Data, e Web of Things. Sistemi service-oriented (cenni): Definizione di servizio, modelli organizzativi a servizi, architettura dei sistemi orientati ai servizi (SOA). Processi di business e servizi. Modelli e principi di cloud e fog computing e loro impatto sul piano organizzativo e di architettura delle soluzioni: i modelli di "system of records" e "system of engagement". Principi e tecnologie dei sistemi di engagement: mobilità e interfacce attive Ajax. Scambio di informazioni: cenni di sintassi e semantica dei formati (XML, JSON, Linked Data, RDF). Progettazione di interfacce e interazione: tecnologie Ajax (HTML5, CSS3, JavaScript). Introduzione alla programmazione in JavaScript. Realizzazione di applicazioni Ajax con JQuery, Boostrap e React per il front-end e Node.js per il back-end.

Modalità d'esame

L'esame consta di una prova scritta con domande aperte e chiuse (su argomenti di lezione e di laboratorio) del valore di punti 30. La prova consiste in: a) domande sulle nozioni presentate b) domande di ragionamento e deduzione c) risoluzione di esercizi che richiedono lo sviluppo di una soluzione ad un problema assegnato Verrà proposto un progetto facoltativo (individuale o al più con gruppi di due persone) con una sola possibilità di consegna annuale (che verrà fissata nella parte finale del corso, e sarà indicativamente collocata nel mese febbraio) che potrà portare a dei punti extra (massimo 4), previa una discussione di quanto realizzato e documentato. NOTA: È consentito l’uso di strumenti di IA per lo svolgimento del progetto. L’attribuzione dei punti sarà effettuata sulla base di una discussione in presenza del codice, volta a verificare la comprensione del lavoro svolto da parte dello studente. Qualora lo studente non fosse in grado di motivare le proprie scelte e di spiegare il codice consegnato, saranno sottratti dei punti L'esame può essere integrato da una prova orale su richiesta del docente e/o dello studente. La prova orale può determinare un incremento o un decremento del voto dello scritto. Prove in itinere La prova scritta può essere sostituita dallo svolgimento di due prove in itinere. Ciascuna prova è composta da domande aperte e chiuse, + semplici esercizi sugli argomenti del laboratorio per complessivi 32 punti. L'accesso alla seconda prova si ottiene con un punteggio maggiore o uguale a 18 punti nella prima prova. Il voto della prova scritta è dato dalla media delle due prove. Non sono previste prove di recupero. VOTO FINALE = VOTO PROVA SCRITTA + PUNTI LABORATORIO (se frequentato) + (eventuale integrazione orale)

Testi di riferimento

Non c’è un unico testo di riferimento. Verranno indicati e/o pubblicati articoli e risorse sul sito di elearning.

Codice insegnamento 2627-2-F1802Q111

Applicazioni Web:progettazione e Sviluppo 6 CFU · INF/01 · 0 file
Architettura del Software 6 CFU · INF/01 · 0 file
Architetture Dati 6 CFU · ING-INF/05 · 0 file
Bioinformatica 6 CFU · INF/01 · 0 file
Computer and Robot Vision (blended) 6 CFU · ING-INF/05 · 0 file
Diritto dell'Informazione, della Comunicazione e dell'Informatica 6 CFU · IUS/09 · 0 file
Fondamenti Logico Matematici dell'Informatica 6 CFU · INF/01 · 0 file
Gestione della Conoscenza 6 CFU · INF/01 · 0 file
Informatica Industriale 6 CFU · ING-INF/05 · 0 file
Laboratorio Internet of Things 6 CFU · INF/01 · 0 file
Laboratorio di Interaction Design 6 CFU · INF/01 · 0 file
Laboratorio di Progettazione 6 CFU · INF/01 · 0 file
Metodi del Calcolo Scientifico 6 CFU · MAT/08 · 0 file
Modelli Probabilistici per le Decisioni 6 CFU · MAT/09 · 0 file
Modelli e Computazione 12 CFU · 0 file
Processo e Sviluppo del Software 6 CFU · ING-INF/05 · 0 file
Qualità del Software 6 CFU · INF/01 · 0 file
Sicurezza Informatica 6 CFU · INF/01 · 0 file
Sistemi Complessi e Incerti 6 CFU · INF/01 · 0 file
Sistemi Complessi: Modelli e Simulazione 6 CFU · INF/01 · 0 file
Sistemi Informativi 6 CFU · ING-INF/05 · 0 file
Sistemi di Calcolo Parallelo 6 CFU · INF/01 · 0 file
Sistemi e Servizi di Telecomunicazione 6 CFU · ING-INF/03 · 0 file
Teoria dell'Informazione e Crittografia 6 CFU · INF/01 · 0 file

Recensioni del corso

Studi qui? Accedi per lasciare la tua recensione e aiutare altri studenti a scegliere.

★

Nessuna recensione per ora — e la prima è la più preziosa. Condividi la tua esperienza e orienta le future matricole.