72940 - LINGUAGGI E MODELLI COMPUTAZIONALI M

Scheda insegnamento

SDGs

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

Istruzione di qualità

Anno Accademico 2020/2021

Conoscenze e abilità da conseguire

Al termine del corso lo studente possiede conoscenze approfondite relativamente ai linguaggi, ai paradigmi di programmazione e ai relativi modelli computazionali; possiede inoltre le basi della teoria della computabilità e conosce i concetti base della programmazione funzionale, secondo un approccio multi-paradigma e multi-linguaggio. In particolare: - conosce i principali metodi per la definizione della sintassi e della semantica dei linguaggi - sa applicare le principali tecniche di riconoscimento e valutazione per la costruzione di interpreti e compilatori, utilizzando gli strumenti più diffusi - conosce e sa applicare in modo appropriato paradigmi di programmazione differenti, anche in modo blended, secondo un approccio multi-paradigma e multi-linguaggio.

Contenuti

Il corso discute sotto diverse angolazioni il rapporto fra i linguaggi di programmazione, le relative tecniche di riconoscimento e interpretazione e i corrispondenti modelli computazionali, unendo una solida base teorica a una forte componente di sperimentazione pratica.

La prima parte del corso presenta i concetti fondamentali e le metodologie per la definizione della sintassi e della semantica dei linguaggi di programmazione, discute le relative tecniche di riconoscimento, interpretazione e valutazione e ne mostra l'applicazione pratica in casi concreti discussi sistematicamente.

La seconda parte del corso si focalizza invece sui modelli computazionali, secondo un approccio multi-paradigma e multi-linguaggio.

Principali contenuti:

  • Computabilità e Macchine di Turing (5h)
  • Descrizione formale dei linguaggi: grammatiche formali e loro proprietà, classificazione di Chomsky. Relazione fra tipi di 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. (18h)
  • Organizzazione e costruzione di interpreti e compilatori e relativi supporti a tempo di esecuzione:  architettura ed esempi concreti in Java. Strumenti per la generazione di analizzatori lessicali e sintattici. (14h)
  • Cenni ad approcci Model-Driven: il caso Xtext (3h)
  • Processi computazionali iterativi e ricorsivi, concetti base della programmazione funzionale, modelli per la valutazione di funzioni, basi di Lambda calcolo. (9h)
  • Javascript come linguaggio dinamico, funzionale a oggetti basato su prototipi (6h)
  • Scala e Kotlin come esempi di linguaggi blended basato su un approccio multi-paradigma e interoperabile con Java. (9h)

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, didiapositive Powerpoint (delle quali lo studente può liberamente scaricare gli stampatiprima delle lezioni).Lezioni ed esercitazioni sono continuamente intercalate, alternando l'esposizione di unconcetto o costrutto linguistico con i relativi esempi, di cui viene immediatamentemostrato 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, durante il quale è richiesto anche di svolgere esercizi inerenti alle tematiche del corso, fornire esemplificazioni dei concetti discussi, anche in modo comparativo. 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 alezione a cura del docente, nonché alcune dispense integrative; un elenco esaustivo ditesti 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