72940 - LINGUAGGI E MODELLI COMPUTAZIONALI M

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