Obiettivi formativi
Introdurre gli studenti ai metodi formali per la specifica della semantica dei linguaggi di programmazione ed alle tecniche formali per verificare l'aderenza del comportamento di un programma ad una specifica parziale.
Prerequisiti
Fondamenti dell'informatica.
Contenuti dell'insegnamento
Definizione di semantiche operazionali e denotazionali di semplici linguaggi imperativi sequenziali; ragionamento formale circa il comportamento di semplici programmi; nozioni di equivalenza comportamentale dei programmi.
Programma esteso
Sintassi e semantica dei programmi. Semantica operazionale strutturata big step e small step. Principi di induzione e definizioni induttive. Semantica denotazionale. Ordinamenti, domini e punti fissi. Semantica assiomatica. Verifica di correttezza dei programmi. Analisi statica dei programmi.
Bibliografia
The Semantics of Programming Languages: An Elementary Introduction using Structural Operational Semantics. Matthew Hennessy, Wiley, 1990. [http://www.cogs.susx.ac.uk/users/matthewh/semnotes.ps.gz]
La Semantica Formale dei Linguaggi di Programmazione. Glynn Winskel. MIT Press, 1993.
Metodi didattici
Lezioni, esercitazioni e progetti.
Modalità verifica apprendimento
La valutazione avverrà con le seguenti modalità: assegnazione, durante il corso, di esercizi da svolgere a casa e da riconsegnare la settimana successiva; svolgimento di un progetto finale; esame orale conclusivo.
Altre informazioni
- - -
Obiettivi agenda 2030 per lo sviluppo sostenibile
- - -