81609 - LINGUAGGI, COMPILATORI E MODELLI COMPUTAZIONALI

Anno Accademico 2021/2022

  • 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)

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.

Modifica 
Lezioni frontali con lavagna/PC/proiettore e esperienze in laboratorio.     

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