Anno Accademico 97/98
Corso di
Linguaggi di Programmazione
Docenti: Professor Eugenio
Moggi e Professor Catuscia
Palamidessi.
Per le informazioni generali riguardanti il corso, consultare la pagina
web mantenuta da Moggi. Qui di seguito si trovano informazioni, dispense
etc. relative alle lezioni svolte da Palamidessi.
Programmazione Logica
Libri consigliati:
-
"Programming Languages", di Ravi Sethi, Seconda
edizione, pubblicato da Addison Wesley. Disponibile in biblioteca DISI-DIMA.
E' disponibile anche la prima versione, tradotta in italiano e pubblicata
dalla Zanichelli, ed e' abbastanza equivalente alla seconda per quanto
riguarda la parte su Programmazione Logica.
-
"The art of Prolog", di Leon Sterling e Ehud
Shapiro, pubblicato da The MIT Press, disponibile in biblioteca DISI-DIMA.
-
"From Logic Programming to Prolog", di Krzysztof
Apt, pubblicato dalla Prentice Hall, disponibile in biblioteca DISI-DIMA.
Per gli argomenti che in questi testi non sono trattati, o sono trattati
in modo insufficente, si renderanno disponibili delle dispense.
Per le esercitazioni di laboratorio sul Prolog: E' disponibile sulle
macchine Linux l'interprete Swi-Prolog, che si attiva col comando pl.
Per il suo funzionamento vedi il Reference Manual di Jan Wielemaker Swi-Prolog.
-
Lezione 1, 23/10/97. Introduzione alla programmazione logica. Sintassi
e Semantica dichiarativa delle clausole di Horn. [dispense]
-
Lezione 2, 24/10/97. Semantica operazionale della programmazione
logica. Sostituzioni, unificatori, most general unifiers. Derivazioni di
successo e di fallimento. [dispense]
-
Lezione 3, 27/10/97. Teoremi di correttezza e completezza della
semantica operazionale rispetto a quella dichiarativa. Esempio dell'albero
genealogico. [dispense]
-
Lezione 4, 28/10/97. Alberi di derivazione SLD. Strategia di ricerca
del Prolog. [dispense]
-
Lezione 5, 4/11/97. Liste in Prolog. Esempi di programmi su liste:
append, occur, sublist, permutazioni, quicksort. Cenni di aritmetica Prolog.
Conseguenze dell'uso di predicati extra-logici (come quelli aritmetici).
Liste differenza. Definizione di append e reverse con liste differenza.
[Materiale di consultazione: Sethi o Sterling-Shapiro]
-
Lezione 6, 5/11/97. Negazione in Programmazione Logica. Closed Word
Assumpion. Ragionamento non monotono. Problema della ineffettivita' della
CWA. Negation As Failure. Correttezza della NAF rispetto alla CWA. Mancanza
di Completezza della NAF rispetto alla CWA, dovuta ai problemi della non-terminazione
e del "floundering". Ulteriore incompletezzza della NAF in Prolog a causa
della regola di selezione unfair. [Materiale di consultazione: Sethi o
Sterling-Shapiro]
-
Lezione 7, 6/11/97. Negazione in Prolog. Uso della NAF su goal non
ground. Esempio: Ricerca di cammini in un grafo, evitando i cicli. La direttiva
"cut". Definizione del not e dell'if_then_else tramite il cut. Assert e
retract. Cenni a tecniche di memoizzazione. [Materiale di consultazione:
Sethi o Sterling-Shapiro]
-
Lezione 8, 10/11/97. Torre di Hanoy e Fibonacci con tecniche di
memoizzazione. Alcuni esempi dell'uso del Prolog per risolvere problemi
di Intelligenza Artificiale: Analogy e State-space graphs. [Materiale di
consultazione: Sterling-Shapiro. Dispense sul
programma Analogy]
-
Lezione 9, 11/11/97. Algoritmo di unificazione di Martelli-Montanari.
Problema dell'occur check in Prolog. Il predicato findall. Esempio:
ricerca di cammino di costo minimo. [Materiale di consultazione: Apt (paragrafo
2.6) per l'unificazione. Apt o Sterling-Shapiro per il problema dell'occur
check e il findall]
-
Lezione 10, 12/11/97. Metaprogrammazione in Prolog. Esempi: Metainterprete
di base, metainterprete con regola di selezione rightmost, metainterprete
che restituisce l'albero di derivazione SLD. [Materiale di consultazione:
Sterling-Shapiro (paragrafo 17.2)]
-
Lezione 11, 13/11/97. Metainterprete per gerarchie isa. Implementazione
dell'Occurr check. [Materiale di consultazione: Dispense
sul metainterprete per gerarchie isa, Sterling-Shapiro (paragrafo 10.2)
per l'occur check]
-
Lezione 12, 14/11/97. Controllo del nondeterminismo: dichiarazioni
di Delay. [Dispense]
-
Lezione 13, 17/11/97. Constraint Logic Programming (CLP). [Dispense]
-
Lezione 14, 18/11/97. Cenni a tecniche di Constraint Solving. CLP
con dichiarazioni di Delay. Introduzione a Concurrent Constraint Programming.
[Dispense su Constraint Solving]
-
Lezione 15, 19/11/97. Concurrent Constraint Programming. [Dispense:
insieme a quelle della lezione 13]
-
Lezione 16, 20/11/97. Esempio: Il processo merge in Concurrent Constraint
Programming. Nondeterminismo dipendente dallo scheduling. Incompatibilita'
del backtracking.
Programmazione Object-Oriented
Libro consigliato: "Programming Languages",
di Ravi Sethi. Meglio la seconda edizione, pubblicata da Addison Wesley.
Il paradigma Object Oriented e' trattato nella parte terza (capitoli
6 e 7) della seconda edizione. Tale materiale si trova anche nella prima
edizione (tradotta in italiano), ma e' organizzato meno bene.
-
Lezione 1, 20/11/97. Introduzione alla programmazione object oriented.
Gli oggetti come entita' contenenti sia componenti passive (lo stato),
sia componenti attive (i metodi) e interagenti fra loro tramite scambio
di messaggi (attivazione di metodi). Concetto di classe. Creazione di un
oggetto.
-
Lezione 2, 21/11/97. Concetto di sottoclasse, inheritance, overriding.
Accenno al concetto di multiple inheritance (ma nel corso considereremo
solo la single inheritance).
Compitino:
Il compitino di Programmazione Logica si terra' venerdi' 5 dicembre
dalle 9 alle 12 / 12:30 nelle aule 710 e 218. Le lezioni di Basi di Dati
e Fisica di venerdi' 5 saranno spostate: si terranno al posto di LP in
aula 710 nei giorni mercoledi' 3 dicembre (11-13) e martedi' 16 dicembre
(11-13) rispettivamente.
I candidati che riportano un voto sufficiente possono decidere di far
valere il compitino come parte integrante dell'esame finale del corso.
In altre parole, il candidato che ha ottenuto un voto sufficiente, ed e'
soddisfatto di tale voto, puo' chiedere di essere esonerato dallo svolgimento
delle parti su Programmazione Logica sia allo scritto che all'orale dell'esame
finale. Per tali parti varra' allora il voto del compitino (ovviamente
normalizzato).
I candidati dovranno dichiarare al professor Moggi la loro decisione
riguardo al valersi o meno del voto del compitino prima del sostenimento
dell'esame finale.
Per commenti e suggerimenti su questa pagina si prega di scrivere a
Catuscia Palamidessi: firstname@disi.unige.it
Ultima modifica: 21 novembre 1997.