CONSTRAINT PROGRAMMING
cod. 1009074

Anno accademico 2023/24
1° anno di corso - Primo semestre
Docente
Alessandro DAL PALU'
Settore scientifico disciplinare
Informatica (INF/01)
Ambito
Discipline informatiche
Tipologia attività formativa
Caratterizzante
48 ore
di attività frontali
6 crediti
sede:
insegnamento
in INGLESE

Obiettivi formativi

Il corso offre le basi teoriche per modellare e risolvere problemi combinatori complessi.
Il corso prevede lezioni teoriche e pratiche, in cui applicare le competenze apprese.

Con riferimento agli Indicatori di Dublino:

Conoscenza e capacità di comprensione
Il corso introduce i concetti relativi alla programmazione a vincoli. Particolare enfasi è data alla comprensione dei modelli, l’utilizzo della propagazione e della risoluzione di problemi a vincoli. Il corso , I riferimenti e gli articoli scientifici proposti sono in lingua inglese

Capacità di applicare conoscenza e comprensione
Le conoscenze teoriche presentate vengono sempre applicate alla risoluzione di problemi specifici. Le esercitazioni che affiancano il corso sono incentrate sulla risoluzione di esercizi e problemi, con particolare riferimento alla modellazione dei problemi proposti e alla analisi delle prestazioni ottenute.

Autonomia di giudizio
Gli esercizi, che vengono proposti relativamente alla parte teorica svolta a lezione, possono venire risolti individualmente o in gruppo. Il confronto con i compagni di corso, nel lavoro a casa o durante gli svolgimenti in aula, favorisce lo sviluppo di capacità di problem solving e team work. Spesso gli esercizi proposti possono venire risolti in modi molto diversi e l'ascolto delle soluzioni proposte da altri permette di sviluppare la capacità di individuare strutture comuni e best practices.

Abilità comunicative
Le discussioni sui diversi metodi per risolvere i problemi proposti consentono di migliorare le capacità di comunicazione in lingua inglese.

Capacità di apprendimento
L’utilizzo autonomo di risorse esterne e la consultazione di letteratura scientifica permette di sviluppare una capacità di apprendimento autonoma. Lo studente acquisisce la capacità di adattarsi al problema e di applicare I modelli più adatti per la risoluzione.

Prerequisiti

Contenuti dell'insegnamento

Il corso introduce i principi ed i concetti fondamentali su cui si basa la programmazione dichiarativa a vincoli. In particolare, vengono analizzate le tecniche di programmazione, di modellazione e di risoluzione di problemi a vincoli. Il corso mostra esempi pratici di problemi combinatori complessi e loro risoluzione.

Programma esteso

Programmazione dichiarativa. Introduzione.
Constraint Satisfaction Problems.
Variabili logiche, Relazioni.
Risoluzione
Consistenza. Progagazione di vincoli e loro complessità computazionale
Tecniche risolutive.
CSP/COP
Vincoli globali.
Ricerca locale
Esempi di problemi e loro risoluzione
Approfondimenti su struttura di constraint solvers.

Bibliografia

Risorse online indicate durante il corso

Metodi didattici

lezioni frontali, discussioni di gruppo, esercizi di gruppo

Modalità verifica apprendimento

Risultati dell'apprendimento e modalità di verifica
Saper comprendere e utilizzare in modo appropriato le tecniche relative alla programmazione a vincoli. Saper modellare un problema multi disciplinare e formalizzarlo in un linguaggio a vincoli. Saper scegliere I vincoli più adatti per ottenere soluzioni corrette ed efficienti

Modalità di verifica/esame
L'esame consiste nella realizzazione in piccolo gruppo (2/3 studenti) di un progetto e un colloquio orale. Il progetto viene assegnato agli studenti e corredato da eventuali riferimenti in letteratura con informazioni sul modello o tecniche risolutive.

Altre informazioni

Obiettivi agenda 2030 per lo sviluppo sostenibile