Università degli Studi di Urbino Carlo Bo / Portale Web di Ateneo


LINGUAGGI DI PROGRAMMAZIONE E COMPILATORI

A.A. CFU
2010/2011 12
Docente Email Ricevimento studentesse e studenti
Alessandro Aldini

Assegnato al Corso di Studio

Giorno Orario Aula

Obiettivi Formativi

Il Corso ha l'obiettivo di introdurre i concetti di base relativi alla sintassi e alla semantica dei linguaggi di programmazione e le loro applicazioni allo sviluppo dei compilatori.

Programma

01. Introduzione alla compilazione:
  01.01 Architettura e fasi di un compilatore.
  01.02 Grammatiche a struttura di frase, linguaggi formali, classificazione di Chomsky.

02. Linguaggi regolari:
  02.01 Automi a stati finiti deterministici.
  02.02 Automi a stati finiti non deterministici.
  02.03 Automi a stati finiti con ε-transizioni.
  02.04 Grammatiche lineari destre.
  02.05 Proprietà di chiusura dei linguaggi regolari.
  02.06 Espressioni regolari.
  02.07 Relazione tra espressioni regolari e automi a stati finiti.
  02.08 Pumping lemma per linguaggi regolari.
  02.09 Minimizzazione di automi a stati finiti.

03. Linguaggi liberi:
  03.01 Grammatiche libere e alberi sintattici.
  03.02 Semplificazione delle grammatiche libere, forma normale di Chomsky.
  03.03 Pumping lemma per linguaggi liberi, proprietà di chiusura dei linguaggi liberi.
  03.04 Automi a pila non deterministici.
  03.05 Relazione tra grammatiche libere e automi a pila non deterministici.

04. Analisi sintattica:
  04.01 Parsing top-down, parser e grammatiche LL(1).
  04.02 Parsing bottom-up.
  04.03 Parser e grammatiche SLR.
  04.04 Parser e grammatiche LR(1) e LALR(1).

05. Analisi semantica:
  05.01 Alberi attribuiti, alberi di sintassi astratta.
  05.02 Nomi e regole di scoping.
  05.03 Tipi di dato e type checking.

06. Generazione del codice:
  06.01 Organizzazione della memoria e passaggio dei parametri.
  06.02 Generazione del codice intermedio.
  06.03 Compilazione di espressioni aritmetiche.
  06.04 Compilazione di espressioni booleane.
  06.05 Compilazione di comandi e costrutti di controllo.

07. Semantica operazionale:
  07.01 Semantica operazionale naturale di un semplice linguaggio imperativo (While).
  07.02 Semantica operazionale di While con procedure (scoping statico e dinamico).

08. Semantica denotazionale:
  08.01 Semantica denotazionale di While.
  08.02 Semantica denotazionale di While con procedure (call-by-value e call-by-reference).

09. Programmazione funzionale in Haskell:
  09.01 Introduzione al linguaggio Haskell: espressioni, valori, tipi di dato primitivi.
  09.02 Funzioni e ricorsione.
  09.03 Polimorfismo.
  09.04 Coppie, tuple e liste.
  09.05 Funzioni di ordine superiore, specializzazione e currying.
  09.06 Definizione di tipi di dato: alias di tipo e tipi algebrici.
  09.07 Moduli.
  09.08 Monadi e input/output.

10. Attività di laboratorio:
  10.01 Esercizi di base su espressioni, valori e tipi.
  10.02 Esercizi su funzioni e ricorsione.
  10.03 Esercizi su coppie, tuple e liste.
  10.04 Esercizi su funzioni di ordine superiore.
  10.05 Esercizi su tipi algebrici.
  10.05 Esercizi su input/output in Haskell.
  10.06 Analisi lessicale in Haskell.
  10.07 Analisi sintattica in Haskell.

Eventuali Propedeuticità

Logica Matematica, Programmazione degli Elaboratori, Architettura degli Elaboratori, Algoritmi e Strutture Dati.

Modalità Didattiche, Obblighi, Testi di Studio e Modalità di Accertamento

Modalità didattiche

Lezioni frontali ed esercitazioni di laboratorio

Obblighi

Nessuno.

Testi di studio

Hopcroft, Motwani, Ullman, "Automi, Linguaggi e Calcolabilità", Addison-Wesley, 2009

Hopcroft, Motwani, Ullman, "Introduction to Automata Theory, Languages, and Computation", Addison-Wesley, 2007

Aho, Lam, Sethi, Ullman, "Compilers: Principles, Techniques, and Tools", Addison-Wesley, 2007

Nielson, Nielson, "Semantics with Applications: An Appetizer", Springer, 2007

Thompson, "The Craft of Functional Programming", Addison-Wesley, 1999.

Hutton, "Programming in Haskell", Cambridge University Press, 2007.

Modalità di
accertamento

Prova scritta, progetto di laboratorio e prova orale

Disabilità e DSA

Le studentesse e gli studenti che hanno registrato la certificazione di disabilità o la certificazione di DSA presso l'Ufficio Inclusione e diritto allo studio, possono chiedere di utilizzare le mappe concettuali (per parole chiave) durante la prova di esame.

A tal fine, è necessario inviare le mappe, due settimane prima dell’appello di esame, alla o al docente del corso, che ne verificherà la coerenza con le indicazioni delle linee guida di ateneo e potrà chiederne la modifica.

Note

Il corso è erogato sia nel "percorso in presenza" che nel "percorso online" del Corso di Laurea di Informatica Applicata.

« torna indietro Ultimo aggiornamento: 21/02/2011


Il tuo feedback è importante

Raccontaci la tua esperienza e aiutaci a migliorare questa pagina.

Posta elettronica certificata

amministrazione@uniurb.legalmail.it

Social

Università degli Studi di Urbino Carlo Bo
Via Aurelio Saffi, 2 – 61029 Urbino PU – IT
Partita IVA 00448830414 – Codice Fiscale 82002850418
2024 © Tutti i diritti sono riservati

Top