a.a. 2017/2018 
III anno, I semestre 
6 CFU (4+1+1P)

Lo studente avrà conoscenza dei fondamenti essenziali della Intelligenza Artificiale, della programmazione euristica e della programmazione a regole. Accanto ai principi della astrazione, alle teorie formali del calcolo attraverso modelli algebrico-matematici, imparerà a risolvere i problemi mediante la ricerca.

Vanno considerati gli aspetti essenziali della disciplina che riimangono inalterati a fronte del cambiamento tecnologico, in modo da avere un sistema di riferimento culturale che trascende il tempo e le circostanze.

Lo studente avrà consapevolezza delle possibilità e dei limiti delle metodologie informatiche basate su conoscenza e sarà in grado di comprendere quali siano i problemi più adatti ad essere affrontati con tali tecniche (software, hardware, e di rete).

In particolare lo studente sarà in grado, da un lato, di comprendere i limiti della programmazione imperativa e, dall’altro, di cogliere le opportunità offerte dall’uso di linguaggi interpretati e dalle tecniche di programmazione a regole per lo sviluppo di sistemi dinamici e la implementazione di agenti software autonomi basati su conoscenza.

Queste competenze sono trasferite attraverso lezioni teoriche ed esercitazioni pratiche. Inoltre, lo studente, opportunamente seguito, svilupperà autonomamente, o in un gruppo di non più di tre persone, un sistema esperto in un dominio applicativo di sua scelta o assegnato dal docente, realizzato con un ambiente di programmazione interpretato presentato durante le esercitazioni pratiche.

La verifica dell'acquisizione dei concetti teorici e dei metodi può essere effettuata durante l'anno accademico attraverso prove in itinere. La verifica delle abilità pratiche avviene in fase di esame con la discussione del progetto realizzato dallo studente. Chi non avrà inteso avvalersi delle prove in itinere completerà l’esame orale rispondendo a domande teoriche e risolvendo semplici esercizi.