- Oggetto:
- Oggetto:
Metodi Formali dell'Informatica
- Oggetto:
Formal Methods in Computer Science
- Oggetto:
Anno accademico 2024/2025
- Codice attività didattica
- MFN0633
- Docente
- Ugo De' Liguoro (Docente)
- Corso di studio
- [008707] Laurea in Informatica
- Anno
- 3° anno
- Periodo
- Primo e secondo semestre
- Tipologia
- Caratterizzante
- Crediti/Valenza
- 9 CFU - Numero di ore - Number of hours: 72 (in aula)
- SSD attività didattica
- INF/01 - informatica
- Erogazione
- Tradizionale
- Lingua
- Italiano
- Frequenza
- Facoltativa
- Tipologia esame
- Orale
- Tipologia unità didattica
- corso
- Prerequisiti
-
Sono richieste conoscenze elementari di logica e buone conoscenze di programmazione e algoritmi; inoltre si assume che lo studente possegga nozioni di linguaggi formali.
Insegnamenti propedeutici (forniscono le competenze attese in ingresso): Matematica Discreta e Logica, Programmazione 1 e 2, Algoritmi e Strutture Dati, Linguaggi Formali e Traduttori.The students is expected to have elementary knowledge of logic and good competencies in programming and algorithms, as well as some notions on formal languages.
Preparatory Courses (providing the expected entry skills): Matematica Discreta e Logica, Programmazione 1 e 2, Algoritmi e Strutture Dati, Linguaggi Formali e Traduttori. - Oggetto:
Sommario insegnamento
- Oggetto:
Avvisi
- Oggetto:
Obiettivi formativi
L'insegnamento si propone di offrire agli studenti le conoscenze di base relative all'analisi ed alla verifica formale di proprietà dei programmi. Gli obiettivi dell'insegnamento dei metodi formali fanno parte degli Obiettivi formativi specifici del CdS in Informatica (L31), in particolare sono tra quelli relativi all'area di approfondimento dell'informatica. A questo scopo vengono introdotte le basi teoriche della modellazione e dell'analisi statica del comportamento dei programmi. Quindi sarà trattato un semplice linguaggio imperativo, di cui verranno esposti la semantica operazionale e quella logica, basata sulla logica di Hoare. Infine si utilizzeranno alcuni tools per la sperimentazione pratica delle metodologie trattate.The course aims to offer basic knowledge about some techniques of formal modeling analyses and verification of programs. We introduce the theoretical foundations of program analysis and verification. Then we will consider a simple procedural programming language, its operational semantics, and verification methods based on Hoare Logic. Eventually, we shall experiment with using proof assistants and tools for program verification.- Oggetto:
Risultati dell'apprendimento attesi
CONOSCENZA E CAPACITÀ DI COMPRENSIONE Acquisizione della conoscenza di alcune tecniche per la verifica formale della correttezza funzionale di programmi basate sulla logica e sulla specifica mediante "contratti".
CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE Acquisizione della capacità di costruire dimostrazioni formali di correttezza dei programmi mediante l'uso di un tool, ed in particolare di proof-assistant.
AUTONOMIA DI GIUDIZIO Acquisizione di consapevole autonomia di giudizio con riferimento alla valutazione alla necessità di sviluppare il codice dei programmi in modo ben strutturato e di documentarlo in modo formalmente preciso per facilitarne la verifica ed assicurarne l'affidabilità.
ABILITÀ COMUNICATIVE Acquisizione di competenze e strumenti per la comunicazione nella forma scritta e orale per documentare la correttezza ed affidabilità dei programmi o al contrario per evidenziarne i punti deboli.
CAPACITÀ DI APPRENDIMENTO Acquisizione di capacità autonome di apprendimento e di autovalutazione della propria preparazione, atte ad intraprendere gli studi successivi con un alto grado di autonomia.
KNOWLEDGE AND UNDERSTANDING Acquisition of theoretical and applicative skills for the functional verification of programs, based on logic and on program specifications by means of "contracts".
APPLYING KNOWLEDGE AND UNDERSTANDING Acquisition of the ability to construct formal proofs of correctness of programs w.r.t. formal specifications by means of proof assistants.
MAKING JUDGEMENTS Acquisition of aware judgment autonomy concerning the need to design and code well-structured programs and document them precisely with the aim to make easier their verification and ensure their affordability.
COMMUNICATION SKILLS Acquisition of oral and written communication skills and expertise as well as the ability to document the correctness and affordability of programs, or to make evident their weaknesses.
LEARNING SKILLS Acquisition of autonomous learning capacity and self-assessment of its
preparation, in order to undertake subsequent studies with a high degree of autonomy.- Oggetto:
Programma
- Metodi formali
- Automi e program graphs
- Comandi con guardie
- Verifica di programmi
- Analisi statica
- Language based security
- Model checking
- Fondamenti di linguaggi di programmazione procedurali
- Semantica operazionale big-step e small-step
- Sistemi di tipo per IMP
- Tipi per la sicurezza
- Logica di Hoare
- Verification conditions
- Verifica funzionale di programmi imperativi ed object-oriented
- Specifica con asserzioni
- Loop ed invarianti
- Tipi di dato induttivi
- Tipi di dato astratto e moduli
- Specifica e verifica di oggetti e classi
- Formal methods
- Automata and program graphs
- Guarded commands
- Program verification
- Progrogram analysis
- Language-based security
- Model checking
- Foundation of procedural programming languages
- Big-step and small-step operational semantics
- Type systems for IMP
- Types for security
- Hoare logic
- Verification conditions
- Functional verification for imperative and object-oriented programs
- Specification via assertions
- Loops and invariants
- Inductive data types
- Abstract data types and modules
- Specification and verification of objects and classes
- Metodi formali
- Oggetto:
Modalità di insegnamento
Le lezioni si svolgeranno in presenza e verranno registrate. Le registrazioni, il testo, i lucidi, le dispense ed altro materiale didattico saranno forniti attraverso la pagina Moodle dell'insegnamento.Lectures will be in classes and they will be recorded. Recordings, texts, slides, and handouts as well as code and other material will be available on the course page on the Moodle platform.- Oggetto:
Modalità di verifica dell'apprendimento
L'esame consiste in un colloquio orale in cui, oltre agli argomenti della teoria indicati nel programma, verranno discusse le consegne effettuate attraverso la piattaforma Moodle in itinere o, per i non frequentanti, almeno una settimana prima dell'appello.The exam will consist of an oral discussion where besides the topics of the theory as indicated in the syllabus, assignments uploaded to the Moodle platform while the course is running or, for students who have not attended to the lectures, at least a week before the examination date.Testi consigliati e bibliografia
- Oggetto:
- Libro
- Titolo:
- Formal Methods. An Appetizer
- Anno pubblicazione:
- 2019
- Editore:
- Springer
- Autore:
- Flemming Nielson, Hanne Riis Nielson
- Obbligatorio:
- No
- Oggetto:
Il testo di Neielson & Nielson copre solo la prima parte del programma; per la seconda e la terza si utilizzaranno rispettivamente:
- Tobias Nipkow, Gerwin Klein: Concrete semantics Springer
- Rustan Leino, Program Proofs, MIT Press
Il testo di Nielson & Nielson e quello di Leino sono disponibili in biblioteca; quello di Nipkow e Klein si può ottenere liberamente in formato pdf dal sito suindicato.
- Oggetto:
Insegnamenti che mutuano questo insegnamento
- Metodi Formali dell'Informatica - Parte A (INF0190)Corso di laurea in Informatica
- Metodi Formali dell'Informatica - Parte A (INF0190)
- Registrazione
- Chiusa
- Apertura registrazione
- 15/09/2022 alle ore 00:00
- Chiusura registrazione
- 01/08/2023 alle ore 23:55
- Oggetto: