- 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 20/09/2022 al 13/12/2022
-
Orario delle lezioni (Modulo 2)
dal 20/02/2023 al 16/05/2023
-
Orario delle lezioni (Modulo 3)
dal 27/04/2023 al 18/05/2023
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.
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=17585
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=25802
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.