elenco   
        corso   

Programmazione: Metodi Formali

(Corso di Laurea in Informatica (quinquennale))

Codice: 4I068Crediti: 6Semestre: 1Sigla: PMF 

Docente

Salvatore Ruggieri   ruggieri@di.unipi.it  Stanza 321  Tel. 0502212782

Prerequisiti

Fondamenti dell'Informatica: Semantica

Obiettivi di apprendimento

L'enfasi è sull'uso pratico dei metodi formali nella dimostrazione di proprietà di programmi sequenziali e paralleli (terminazione, correttezza, equivalenza), nella sintesi di programmi corretti, nella trasformazione e ottimizzazione di programmi. Il corso si propone quindi di discutere gli aspetti metodologici e la applicabilità dei metodi formali alla programmazione su piccola/media scala.

Descrizione

Il corso presenta l'uso del sistema di prova basato sulle triple di Hoare per la dimostrazione di proprietà di programmi scritti in linguaggi di crescente complessità. Si inizia con un semplice linguaggio imperativo deterministico e poi si passa a trattare il parallelismo prima in un linguaggio con processi paralleli disgiunti, poi in un linguaggio in cui i processi condividono variabili e, infine, in un linguaggio arricchito con primitive di sincronizzazione.

English Description

The emphasis is on the practical use of formal methods in proving properties of sequential and parallel programs (termination, correctness, equivalence). The aim is to discuss the methodological aspects and the applicability of formal methods to small/medium scale programming.

The main topic is the use of Hoarès Proof Systems to prove correctness and termination of languages of increasing complexity: a deterministic sequential language, a language allowing disjoint parallel programs, a language allowing shared variables among parallel programs, and a language allowing also synchronization among programs.

Programma

Introduzione: il ruolo dei metodi formali nella programmazione, il problema della correttezza, verifica sintesi e trasformazione, metodo e formato di dimostrazione, programmazione imperativa e triple di Hoare, programmazione funzionale e ragionamento equazionale (4h)

Programmazione imperativa sequenziale deterministica: sintassi, semantica operazionale, teoria della dimostrazione, teorema di correttezza, studio di casi (6h)

Programmazione imperativa a parallelismo disgiunto: sintassi, semantica operazionale, teoria della dimostrazione, studio di casi (4h)

Programmazione imperativa parallela con condivisione di variabili : sintassi, semantica operazionale, teoria della dimostrazione, studio di casi (5h)

Programmazione parallela con sincronizzazione : sintassi, semantica operazionale, teoria della dimostrazione, studio di casi (7h)

Ore lezione: 25Ore esercitazione: 15   

Bibliografia

K.R.Apt and E.Olderog "Verification of sequential and concurrent programs", Second Edition Springer-Verlag 1997

Modalità di esame


Ulteriore pagina web del corso: http://www.di.unipi.it/~ruggieri


home


email