- Docente: Enrico Denti
- Crediti formativi: 6
- SSD: ING-INF/05
- Lingua di insegnamento: Italiano
- Modalità didattica: Convenzionale - Lezioni in presenza
- Campus: Bologna
- Corso: Laurea Specialistica in Ingegneria informatica (cod. 0234)
Conoscenze e abilità da conseguire
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
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. Grammatiche e linguaggi basati su XML e loro interpretazione via XSLT.
Reti di Petri come modello per la descrizione di sistemi e relativa espressività e potenza computazionale. Introduzione di linguaggi fondazionali. Javascript come esempio di linguaggio con caratteristiche funzionali e come modello di linguaggio a oggetti basato su prototipi.
Testi/Bibliografia
Un elenco esaustivo di testi di riferimento e manuali è consultabile sia sul sito Web, sia sulle diapositive.
Il sito Web offre inoltre dispense che trattano in forma seminariale alcuni argomenti specifici approfondibili dallo studente nell'ambito dei progetti mirati.
Metodi didattici
Il corso viene erogato mediante proiezione diretta dal computer del docente, in aula, di diapositive Powerpoint (delle quali lo studente può liberamente scaricare gli stampati prima delle lezioni), in modo da evitare allo studente l'ansia di dover trascrivere tutto ciò che viene mostrato, permettendogli di concentrarsi sui contenuti esposti. 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 nello sviluppo e nella discussione di un progetto preventivamente concordato con il docente.
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. Il sito fornisce inoltre suggerimenti per ulteriori esercizi e approfondimenti.
Link ad altre eventuali informazioni
Orario di ricevimento
Consulta il sito web di Enrico Denti