FONDAMENTI DI INTELLIGENZA ARTIFICIALE

Anno accademico e docente
Non hai trovato la Scheda dell'insegnamento riferita all’anno accademico di tuo interesse? Ecco come fare >>
English course description
Anno accademico
2018/2019
Docente
EVELINA LAMMA
Crediti formativi
6
Periodo didattico
Primo Semestre
SSD
ING-INF/05

Obiettivi formativi

Il corso è il primo insegnamento di Intelligenza Artificiale (IA) ed illustra i principi architetturali dei sistemi di Intelligenza Artificiale, i metodi di rappresentazione della conoscenza e di ragionamento automatico, con particolare riferimento a sistemi basati sulla conoscenza e alla logica e al linguaggio e motore inferenziale Prolog.
Per approfondire alcuni argomenti, nell'ambito del corso sono previsti seminari tematici, presentati da esperti su invito del docente.

Le principali conoscenze acquisite sono relative ai metodi per la modellazione e rappresentazione di un problema di Intelligenza Artificiale, e alle tecniche per trovarne una soluzione in modo automatico.
Le principali abilità (ossia la capacità di applicare le conoscenze acquisite) saranno:
- capacità di applicare metodi di rappresentazione per modellare semplici problemi di Intelligenza Artificiale, partendo da una descrizione testuale;
- capacità di applicare strategie di ricerca informate e non, o ricerca con avversario, o tecniche di propagazione di vincoli per risolvere problemi di Intelligenza Artificiale già modellati;
- capacità di analizzare e mostrare l’evoluzione a tempo di esecuzione di un programma Prolog;
- capacità di sintetizzare un programma Prolog, che risolva un problema dato, partendo da una descrizione testuale.

Prerequisiti

Questo insegnamento richiede come prerequisito la conoscenza dei concetti base della programmazione e di almeno un linguaggio di programmazione di alto livello (imperativo, o a oggetti).
Se ne sconsiglia la frequenza durante una laurea triennale.

Contenuti del corso

1) Introduzione all'Intelligenza Artificiale: alcuni cenni storici, principali campi applicativi, introduzione ai sistemi basati sulla conoscenza e i loro principi architetturali.
2) Risoluzione di problemi: rappresentazione nello spazio degli stati, metodi di soluzione forward e backward, strategie di ricerca (cieche e informate); ricerca con avversario (giochi); problemi a vincoli: tecniche di consistenza e algoritmi di propagazione.
3) Rappresentazione della conoscenza: logica dei predicati del primo ordine, regole di produzione, reti semantiche e frames.
4) Linguaggi per Intelligenza Artificiale. Prolog: dalla logica alla programmazione logica, il linguaggio Prolog come risolutore, progettazione e sviluppo di semplici programmi Prolog.
5) Seminari tematici (AIMA.search come libreria per ricerca nello spazio degli stati; Logiche descrittive e Semantic Web)

Metodi didattici

Il corso comprende lezioni frontali in aula per alcuni argomenti, con esercizi svolti in aula, e lezioni ed esercitazioni pratiche in Laboratorio di Informatica, per argomenti legati alla libreria Java AIMA.search per il seminario tematico su strategie di ricerca, alla programmazione Prolog, e al ragionatore ontologico Pellet per il seminario tematico su Semantic Web.
Gli studenti hanno anche libero accesso al Laboratorio per ulteriori esercitazioni individuali.

Modalità di verifica dell'apprendimento

L’obiettivo della prova d’esame è verificare il livello di raggiungimento degli obiettivi formativi precedentemente indicati. Durante il corso è incentivata l'autovalutazione dello studente, tramite esercizi proposti e risolti.

La prova d'esame consiste in una prova scritta, organizzata come un insieme di esercizi (sui punti 2), 3) 4) indicati nei contenuti del corso).
In particolare la prova prevede esercizi su:
- modellazione e risoluzione con: logica dei predicati / tecniche a vincoli / strategie informate e non, di semplici problemi di IA;
- applicazione di algoritmi per ricerca con avversario;
- analisi e sintesi di programmi Prolog;
- domanda teorica su tutti gli argomenti trattati nel corso.

Il punteggio totale per tale prova è di 32 punti, con una soglia di sufficienza posta a 18/32. Il voto finale è dato dal punteggio ottenuto. Con punteggio superiore o uguale a 31, il voto finale è 30/30 e Lode. Durante lo svolgimento di tale prova non è concesso consultare testi, appunti o altra fonte di informazione.

Su richiesta esplicita dello studente, è possibile sostenere anche un colloquio orale. Tale colloquio verterà sui contenuti presentati nel corso, nonché su un argomento preventivamente concordato con il docente, e sviluppato dallo studente in modo autonomo. Il colloquio orale, che comunque è di carattere facoltativo, può portare ad un aumento di massimo 3 punti rispetto al risultato dello scritto.

Lo studente può ripetere più volte la prova scritta, qualora non sia riuscito a superarla in precedenza, o qualora non sia soddisfatto del punteggio conseguito. Qualora lo studente ripeta la prova (consegnando l'elaborato al docente), i voti conseguiti in precedenza sono annullati, e sarà considerata come valida solo la prova più recente.

Testi di riferimento

Tutte le diapositive proiettate e discusse a lezione sono pubblicate nel sito Web del corso:
http://www.unife.it/ing/lm.infoauto/Fond_IA
dove sono disponibili anche testi e soluzioni di prove d'esame degli anni accademici precedenti, utili allo studente per raffinare e autovalutare la propria preparazione.

Testi di riferimento utilizzati:

Su Intelligenza Artificiale:
S. Russell e P. Norvig, "Intelligenza artificiale. Un approccio moderno", volume 1, Pearson Education-Prentice Hall, Ultima Edizione, oppure qualsiasi edizione precedente.

Sul linguaggio Prolog:
L.Console, E.Lamma, P.Mello, M. Milano: "Programmazione Logica e Prolog", UTET, Seconda Edizione, 1997.

Testi per ulteriore consultazione e approfondimento:
E. Rich, K. Knight: “Intelligenza Artificiale”, McGraw Hill, Seconda Edizione 1992.
I. Bratko: “Programmare in Prolog per l’Intelligenza Artificiale”, Masson ed Addison-Wesley, 1988.