Anno Accademico 2017/2018
- Docente: Enrico Denti
- Crediti formativi: 8
- SSD: ING-INF/05
- Lingua di insegnamento: Italiano
- Modalità didattica: Convenzionale - Lezioni in presenza
- Campus: Bologna
- Corso: Laurea Magistrale in Ingegneria informatica (cod. 0937)
Conoscenze e abilità da conseguire
Introduzione al rapporto fra linguaggi e progettazione a livello algoritmico e sistemistico. Metodi per la definizione della sintassi e della semantica dei linguaggi di programmazione e di specifica e analisi dei relativi modelli computazionali. Tecniche di riconoscimento e valutazione.
Contenuti
Fornire una descrizione ragionata sui concetti essenziali dei
linguaggi di programmazione, correlandoli ai diversi modelli
computazionali alla base dei diversi linguaggi e al problema
del loro riconoscimento. Analizzare l'impatto dei
diversi linguaggi e modelli sulla produzione del software
medianti esempi comparati in diversi stili. Introduzione ai
formalismi delle Reti di Petri e dei linguaggi fondazionali.
Contenuti di dettaglio: Descrizione formale e implementazione dei
linguaggi: grammatiche formali e loro proprietà,
classificazione di Chomsky. Relazione fra grammatiche e automi
riconoscitori. Analisi lessicale e tecniche di analisi
sintattica top-down e bottom-up per linguaggi regolari e
context-free. Cenni sulla descrizione formale della semantica.
Organizzazione e costruzione di interpreti e compilatori e
relativi supporti a tempo di esecuzione: architettura ed
esempi concreti in Java. Strumenti semi-automatici per la
generazione di analizzatori lessicali e sintattici.
Introduzione agli stili di programmazione non imperativi:
cenni al linguaggio Prolog come possibile caso di esempio di
analisi lessicale, sintattica, e di costruzione di interpreti
e compilatori in stile non imperativo.
Programmazione multi-paradigma e multi-linguaggio: Javascript
come esempio di linguaggio dinamico, funzionale e a oggetti basato
su prototipi; Scala come esempio di linguaggio blended su
piattaforma Java. Cenni al lambda calcolo.
Testi/Bibliografia
Un elenco aggiornato di testi di riferimento e manuali è consultabile sia sul sito Web, sia sulle diapositive.
Metodi didattici
Il corso viene erogato mediante proiezione in aula, di diapositive Powerpoint (delle quali lo studente può liberamente scaricare gli stampati prima delle lezioni). Lezioni ed esercitazioni sono continuamente intercalate, alternando l'esposizione di un concetto o costrutto linguistico con i relativi esempi, di cui viene immediatamente mostrato l'uso. Ulteriori approfondimenti ed esercizi sono svolti direttamente in aula. Sono inoltre proposti continuamente spunti per esercitazioni autonome di laboratorio, fortemente consigliate per la preparazione.
Modalità di verifica e valutazione dell'apprendimento
La prova d'esame consiste in un colloquio orale; se lo studente ha inserito nel piano di studi anche l'Attività Progettuale corrispondente, durante il colloquio potrà essere discusso anche il progetto svolto. E' comunque possibile sostenere i due colloqui separatamente.
Strumenti a supporto della didattica
Sono disponibili sul sito Web del corso copia delle diapositive proiettate e discusse a lezione a cura del docente, nonché alcune dispense integrative; un elenco esaustivo di testi di riferimento e manuali è consultabile sia sul sito Web, sia sulle diapositive. Il sito fornisce inoltre suggerimenti per ulteriori esercizi e approfondimenti.
Link ad altre eventuali informazioni
http://enricodenti.disi.unibo.it
Orario di ricevimento
Consulta il sito web di Enrico Denti