- Docente: Simone Martini
- Crediti formativi: 12
- SSD: INF/01
- Lingua di insegnamento: Italiano
- Moduli: Simone Martini (Modulo 1) Roberto Gorrieri (Modulo 2)
- Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
- Campus: Bologna
- Corso: Laurea in Informatica (cod. 8009)
Conoscenze e abilità da conseguire
Al termine del corso, lo studente: - conosce i principali concetti della teoria dei linguaggi formali e li sa applicare per la classificazione di semplici linguaggi; - conosce le principali tecniche per l'analisi sintattica dei linguaggi di programmazione; - conosce la struttura di un linguaggio di programmazione e le tecniche per implementare la sua macchina astratta; - conosce il paradigma orientato agli oggetti ed un altro paradigma non imperativo.
Contenuti
Il corso è strutturato in due moduli, strettamente integrati.
Primo semestre; docente: Roberto
Gorrieri
Evoluzione dei linguaggi di programmazione: Dai linguaggi
assembler ai linguaggi ad alto livello. Macchine astratte,
interpreti, compilatori. Sintassi (BNF) e semantica (SOS: cenni).
Grammatiche regolari, automi regolari, espressioni regolari:
equivalenze e risultati principali (p.e., pumping lemma);
costruzione di analizzatori lessicali. Grammatiche libere da
contesto, automi a pila: equivalenze e risultati principali
(p.e., pumping lemma). Grammatiche libere deterministice: algoritmi
di riconoscimento e costruzione dell'albero di derivazione;
grammatiche LL(1), LR(0), SLR, LR(1), LALR.
Secondo semestre; docente: Simone Martini
Ambiente, regole di scoping e loro implementazione. Pila dei
record di attivazione; heap. Gestione della memoria: garbage
collection. Controllo di sequenza, procedure, ricorsione. Tipi e
controllo di tipo. Parametri e modalità di passaggio: per valore,
per riferimento, per risultato, per nome. Parametri funzionali.
Chiusure. Eccezioni. Il paradigma object-oriented: classi e
oggetti, inizializzazione, inheritance e late-binding, il modello
operazionale, differenza tra subtyping e inheritance. Cenni al
paradigma funzionale: regole di valutazione.
Testi/Bibliografia
Maurizio Gabbrielli, Simone Martini Linguaggi di programmazione:
principi e paradigmi. Seconda edizione. McGraw-Hill
Italia, 2010. ISBN 88-386-6573-8.
Metodi didattici
Lezioni frontali ed esercitazioni
Modalità di verifica e valutazione dell'apprendimento
Esame scritto ed esame orale (da sostenersi nello stesso appello).
Un solo esame copre entrambe i moduli.
Potranno essere somministrati compiti durante l'anno che daranno
luogo all'esonero dallo scritto (ma non dall'orale).
Strumenti a supporto della didattica
http://www.cs.unibo.it/~martini/PP/LP-index.html
Link ad altre eventuali informazioni
http://www.cs.unibo.it/~martini/PP/LP-index.html
Orario di ricevimento
Consulta il sito web di Simone Martini
Consulta il sito web di Roberto Gorrieri