- Docente: Mario Bravetti
- Crediti formativi: 12
- SSD: INF/01
- Lingua di insegnamento: Italiano
- Modalità didattica: Convenzionale - Lezioni in presenza
- Campus: Cesena
- Corso: Laurea Magistrale in Ingegneria e scienze informatiche (cod. 8614)
-
dal 19/09/2023 al 13/12/2023
Conoscenze e abilità da conseguire
Al termine del corso lo studente conosce: - gli aspetti fondamentali riguardanti la logica, gli automi, le espressioni regolari e le grammatiche - le tecniche di progettazione ed implementazione, tramite compilatori, dei linguaggi di programmazione - linguaggi, modelli e tecniche per la descrizione e verifica di proprietà dei sistemi software concorrenti e distribuiti.
Contenuti
Automi e linguaggi formali:
- automi a stati finiti
- espressioni regolari e loro relazione con gli automi a stati finiti
- grammatiche libere dal contesto
- automi a pila e loro relazione con le grammatiche libere dal contesto
- macchine di Turing
- linguaggi ricorsivi e ricorsivamente enumerabili e loro relazione con le macchine di Turing
Logica di base:
- logica proposizionale
- logica dei predicati
Compilatori:
- analizzatori lessicali
- analizzatori sintattici
- controlli statici di programmi
- generazione di codice
Modelli computazionali:
- sistemi di transizione per la modellazione del comportamento dei sistemi
- logiche temporali per la specifica e verifica di proprietà dei sistemi
- processi concorrenti a stati finiti con sincronizzazione e interleaving
- reti di Petri
Testi/Bibliografia
Hopcroft, Motwani, Ullman. "Automi, Linguaggi e Calcolabilità", terza edizione. Addison-Wesley, 2009.
Aho, Lam, Sethi, Ullman. "Compilatori: principi, tecniche e strumenti", seconda edizione. Addison-Wesley, 2009.
Huth, Ryan. "Logic in Computer Science: Modelling and Reasoning about Systems", second edition. Cambridge University Press, 2004.Metodi didattici
Modifica Metodi didattici Lezioni frontali con lavagna/PC/proiettore e esperienze in laboratorio.
In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio in modalità e-learning.
Modalità di verifica e valutazione dell'apprendimento
La verifica finale prevede un esame scritto con due tipi di domande:
- domande aventi lo scopo di verificare l'acquisizione delle competenze teoriche del corso;
- esercizi aventi lo scopo di verificare la capacità di applicazione dei concetti teorici su semplici casi di studio.
Una prova progettuale facoltativa addizionale, che può essere effettuata in gruppi di al massimo 4 studenti, permette la verifica delle abilità relative all'implementazione dei linguaggi di programmazione. Tale prova consiste nello sviluppo di un compilatore per un linguaggio funzionale object oriented.
L'esame scritto consente di ottenere un voto massimo di 27 trentesimi che può essere incrementato (fino a 7 punti addizionali) tramite la prova progettuale.
Strumenti a supporto della didattica
Lavagna, PC, videoproiettore, laboratorio informatico.
Orario di ricevimento
Consulta il sito web di Mario Bravetti