Obiettivi formativi Obiettivi generali:
Acquisire una conoscenza delle tecniche elementari del Calcolo Integrale e differenziale per funzioni di una variabile.
Obiettivi specifici:
Fornire strumenti di analisi matematica di base come integrali, serie numeriche e di potenze ed equazioni differenziali.
Conoscenze e comprensione:
Integrazione secondo Riemann; integrali impropri. Serie numeriche. Serie di potenze. EDO (primo grado: lineari, metodo di separazione delle variabili) secondo grado con coefficienti costanti (omogenea e con termine noto).
Applicare conoscenza e comprensione:
Essere in grado di svolgere esercizi su serie numeriche e di potenze. Capire la nozione di Integrali definiti e indefiniti, impropri. anche in relazione alle serie numeriche. Conoscere le equazioni alle differenziali ordinarie che possono essere svolte in modo esplicito come quelle del primo ordine lineari e con metodo di separazione delle variabili, o del secondo ordine con coefficienti costanti omogenee e con termine noto elementare.
Capacità di giudizio:
Saper individuare il miglior approccio, tra i vari studiati, per risolvere un integrali, serie o Equazioni differenziali. Inoltre, la studentessa o lo studente sarà in grado di comprendere le problematiche relative agli integrali propri e impropri, alle serie divergenti.
Capacità di comunicazione:
Essere in grado di discernere tra i vari strumenti matematici utili ai fini della comprensione di integrali, serie e Equazioni differenziali e anche a esporre i metodi rigorosi usati.
Capacità di apprendimento:
Essere in grado di enunciare e applicare i teoremi e le tecniche usate nel corso del corso.
|
Obiettivi formativi Obiettivi generali:
Acquisire conoscenza e capacità di applicazione di argomenti di base di probabilità e statistica.
Obiettivi specifici:
Assiomi e proprietà elementari delle probabilità. Variabili Aleatorie. Distribuzioni continue e discrete. Valori attesi. Introduzione all'inferenza statistica.
Conoscenza e comprensione:
Al termine del corso lo studente avrà acquisito le nozioni e i risultati di base relativi alla teoria della probabilità su spazi finiti e numerabili, al concetto di vettore aleatorio discreto e al concetto di variabile aleatoria continua.
Applicare conoscenza e comprensione:
Gli studenti che abbiano superato l’esame saranno in grado di applicare le nozioni di calcolo combinatorio per risolvere semplici problemi di probabilità discreta, problemi inerenti vettori casuali discreti e numeri casuali rappresentati da variabili aleatorie continue. Lo studente sarà anche in grado di apprezzare il significato e le implicazioni dell’indipendenza e del condizionamento (nell’ambito di modelli discreti), comprendere il significato di alcuni teoremi limite fondamentali, quali la legge dei grandi numeri.
Capacità critiche e di giudizio:
Lo studente avrà le basi per analizzare e costruire modelli probabilistici in semplici situazioni di interesse fisico, biologico e tecnologico, utilizzare tavole e software di simulazione delle leggi discrete di più comune applicazione, nonché della legge gaussiana, e di comprendere l’utilizzazione di strumenti statistici elementari nell’inferenza, nel campionamento statistico e nella simulazione.
Capacità comunicative:
Capacità di esporre i contenuti nella parte orale della verifica e negli eventuali quesiti teorici presenti nella prova scritta.
Capacità di apprendimento: le conoscenze acquisite permetteranno uno studio, individuale o impartito in un corso relativo ad aspetti più specialistici di teoria della probabilità.
|
Obiettivi formativi Obiettivi generali:
Essere in grado di progettare/valutare le proprietà, la struttura di memorizzazione e i protocolli di un sistema di gestione di basi di dati.
Obiettivi specifici:
Conoscenza delle proprietà di uno schema relazionale e di una decomposizione. Capacità di utilizzare le espressioni di algebra relazionale per la ricerca di informazioni in una base di dati relazionale. Capacità di valutare i costi delle operazioni di accesso ai dati.
Avere conoscenza e comprensione:
Fondamenti teorici della progettazione e della interrogazione di una base di dati relazionale (algebra relazionale). Principali strutture di organizzazione dei dati su memoria secondaria.
Applicare conoscenza e comprensione:
Progettare schemi relazionali con “buone proprietà”. Interrogare una base di dati mediante algebra relazionale. Valutare i costi delle operazioni fondamentali su file con diversi tipi di organizzazione fisica.
Capacità critiche e di giudizio:
Essere in grado di valutare le proprietà di uno schema relazionale e di una sua decomposizione. Essere in grado di scegliere la struttura dati più appropriata per memorizzare le informazioni di uno schema.
Capacità comunicative:
Essere in grado di comunicare/condividere caratteristiche qualitative/quantitative relative alla struttura relazionale di una base di dati.
|
Obiettivi formativi Obiettivi generali:
Essere in grado di progettare/valutare le proprietà, la struttura di memorizzazione e i protocolli di un sistema di gestione di basi di dati.
Obiettivi specifici:
Conoscenza delle proprietà di uno schema relazionale e di una decomposizione. Capacità di utilizzare le espressioni di algebra relazionale per la ricerca di informazioni in una base di dati relazionale. Capacità di valutare i costi delle operazioni di accesso ai dati.
Avere conoscenza e comprensione:
Fondamenti teorici della progettazione e della interrogazione di una base di dati relazionale (algebra relazionale). Principali strutture di organizzazione dei dati su memoria secondaria.
Applicare conoscenza e comprensione:
Progettare schemi relazionali con “buone proprietà”. Interrogare una base di dati mediante algebra relazionale. Valutare i costi delle operazioni fondamentali su file con diversi tipi di organizzazione fisica.
Capacità critiche e di giudizio:
Essere in grado di valutare le proprietà di uno schema relazionale e di una sua decomposizione. Essere in grado di scegliere la struttura dati più appropriata per memorizzare le informazioni di uno schema.
Capacità comunicative:
Essere in grado di comunicare/condividere caratteristiche qualitative/quantitative relative alla struttura relazionale di una base di dati.
|
Obiettivi formativi I sistemi operativi sono parte essenziale di un sistema di calcolo e costituiscono l'esempio ideale di un concetto fondamentale e trasversale all'intero percorso di studio in Informatica, ossia quello dell'astrazione. Più specificamente, grazie al processo di virtualizzazione delle risorse fisiche, i sistemi operativi consentono ai programmatori di sviluppare software applicativi evitando di doversi concentrare sui dettagli della macchina hardware, garantendo infine un miglior livello di usabilità da parte dell'utente finale. È pertanto necessario che uno studente di Informatica possieda le basi per comprendere le principali problematiche relative all'efficace progettazione (e utilizzo) di un software altamente complesso come quello di un sistema operativo moderno.
Allo scopo di fornire tali basi, durante il corso verranno discussi alcuni concetti fondamentali relativi ai sistemi operativi cosiddetti general purpose (tipicamente installati su PC/laptop) e alle loro funzionalità primarie (gestione dei processori, della memoria e dei dispositivi di ingresso/uscita). Verranno altresì forniti cenni sulle caratteristiche principali dei sistemi operativi installati sui dispositivi mobili (tablet/smartphone).
I concetti generali previsti per il corso, ampiamente coperti dal materiale bibliografico consigliato, verranno discussi a lezione in maniera relativamente indipendente da specifici sistemi operativi. Essi saranno comunque esemplificati facendo riferimento a sistemi operativi noti e di utilizzo comune, come ad esempio UNIX/Linux, Windows, Mac, Android, iOS, etc.
|
Obiettivi formativi Obiettivi Generali
Il corso è articolato in due moduli fortemente complementari. Il primo modulo offre una
preparazione approfondita sui principi, l’architettura e i meccanismi fondamentali dei
sistemi operativi, ponendo attenzione sia alle caratteristiche consolidate dei sistemi
tradizionali sia agli aspetti più innovativi introdotti dall’evoluzione tecnologica. Gli studenti
svilupperanno anche competenze pratiche nell’interazione con il kernel tramite le principali
interfacce di programmazione, con particolare riferimento all’ambiente UNIX/Linux e alla
gestione efficiente delle risorse di sistema.
Il secondo modulo è dedicato alle architetture di rete e alla comunicazione nei sistemi
distribuiti e su larga scala, dai data center fino a Internet. Adottando un approccio top-
down, questa parte del corso analizza le funzionalità chiave e i meccanismi dei protocolli
dello stack TCP/IP, con l’obiettivo di progettare comunicazioni affidabili, sicure e adatte alle
diverse esigenze applicative in termini di prestazioni e scalabilità.
Obiettivi Specifici
Il corso affronta in modo sistematico i concetti fondamentali dei sistemi operativi moderni, con un focus specifico sull’ambiente UNIX/Linux. Tra gli argomenti trattati: l’evoluzione storica dei sistemi operativi; l’architettura hardware di base (CPU, memoria, dispositivi di I/O); la gestione di processi e thread, e il relativo scheduling sulla CPU; le problematiche legate allo stallo e alle sue tecniche di prevenzione; la concorrenza e la sincronizzazione tra processi; la gestione della memoria; i file system; e i meccanismi di sicurezza.
Il secondo modulo si concentra sulla progettazione e implementazione degli stack protocollari che abilitano la comunicazione nei sistemi distribuiti, sia su scala locale che geografica. Seguendo l’approccio top-down introdotto da Kurose e Ross, l’analisi parte dalle applicazioni di rete e dai protocolli che le supportano, per poi approfondire progressivamente i livelli sottostanti: trasporto, rete, data-link e fisico. Verranno esaminati protocolli fondamentali come HTTP, DNS, TCP, UDP, IP ed Ethernet, insieme ai relativi meccanismi di indirizzamento, instradamento, gestione degli errori e controllo del flusso. La componente pratica sarà supportata da strumenti di simulazione e analisi del traffico, utili a comprendere il comportamento dinamico delle reti in scenari realistici.
Conoscenza e comprensione:
Il primo modulo del corso consente agli studenti di comprendere a fondo come i sistemi operativi supportino l’esecuzione dei programmi utente e gestiscano le periferiche hardware. Vengono analizzati metodi e tecniche fondamentali per la rappresentazione dei processi in memoria e la gestione della multiprogrammazione, ovvero l’esecuzione simultanea di più processi in ambienti con risorse limitate.
Un’attenzione particolare è dedicata all’architettura interna del sistema operativo Linux, al funzionamento della shell BASH e all’uso delle principali system call, fornendo agli studenti strumenti pratici per interagire direttamente con il sistema a basso livello.
Nel secondo modulo, gli studenti acquisiscono una solida comprensione delle architetture di rete, spaziando dai sistemi locali fino alle infrastrutture distribuite su scala geografica, come le reti di content delivery e Internet. L’obiettivo è fornire una conoscenza approfondita dei concetti fondamentali che governano le reti di elaboratori, con particolare attenzione alla struttura a livelli dei protocolli e ai servizi associati.
Verranno affrontate in dettaglio le problematiche e le soluzioni legate alla progettazione dei vari livelli dello stack protocollare: fisico, data-link (incluso il sottolivello MAC), rete, trasporto e applicazione.
Attraverso l’analisi critica delle principali architetture e protocolli, gli studenti acquisiranno familiarità con i requisiti di qualità del servizio (QoS) e le metriche prestazionali delle reti. Esercizi pratici e simulazioni del comportamento di sistemi reali completeranno il percorso formativo, rafforzando la comprensione dei concetti chiave in un contesto moderno in cui le crescenti richieste delle applicazioni di intelligenza artificiale pongono nuove sfide alle infrastrutture di rete.
Applicare conoscenza e comprensione:
Attraverso il primo modulo del corso, gli studenti acquisiranno la capacità di progettare programmi a livello utente e di sistema in modo efficiente e sicuro. Saranno in grado di sviluppare script in BASH per risolvere problemi pratici e scrivere programmi in linguaggio C che utilizzano le system call di Linux per ottimizzare l’uso delle risorse del sistema operativo.
Nel secondo modulo, gli studenti svilupperanno competenze avanzate nell’analisi e nell’applicazione dei protocolli di rete. In particolare, saranno in grado di:
comprendere in profondità le finalità, le caratteristiche e il funzionamento di protocolli e sistemi di comunicazione di nuova generazione;
analizzare criticamente le scelte progettuali dei protocolli nello stack TCP/IP e selezionare le configurazioni più adatte in base ai requisiti applicativi;
valutare l’impatto delle scelte protocollari sulle prestazioni di sistemi distribuiti e infrastrutture Internet, anche alla luce delle crescenti esigenze introdotte dall’adozione su larga scala di sistemi di intelligenza artificiale.
Capacità critiche e di giudizio:
Il corso sviluppa la capacità di analisi critica e valutazione tecnica in contesti complessi. Al termine del primo modulo, lo studente sarà in grado di:
prevedere l’utilizzo delle risorse da parte di un programma;
individuare condizioni di stallo in sistemi multiprogrammati e proporre strategie di prevenzione;
garantire la mutua esclusione tra processi e l’accesso sicuro a sezioni di memoria o risorse sensibili.
Inoltre, sarà in grado di scegliere la soluzione tecnica più adeguata per raggiungere un determinato obiettivo, valutando quando ricorrere a comandi shell, a script BASH, o a programmi in C/Java che sfruttano system call di basso livello.
Attraverso lo studio del secondo modulo, lo studente acquisirà strumenti per analizzare criticamente il comportamento delle architetture di rete e comprenderne le limitazioni in termini di prestazioni, raggiungibilità e tolleranza ai guasti. Sarà in grado di diagnosticare i problemi e proporre soluzioni progettuali e configurative coerenti con i vincoli dell’infrastruttura e gli obiettivi applicativi.
Capacità comunicative
Al termine del corso, lo studente sarà in grado di comunicare in modo chiaro, preciso e tecnicamente corretto le caratteristiche dei sistemi operativi e i meccanismi di interazione tra software e hardware. Sarà in grado di redigere e documentare in maniera efficace script BASH e programmi in linguaggio C che utilizzano le system call di Linux, rendendoli comprensibili sia a utenti esperti sia a interlocutori meno tecnici.
Inoltre, grazie alle competenze acquisite nel secondo modulo, lo studente saprà interfacciarsi con utenti finali, progettisti e sviluppatori di sistemi di rete, comunicando con efficacia requisiti di qualità del servizio (QoS), illustrando i meccanismi alla base del funzionamento delle architetture di rete, e discutendo criticamente eventuali problematiche e soluzioni in scenari complessi e distribuiti.
Capacità di apprendimento:
I sistemi operativi e le reti di comunicazione costituiscono esempi paradigmatici di sistemi hardware/software complessi. Le conoscenze acquisite durante il corso forniscono una base solida e generalizzabile, che risulterà particolarmente preziosa nell’affrontare domini tecnologici caratterizzati da elevata complessità.
Tra questi rientrano: i sistemi distribuiti, le architetture cloud, i framework per l’elaborazione e l’analisi di big data, le infrastrutture enterprise multilivello, le reti 5G/6G, l’edge computing, e le architetture per l’intelligenza artificiale, incluse quelle basate su approcci di federated learning. Il corso prepara quindi gli studenti a un apprendimento continuo e consapevole, abilitando una comprensione critica dei sistemi complessi che caratterizzano l’informatica contemporanea.
|
Obiettivi formativi I sistemi operativi sono parte essenziale di un sistema di calcolo e costituiscono l'esempio ideale di un concetto fondamentale e trasversale all'intero percorso di studio in Informatica, ossia quello dell'astrazione. Più specificamente, grazie al processo di virtualizzazione delle risorse fisiche, i sistemi operativi consentono ai programmatori di sviluppare software applicativi evitando di doversi concentrare sui dettagli della macchina hardware, garantendo infine un miglior livello di usabilità da parte dell'utente finale. È pertanto necessario che uno studente di Informatica possieda le basi per comprendere le principali problematiche relative all'efficace progettazione (e utilizzo) di un software altamente complesso come quello di un sistema operativo moderno.
Allo scopo di fornire tali basi, durante il corso verranno discussi alcuni concetti fondamentali relativi ai sistemi operativi cosiddetti general purpose (tipicamente installati su PC/laptop) e alle loro funzionalità primarie (gestione dei processori, della memoria e dei dispositivi di ingresso/uscita). Verranno altresì forniti cenni sulle caratteristiche principali dei sistemi operativi installati sui dispositivi mobili (tablet/smartphone).
I concetti generali previsti per il corso, ampiamente coperti dal materiale bibliografico consigliato, verranno discussi a lezione in maniera relativamente indipendente da specifici sistemi operativi. Essi saranno comunque esemplificati facendo riferimento a sistemi operativi noti e di utilizzo comune, come ad esempio UNIX/Linux, Windows, Mac, Android, iOS, etc.
|
Obiettivi formativi Obiettivi generali:
Introdurre lo studente alla disciplina dell’apprendimento automatico e alla progettazione e implementazione di sistemi di predizione con apprendimento supervisionato e senza supervisione.
Obiettivi specifici:
Il corso è concepito per introdurre alla disciplina dell’apprendimento automatico (machine learning, ML), una classe di metodi che apprendono pattern dai dati ed effettuano delle predizioni su nuovi dati. Solitamente è utile usare questo tipo di approccio quando non si riesce a programmare il calcolatore con un insieme di regole o un algoritmo ben definito.
Questo unità è complementare alla Unit I del medesimo corso. Il corso è introduttivo e generale sull’apprendimento automatico e non è un corso interamente su Deep Learning, anche se verranno impartite alcune nozioni fondamentali (sia teoriche che computazionali) che stanno alla base del Deep Learning. Il corso è propedeutico per corsi avanzati su Deep Learning.
Gli obiettivi specifici sono:
1) Introduzione all’apprendimento automatico, quando è necessario usarlo, paradigmi e applicazioni.
2) Apprendimento con supervisione. Modelli parametrici: linear regression, logistic regression, regularization; multilayer perceptron, overparameterized models; the backpropagation algorithm; gradient descent; computational graph for automatic differentiation; loss function for classification. Support Vector Machines: Optimal hyperplane, margin, kernels. Modelli non parametrici: the nearest neighbour (NN) Classifier, Decision Trees/Random Forest.
3) Apprendimento senza supervisione. Dimensionality Reduction: Principal Components Analysis (PCA), t-SNE; Clustering, Kmeans, Expectation-Maximization (EM); Gaussian Mixture Model (GMM)
4) Progettare ed implementare sistemi di apprendimento automatico: Visualizzazione dei dati e analisi, cross-validation, impostare iper-parametri.
Conoscenza e comprensione:
Le conoscenze e competenze apprese sono divise su due assi: fornire principi teorici riguardo ai metodi di base per apprendimento con e senza supervisione. Saper applicare tali concetti nella pratica a dati sintetici o dataset reali ma di piccola scala al fine di applicare nella pratica tali nozioni.
Applicazione di conoscenza e comprensione:
Verranno usati strumenti come NumPy (con un enfasi a scrivere codice vettorizzato), scikit learn, PyTorch (automatic differentiation e piccole reti neurali) per implementare sistemi di base. Le applicazioni e i domini applicativi possono essere diversi, principalmente su dati sintetici o immagini.
Autonomia di giudizio:
Sviluppare spirito critico sull’applicazione e l’uso di un sistema di ML e saper valutare e misurare le prestazioni di una algoritmo su dei dati. Saper distinguere i vantaggi e gli svantaggi di diversi algoritmi e determinare il più idoneo in base al problema.
Abilità comunicative:
Mostrare padronanza degli argomenti, comunicando in maniera chiara e con rigore logico, e con la giusta terminologia i concetti appresi al corso sia per quanto riguarda la parte teorica che pratica. La comunicazione può avvenire anche con un report su attività di laboratorio svolta, motivando propriamente le decisioni prese.
Capacità di apprendimento:
Il corso pone le basi per comprendere articoli scientifici avanzati su apprendimento automatico in diversi ambiti applicativi (computer vision, NLP) e fornisce una buona base di concetti fondamentali per corsi avanzati su Deep Learning.
|
Obiettivi formativi Obiettivi generali:
Introdurre lo studente alla disciplina dell’apprendimento automatico e alla progettazione e implementazione di sistemi di predizione con apprendimento supervisionato e senza supervisione.
Obiettivi specifici:
Il corso è concepito per introdurre alla disciplina dell’apprendimento automatico (machine learning, ML), una classe di metodi che apprendono pattern dai dati ed effettuano delle predizioni su nuovi dati. Solitamente è utile usare questo tipo di approccio quando non si riesce a programmare il calcolatore con un insieme di regole o un algoritmo ben definito.
Questo unità è complementare alla Unit I del medesimo corso. Il corso è introduttivo e generale sull’apprendimento automatico e non è un corso interamente su Deep Learning, anche se verranno impartite alcune nozioni fondamentali (sia teoriche che computazionali) che stanno alla base del Deep Learning. Il corso è propedeutico per corsi avanzati su Deep Learning.
Gli obiettivi specifici sono:
1) Introduzione all’apprendimento automatico, quando è necessario usarlo, paradigmi e applicazioni.
2) Apprendimento con supervisione. Modelli parametrici: linear regression, logistic regression, regularization; multilayer perceptron, overparameterized models; the backpropagation algorithm; gradient descent; computational graph for automatic differentiation; loss function for classification. Support Vector Machines: Optimal hyperplane, margin, kernels. Modelli non parametrici: the nearest neighbour (NN) Classifier, Decision Trees/Random Forest.
3) Apprendimento senza supervisione. Dimensionality Reduction: Principal Components Analysis (PCA), t-SNE; Clustering, Kmeans, Expectation-Maximization (EM); Gaussian Mixture Model (GMM)
4) Progettare ed implementare sistemi di apprendimento automatico: Visualizzazione dei dati e analisi, cross-validation, impostare iper-parametri.
Conoscenza e comprensione:
Le conoscenze e competenze apprese sono divise su due assi: fornire principi teorici riguardo ai metodi di base per apprendimento con e senza supervisione. Saper applicare tali concetti nella pratica a dati sintetici o dataset reali ma di piccola scala al fine di applicare nella pratica tali nozioni.
Applicazione di conoscenza e comprensione:
Verranno usati strumenti come NumPy (con un enfasi a scrivere codice vettorizzato), scikit learn, PyTorch (automatic differentiation e piccole reti neurali) per implementare sistemi di base. Le applicazioni e i domini applicativi possono essere diversi, principalmente su dati sintetici o immagini.
Autonomia di giudizio:
Sviluppare spirito critico sull’applicazione e l’uso di un sistema di ML e saper valutare e misurare le prestazioni di una algoritmo su dei dati. Saper distinguere i vantaggi e gli svantaggi di diversi algoritmi e determinare il più idoneo in base al problema.
Abilità comunicative:
Mostrare padronanza degli argomenti, comunicando in maniera chiara e con rigore logico, e con la giusta terminologia i concetti appresi al corso sia per quanto riguarda la parte teorica che pratica. La comunicazione può avvenire anche con un report su attività di laboratorio svolta, motivando propriamente le decisioni prese.
Capacità di apprendimento:
Il corso pone le basi per comprendere articoli scientifici avanzati su apprendimento automatico in diversi ambiti applicativi (computer vision, NLP) e fornisce una buona base di concetti fondamentali per corsi avanzati su Deep Learning.
|
Obiettivi formativi Obiettivi generali:
Il corso si propone di introdurre gli studenti a una presentazione ad ampio spettro dell'intelligenza artificiale (IA), con particolare attenzione al ragionamento automatizzato.
Obiettivi specifici:
Il corso persegue l'obiettivo di rendere gli studenti abili nella comprensione, nell'uso, nell'adattamento e nello sviluppo di soluzioni a un'ampia serie di problemi di IA nel contesto della progettazione di sistemi software intelligenti, che vanno dalla ricerca alla soddisfazione dei vincoli, dai linguaggi formali ai sistemi deduttivi.
Conoscenza e comprensione:
Gli studenti apprenderanno gli approcci e le euristiche fondamentali per i problemi di ricerca e di soddisfazione dei vincoli, la rappresentazione della conoscenza e il ragionamento in logica proposizionale e logica del primo ordine.
Applicazione di conoscenza e comprensione:
Gli studenti saranno in grado di rappresentare in modo appropriato i problemi di IA dal punto di vista di un agente intelligente, di sfruttare il portafoglio di tecniche e i diversi approcci mostrati nel corso per la soluzione di nuovi problemi, di spiegare la logica alla base del processo decisionale autonomo di un agente.
Capacità critiche e di giudizio:
Gli studenti saranno in grado di valutare i vantaggi e gli svantaggi nell'applicazione e nell'adattamento di tecniche conosciute per la progettazione di sistemi software intelligenti, di esaminare l'ambiente in cui si opera, di definire una funzione di utilità per misurare le prestazioni degli agenti, di ideare nuove soluzioni su misura per le nuove sfide dell'IA.
Abilità comunicative:
Gli studenti acquisiranno la capacità di esporre le proprie conoscenze in modo chiaro e organizzato per proporre soluzioni basate sull'IA, formalizzare i problemi contestati e discutere efficacemente le proprie idee con esperti del settore.
Capacità di apprendimento:
Le competenze acquisite consentiranno agli studenti di approfondire e ampliare autonomamente la propria gamma di conoscenze e capacità, dotandosi degli strumenti interpretativi necessari per leggere autonomamente i lavori pubblicati nella letteratura scientifica sull'IA.
|
Obiettivi formativi Obiettivi generali: L'obiettivo del corso è quello di fornire agli studenti gli strumenti pratici necessari per poter usufruire delle moderne applicazioni di Machine e Deep Learning. In particolare, il corso sarà focalizzato sullo studio e l'implementazione di algoritmi di Computer Vision e Natural Language Processing.
Obiettivi specifici: Il corso tratta l'elaborazione di immagini, partendo dai metodi classici e arrivando alle moderne tecniche che sfruttano il Machine/Deep Learning, nonchè l'utilizzo del Natural Language Processing congiuntamente alla Computer Vision per effettuare specifici tasks.
Conoscenza e comprensione: Lo studente acquisirà conoscenza riguardo i moderni strumenti per analizzare immagini e testo in modo del tutto automatico sfruttando il Machine e il Deep Learning. Inoltre, lo studente acquisirà conoscenza sui moderni framework utilizzati per adempiere a tali tasks.
Applicazione di conoscenza e comprensione: Lo studente sarà in grado di sfruttare le conoscenze acquisite durante il corso, nonchè i framework utilizzati, per definire i propri modelli di Machine e Deep Learning per la risoluzione di diversi tasks riguardanti l'analisi di immagini e testo.
Autonomia di giudizio: Lo studente sarà in grado di comprendere le operazioni necessarie per adempiere a un task inerente la Computer Vision o il Natural Language Processing e, conseguentemente, sarà in grado di utilizzare o definire un modello per la risoluzione dello stesso.
Abilità comunicative: Lo studente sarà in grado di descrivere in maniera dettagliata i modelli di Machine/Deep Learning utilizzati o definiti.
Capacità di apprendimento: Il corso pone le basi pratiche per l'utilizzo e la definizione di modelli di Machine e Deep Learning utilizzabili in qualsiasi corso inerente a questi ultimi.
|
Obiettivi formativi Obiettivi generali:
Essere in grado di progettare/valutare le proprietà, la struttura di memorizzazione e i protocolli di un sistema di gestione di basi di dati.
Obiettivi specifici:
Conoscenza delle proprietà di uno schema relazionale e di una decomposizione. Capacità di utilizzare le espressioni di algebra relazionale per la ricerca di informazioni in una base di dati relazionale. Capacità di valutare i costi delle operazioni di accesso ai dati.
Avere conoscenza e comprensione:
Fondamenti teorici della progettazione e della interrogazione di una base di dati relazionale (algebra relazionale). Principali strutture di organizzazione dei dati su memoria secondaria.
Applicare conoscenza e comprensione:
Progettare schemi relazionali con “buone proprietà”. Interrogare una base di dati mediante algebra relazionale. Valutare i costi delle operazioni fondamentali su file con diversi tipi di organizzazione fisica.
Capacità critiche e di giudizio:
Essere in grado di valutare le proprietà di uno schema relazionale e di una sua decomposizione. Essere in grado di scegliere la struttura dati più appropriata per memorizzare le informazioni di uno schema.
Capacità comunicative:
Essere in grado di comunicare/condividere caratteristiche qualitative/quantitative relative alla struttura relazionale di una base di dati.
|
Obiettivi formativi Obiettivi generali:
Introdurre lo studente alla disciplina dell’apprendimento automatico e alla progettazione e implementazione di sistemi di predizione con apprendimento supervisionato e senza supervisione.
Obiettivi specifici:
Il corso è concepito per introdurre alla disciplina dell’apprendimento automatico (machine learning, ML), una classe di metodi che apprendono pattern dai dati ed effettuano delle predizioni su nuovi dati. Solitamente è utile usare questo tipo di approccio quando non si riesce a programmare il calcolatore con un insieme di regole o un algoritmo ben definito.
Questo unità è complementare alla Unit I del medesimo corso. Il corso è introduttivo e generale sull’apprendimento automatico e non è un corso interamente su Deep Learning, anche se verranno impartite alcune nozioni fondamentali (sia teoriche che computazionali) che stanno alla base del Deep Learning. Il corso è propedeutico per corsi avanzati su Deep Learning.
Gli obiettivi specifici sono:
1) Introduzione all’apprendimento automatico, quando è necessario usarlo, paradigmi e applicazioni.
2) Apprendimento con supervisione. Modelli parametrici: linear regression, logistic regression, regularization; multilayer perceptron, overparameterized models; the backpropagation algorithm; gradient descent; computational graph for automatic differentiation; loss function for classification. Support Vector Machines: Optimal hyperplane, margin, kernels. Modelli non parametrici: the nearest neighbour (NN) Classifier, Decision Trees/Random Forest.
3) Apprendimento senza supervisione. Dimensionality Reduction: Principal Components Analysis (PCA), t-SNE; Clustering, Kmeans, Expectation-Maximization (EM); Gaussian Mixture Model (GMM)
4) Progettare ed implementare sistemi di apprendimento automatico: Visualizzazione dei dati e analisi, cross-validation, impostare iper-parametri.
Conoscenza e comprensione:
Le conoscenze e competenze apprese sono divise su due assi: fornire principi teorici riguardo ai metodi di base per apprendimento con e senza supervisione. Saper applicare tali concetti nella pratica a dati sintetici o dataset reali ma di piccola scala al fine di applicare nella pratica tali nozioni.
Applicazione di conoscenza e comprensione:
Verranno usati strumenti come NumPy (con un enfasi a scrivere codice vettorizzato), scikit learn, PyTorch (automatic differentiation e piccole reti neurali) per implementare sistemi di base. Le applicazioni e i domini applicativi possono essere diversi, principalmente su dati sintetici o immagini.
Autonomia di giudizio:
Sviluppare spirito critico sull’applicazione e l’uso di un sistema di ML e saper valutare e misurare le prestazioni di una algoritmo su dei dati. Saper distinguere i vantaggi e gli svantaggi di diversi algoritmi e determinare il più idoneo in base al problema.
Abilità comunicative:
Mostrare padronanza degli argomenti, comunicando in maniera chiara e con rigore logico, e con la giusta terminologia i concetti appresi al corso sia per quanto riguarda la parte teorica che pratica. La comunicazione può avvenire anche con un report su attività di laboratorio svolta, motivando propriamente le decisioni prese.
Capacità di apprendimento:
Il corso pone le basi per comprendere articoli scientifici avanzati su apprendimento automatico in diversi ambiti applicativi (computer vision, NLP) e fornisce una buona base di concetti fondamentali per corsi avanzati su Deep Learning.
|
Obiettivi formativi Lo scopo principale del corso è quello di insegnare le più popolari metodologie di inferenza non parametrica, soprattutto da un punto di vista bayesiano.
Lo studente, alla fine del corso, sarà in grado di utilizzare processi di Dirichlet e loro ramificazioni nei più consueti contesti inferenziali di data science
Obiettivi generali:
Il corso si propone di fornire le basi della teoria delle successioni e serie di funzioni e della teoria delle funzioni di variabile complessa, con applicazioni alla trasformata di Laplace e cenni di applicazione alla trasformata di Fourier.
Obiettivi specifici:
Conoscenza e comprensione:
Conoscere i rudimenti della teoria dell’approssimazione, con particolare riguardo alle nozioni di convergenza puntuale e uniforme per successioni di funzioni di una o più variabili reali e di convergenza puntuale, assoluta, uniforme e totale per serie di funzioni, in particolare per serie di potenze e serie trigonometriche, scarto quadratico medio e convergenza in media quadratica, eguaglianza di Parseval per serie trigonometriche. Conoscere le basi della teoria delle funzioni di variabile complessa, con particolare riguardo alle nozioni di olomorfia, di punto singolare, di residuo, di trasformata di Laplace e formula di inversione.
Applicare conoscenza e comprensione:
Essere in grado di analizzare il comportamento di successioni di funzioni di una o più variabili reali (o di una variabile complessa) e di serie di funzioni di variabile reale o complessa dal punto di vista delle varie nozioni di convergenza. Saper ricostruire un segnale a partire dalla sua trasformata di Laplace. Essere in grado di risolvere problemi di Cauchy per equazioni differenziali lineari a coefficienti costanti mediante trasformata di Laplace e calcolare trasformate di Fourier di opportune classi di funzioni.
|