- Docente: Roberto Gorrieri
- Crediti formativi: 12
- SSD: INF/01
- Lingua di insegnamento: Italiano
- Moduli: Roberto Gorrieri (Modulo 1) Maurizio Gabbrielli (Modulo 2) Saverio Giallorenzo (Modulo 3)
- Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2) Convenzionale - Lezioni in presenza (Modulo 3)
- Campus: Bologna
- Corso: Laurea in Informatica (cod. 8009)
-
Orario delle lezioni (Modulo 1)
dal 17/09/2024 al 03/12/2024
-
Orario delle lezioni (Modulo 2)
dal 19/02/2025 al 15/05/2025
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 modulo, primo semestre; docente:Roberto Gorrieri
http://www.cs.unibo.it/~gorrieri/
Evoluzione dei linguaggi di programmazione: Dai linguaggi assembler ai linguaggi ad alto livello. Macchine astratte, interpreti, compilatori. Descrizione di un linguaggio: Sintassi, semantica, pragmatica e implementazione. Sinatssi in BNF. Semantica operazionale strutturata (SOS). Grammatiche regolari, automi finiti, espressioni regolari: equivalenze e risultati principali (p.e., pumping lemma). Costruzione di analizzatori lessicali; cenni a Lex. Grammatiche libere da contesto, automi a pila: equivalenze e risultati principali (p.e., pumping theorem). Grammatiche libere deterministiche: algoritmi di riconoscimento e costruzione dell'albero di derivazione; grammatiche LL(1), LR(0), SLR, LR(1), LALR(1). Cenni a YACC.
Secondo modulo, secondo semestre; docenti: Maurizio Gabbrielli e Saverio Giallorenzo
http://www.unibo.it/SitoWebDocente/default.htm?UPN=maurizio.gabbrielli%40unibo.it
https://www.unibo.it/sitoweb/saverio.giallorenzo2
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 logico: unificazione, derivazioni SLD, Prolog. Cenni al paradigma funzionale: Scala. Cenni alla programmazione concorrente e service oriented: Jolie.
Testi/Bibliografia
Maurizio Gabbrielli, Simone Martini
Linguaggi di programmazione: principi e paradigmi. Seconda edizione. McGraw-Hill Italia, 2010. ISBN 88-386-6573-8.
Maurizio Gabbrielli, Simone Martini, Saverio Giallorenzo,
Programming Languages: Principles and Paradigms (second edition), Springer, 2023. ISBN 978-3031341434
Metodi didattici
Lezioni frontali ed esercitazioni
Modalità di verifica e valutazione dell'apprendimento
Esame scritto ed esame orale (da sostenersi nella stessa sessione). 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
https://virtuale.unibo.it/course/view.php?id=35781
http://www.cs.unibo.it/~gorrieri/LP/lp.html (login:esame password:linguaggi)
http://www.cs.unibo.it/~gabbri/corsi/linguaggi.htmlLink ad altre eventuali informazioni
https://virtuale.unibo.it/course/view.php?id=35781
Orario di ricevimento
Consulta il sito web di Roberto Gorrieri
Consulta il sito web di Maurizio Gabbrielli
Consulta il sito web di Saverio Giallorenzo
SDGs


L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.