INTELLIGENZA ARTIFICIALE E LABORATORIO
Modulo LABORATORIO

Anno accademico 2023/2024 - Docente: MARIO FRANCESCO PAVONE

Risultati di apprendimento attesi

Conoscenza e capacità di comprensione (knowledge and understanding): saranno acquisite le conoscenze relative agli aspetti implementativi e progettuali di varie metodologie di algoritmi per la risoluzione di problemi computazionalmente molto complessi e di grandi dimensioni.

Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): saranno acquisite le capacità necessarie per affrontare e risolvere problemi complessi, attraverso una corretta analisi algoritmica ed una adeguata scelta della metodologia di risoluzione da adottare.

Autonomia di giudizio (making judgements): lo studente sarà in grado di valutare la migliore e la più adatta metodologia algoritmica da utilizzare nel contesto della risoluzione di un qualunque problema complesso e di grandi dimensioni, nonché di problemi del mondo reale.

Abilità comunicative (communication skills): saranno acquisite le necessarie abilità comunicative ed un'adeguata appropriatezza espressiva nella comunicazione di problematiche inerenti i sistemi intelligenti e le loro applicazioni.

Capacità di apprendimento (learning skills): lo studente avrà la capacita di adattare le conoscenze acquisite in nuovi contesti e di comprendere vantaggi e svantaggi delle diverse tecniche di risoluzione intelligenti.

Modalità di svolgimento dell'insegnamento

Le lezioni saranno prettamente frontali e si svolgeranno in aula. Potranno, altresì, essere previste specifiche lezioni in laboratorio.

Il corso può prevedere seminari tenuti da esperti esterni su argomenti correlati e d'attualità.

Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.

Prerequisiti richiesti

Il corso presuppone una buona conoscenza dei linguaggi di programmazione C, C++, Java, Python e/o Matlab, nonché analisi e applicazioni di algoritmi.

Frequenza lezioni

La frequenza è consigliata. Le lezioni permettono di cogliere meglio gli argomenti trattati e l'idea generale che tiene legati i diversi temi, fornendo riferimenti e discussioni utili.

Contenuti del corso

La parte di Laboratorio si concentrerà in particolare sugli aspetti implementativi di (i) strategie di ricerca informata (es. Greedy BFS, A*, Ricerca euristica a memoria limitata, etc.); (ii) strategie di ricerca locale (es. Local Search; Hill Climbing; etc.); (iii) tecniche algoritmiche per giochi (Minimax, Alfa-beta, etc.); (iv) algoritmi per problemi con vincoli; (v) metodi esatti (es. branch-and-cut; branch-and-bound; etc.); (vi) meta-euristiche; (v) modelli basati su agenti.

Testi di riferimento

Artificial Intelligence, a modern approach, 3rdEdition, S. Russel, P. Norvig.

Metaheuristics: From Design to Implementation, E.G. Talbi, 2009.

Ulteriore materiale e/o riferimenti forniti dal docente.

Programmazione del corso

 ArgomentiRiferimenti testi
1Strategie di ricerca informata e non informataMateriale fornito del docente
2Algoritmi di Ricerca Locale (Local Search, Hill Climbing, etc.)Materiale fornito del docente
3Tecniche algoritmiche per la game theory (Minimax, Alfa-beta, etc.)Materiale fornito del docente
4Algoritmi per problemi con vincoli (Colorazione di mappe, etc.)Materiale fornito del docente
5Metodi esatti Materiale fornito del docente
6MetaheuristicsE.G. Talbi, ''Metaheuristics: From Design to Implementation'', Wiley, 2009 
7Modelli basati su agentiMateriale fornito del docente

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

L'esame consiste nello sviluppo progettuale di una metodologia algoritmica per la risoluzione di un dato problema, con relativa relazione descrittiva in Latex. Il progetto dovrà essere completato entro un tempo massimo di 2 settimane dal suo inizio, o entro il tempo massimo stabilito dal docente. Algoritmo da sviluppare e problema da risolvere verranno proposti e comunicati dal docente nella data ufficiale dell'appello. Il progetto dovrà essere sviluppato in uno dei seguenti linguaggi di programmazione: C, C++ Java, Python o Matlab.

Successivamente alla consegna del progetto, seguirà un colloquio orale che verterà sulla discussione dell'elaborato svolto.

Il voto complessivo della parte di laboratorio viene attribuito secondo il seguente schema:

  • non approvato: lo studente non ha acquisito i concetti di base e non è in grado di svolgere almeno il 60% degli esercizi pratici (sviluppare un algoritmo di base);
  • 18-24: lo studente dimostra una padronanza minima dei concetti di base, e capacità di implementare semplici algoritmi o di base;
  • 25-27: lo studente dimostra una buona padronanza dei contenuti del corso, un buona conoscenza dei contenuti ed è in grado di implementare versioni più avanzate degli algoritmi trattati a lezione;
  • 28-30 e lode: lo studente ha acquisito ottima padronanza di tutti i contenuti del corso ed è in grado di implementare efficienti e originali algoritmi trattati nel corso, anche di particolare complessità.

Nota: la verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.

Esempi di domande e/o esercizi frequenti

Esempi di progetti saranno disponibili nella pagina ufficiale del corso al seguente link:

https://www.dmi.unict.it/mpavone/lab-ai.html