Nuova ricerca

Franco ZAMBONELLI

Professore Ordinario
Dipartimento di Scienze e Metodi dell'Ingegneria

Insegnamento: Distributed Artificial Intelligence

Artificial intelligence engineering (Offerta formativa 2024)

Obiettivi formativi

Il corso vuole fornire le conoscenze e le competenze necessarie alla gestione e sviluppo di sistemi software adattivi basati su componenti distribuiti intelligenti.

Per una più completa comprensione degli obiettivi formativi, si rimanda alla lettura dei risultati di apprendimento attesi a seguito dello svolgimento del presente percorso formativo.

Prerequisiti

Conoscere almeno un linguaggio di programmazione.

Conoscere i concetti base della programmazione a oggetti, delle reti di telecomunicazione, e dei sistemi operativi.

Programma del corso

1. INTELLIGENZA ARTIFICIALE DISTRIBUITA E SISTEMI COMPLESSI (2 CFU, 16 ore, ogni argomento circa 4 ore)
- Introduzione alla intelligenza artificiale distribuita
- Sistemi adattivi complessi
- Automi cellulari
- Reti sociali

2. ALGORITMI DISTRIBUITI (2 CFU, 16 ore, ogni argomento circa 4 ore)
- Valutazione globale dei predicati
- Elezione di leader e consenso
- Mutua esclusione
- Programmazione di rete in Java

3. COORDINAMENTO (2 CFU, 16 ore, ogni argomento circa 4 ore)
- Tecnologie middleware
- La internet delle cose
- Coordinamento basato su spazi di tuple
- Programmazione RMI e basata su tuple in Java

4. SISTEMI MULTIAGENTE (3 CFU, 24 ore, ogni argomento circa 4 ore)
- Agenti autonomi
- Ragionamento e apprendimento in agenti autonomi
- Pensiero strategico
- Coordinamento multiagente
- Negoziazione multiagent
- Intelligenza collettiva


NOTA: La durata degli specifici argomenti potrà variare leggermente a seconda dei feedback degli studenti.

Metodi didattici

Il corso prevede lezioni frontali in aula e attività di esercitazioni in aula per l'utilizzo di strumenti di sviluppo software.

La partecipazione alle lezioni non è obbligatoria, ma fortemente raccomandata.

Il corso sarà erogato in lingua inglese e tutto il materiale didattico sarà in inglese.

Testi di riferimento

Suggested Textbooks:
- A. Tenembaum, M. Van Steen, "Distributed Systems", 3rd Edition, Prentice Hall, available at https://www.distributed-systems.net/index.php/books/ds3/

- M. Wooldridge, "An Introduction to Multiagent Systems", 1st Edition, Wiley.

The notes of the teacher, software, and additional suggested readings, will be made available on the dolly page of the course.

All the material will be in English.

Verifica dell'apprendimento

La valutazione finale prevede:

1) Un progetto individuale volto allo sviluppo e alla sperimentazione (eventualmente anche attraverso strumenti di simulazione) di un sistema software basato su componenti intelligenti distribuiti.

2) Un esame orale volto a verificare l'acquisizione delle conoscenze del corso.

L'esame scritto (o in alternativa il progetto) saranno valutati in base a completezza e correttezza. Il giudizio sarà espresso senza voti, ma solo in termini di ammissione o non ammissione all'orale.

Durante l'esame orale, lo studente dapprima discuterà il suo progetto per circa 20 minuti, e qui avrà la possibilità di spiegare le sue scelte e correggere gli eventuali errori/omissioni. Quindi allo studente saranno poste 3 domande sul programma del corso (circa 20 minuti).

La valutazione finale sarà pesata come segue: 40% per la discussione dell'esame scritto o progetto, 60% per la precisione nel rispondere alle domande sul programma.

Risultati attesi

Conoscenze e capacità di comprensione:

- Definire e identificare i principi base e le proprietà dei sistemi distribuiti complessi.
- Conoscere e comprendere i principali algoritmi distribuiti
- Identificare i principi base e le principali tecnologie per lo sviluppo di sistemi software distribuiti.
- Comprendere il concetto di intelligenza artificiale distribuita.
- Dominare le tecniche di coordinamento in sistemi distribuiti basati su componenti autonomi


Conoscenza e comprensione applicate:

- Sapere programmare algoritmi distribuiti
- Sapere applicare tecniche di coordinamento distribuito
- Sapere programmare simulazioni di sistemi distribuiti


Autonomia di giudizio:

- Valutare e criticare i vantaggi e le problematiche di diversi approcci alla programmazione e sviluppo di sistemi basati su intelligenza artificiale distribuita


Abilità comunicative:

- Presentare e giustificare le scelte relative a un progetto di sviluppo e sperimentazione di software basato su intelligenza artificiale distribuita


Capacità di apprendimento:

- Dominare in autonomia le evoluzioni tecnologiche nel settore dei sistemi distribuiti e dell'intelligenza artificiale.