Corso "Tecnologie del Linguaggio Naturale" per la Laurea Magistrale in Informatica.

Il corso ha l’obiettivo di approfondire le conoscenze di Intelligenza Artificiale con particolare riguardo alle capacità di un agente intelligente di fare inferenze sulla base di una rappresentazione esplicita della conoscenza sul dominio. Alle competenze metodologiche si affiancano competenze progettuali perché il corso prevede la sperimentazione di metodi di ragionamento basati sul paradigma della programmazione logica e lo sviluppo di un agente intelligente in grado di esibire sia comportamenti reattivi che deliberativi (utilizzando ambienti basati su regole di produzione).

Il corso ha l’obiettivo di introdurre gli aspetti principali dei sistemi multiagente, ossia sistemi composti di elementi computazionali che interagiscono, noti come agenti. Gli agenti sono sistemi computazionali capaci di eseguire azioni in modo autonomo, e di interagire con altri agenti svolgendo attività sociali come cooperazione, coordinamento, negoziazione. I sistemi multi agente costituiscono una metafora naturale per modellare un ampio spettro di “artificial social systems”. Nella prima parte del corso vengono forniti gli strumenti metodologici per comprendere i sistemi multiagente discutendo le architetture di singoli agenti e le principali problematiche legate all’interazione fra agenti. La seconda parte del corso presenta alcuni linguaggi e ambienti specifici per sistemi multiagente, in modo da consentire agli studenti di implementare alcuni esempi significativi.

Modelli e Architetture Avanzate di Basi di Dati (MADBD) è un corso avanzato su modelli di dati ed architetture dei sistemi databases.

Consiste di due moduli, il primo dedicato agli aspetti architetturali, tenuto in aula.
Il secondo modulo è dedicato ai Nosql databases.

Il corso si pone un duplice obiettivo.

Per quanto riguarda i modelli, l'obiettivo è che lo studente sia in grado di affrontare con successo applicazioni in una vasta gamma di ambienti diversi, avendo competenze sui principali modelli per dati strutturati alternativi al modello relazionale (object-oriented e object-relational), e sui NoSql databases. Questi ultimi sono un paradiogma di rappresentazione e gestione dei dati molto ampio e variegato, che va dai grafi alle mappe chiave-valore, dai documenti in JSON alle strutture dati condivise sul WEB.
Per quanto riguarda le architetture, l'obiettivo è che lo studente sia in grado di migliorare la performance per applicazioni critiche, avendo una precisa comprensione dei problemi e delle soluzioni di implementazione ed architetturali per sistemi database centralizzati e distribuiti, con particolare riferimento ai sistemi database relazionali e con l'inclusione della gestione dei malfunzionamenti e della concorrenza. 

Per quanto riguarda le architetture, si vedranno anche le architetture in cluster per la gestione distribuita dei dati, anche tramite repliche e partizionamento dei dati, con algoritmi paralleli e soluzioni algoritmiche che fanno uso del paradigma di Map Reduce.

Gli studenti potranno realizzare una applicazione software che acceda ad entrambe le tipologie di DBMS (relazionale e NOSQL) e potranno confrontare le due soluzioni in termini prestazionali.

Il corso permette di acquisire la conoscenza di base dei linguaggi e delle tecnologie del Web Semantico per la rappresentazione della conoscenza, incluse: capacità di progettare e realizzare semplici ontologie con editor di ontologie (Protégé); familiarità con il ragionamento automatico; conoscenza delle risorse ontologiche e linguistiche utili per lo sviluppo di applicazioni interattive intelligenti; capacità di gestire la pubblicazione, l’integrazione e l’interrogazione dei dati nel paradigma Linked Data e di configurare e utilizzare una Linked Data Platform.

L'obiettivo principale del corso è di fornire le basi teoriche e pratiche per l'utilizzo di linguaggi, metodologie e tecniche per la modellazione concettuale di dati e processi al fine di realizzare efficaci sistemi informativi. La prima parte del corso tratterà sulla modellazione dei dati, con enfasi sugli approcci fact- e object-oriented al fine di comprendere le entità rilevanti, le relazioni e i vincoli esistenti tra di esse. La seconda parte del corso ha il fine di fornire gli strumenti per modellare e valutare processi, in particolare (business) process che regolano l'organizzazione del lavoro delle aziende per raggiungere i propri fini strategisci. In particolare, lo scopo è di fornire agli studenti le competenze generali e pratiche di base sull'analisi organizzativa e funzionale delle aziende e sulla ingegnerizzazione e re-ingegnerizzazione dei loro processi. Il corso comprende il trattamento degli aspetti sia modellistici che metodologici legati al trattamento dei dati e dei processi aziendali. Per quanto riguarda gli aspetti modellistici, verranno introdotti linguaggi e modelli per la specifica delle strutture, delle informazioni e delle funzionalità delle aziende, per modellare i processi e simularne il funzionamento al fine di valutare i parametri necessari ad una loro successiva ristrutturazione. Per quanto riguarda gli aspetti metodologici, verranno discusse le fasi principali come la raccolta e analisi dei requisiti, l'analisi dell'organizzazione e il progetto e l’ottimizzazione dei nuovi processi dell'azienda.

Il corso copre le basi per comprendere e affrontare i problemi dell'Apprendimento Automatico e del Data Mining e più in generale le problematiche relative al processo di estrazione della conoscenza da basi di dati (KDD).

Oltre all'esposizione delle principali tematiche che caratterizzano l'apprendimento automatico (classificazione, clustering, estrazione di pattern ricorrenti) si vuole fornire allo studente una base di conoscenza di statistica e di teoria dell'informazione necessari per capire e utilizzare i fondamenti teorici di questi approcci.

Inoltre, si vogliono proporre alcune tecniche per affrontare l'analisi dei dati su grandi volumi di dati, quali le tecniche di pre-processing (pulizia dei dati, il campionamento, selezione delle dimensioni) e la validazione sui dati dei risultati dell'analisi e la loro interpretazione.

Infine si vuole proporre allo studente un ambiente di programmazione e analisi dati. Si utilizzerà Sci-kit Learn in Python e si proporranno alcune esperienze pratiche di analisi dataset pubblici e reali (UCI). 


This course covers the fundamentals to understand and tackle the problems of Machine Learning and Data Mining.

More in general, it treats the tasks and the steps of the Knowledge Discovery Process from Data (KDD).

Beyond the main topics that characterise Machine Learning (classification, clustering, pattern discovery) we wish to provide a base knowledge of statistics and information theory, which are needed to understand the theoretical foundations of these approaches.

Furthermore, we wish to illustrate some techniques to afford the data analysis on big data, such as for the pre-processing steps  (data cleaning, sampling, feature selection) and the evaluation of the analysis results and their interpretation on data.

Finally, we wish to use a programming and data science environment. We will use Sci-kit Learn in Python and we will propose some practical experience of data analysis on public and real datasets (UCI).