COMPILATORI

Gennaro COSTAGLIOLA COMPILATORI

0522500134
DIPARTIMENTO DI INFORMATICA
CORSO DI LAUREA MAGISTRALE
INFORMATICA
2024/2025



ANNO CORSO 1
ANNO ORDINAMENTO 2016
PRIMO SEMESTRE
CFUOREATTIVITÀ
648LEZIONE
324LABORATORIO
Obiettivi
QUESTO CORSO HA L’OBIETTIVO DI INTRODURRE I CONCETTI FONDAMENTALI E LE TECNICHE UTILIZZATE PER COSTRUIRE UN SEMPLICE COMPILATORE DESCRIVENDO SIA ASPETTI TEORICI CHE PRATICI.
CONOSCENZA E CAPACITÀ DI COMPRENSIONE
LO STUDENTE ACQUISIRÀ LA CONOSCENZA:
- DEI CONCETTI PRINCIPALI DEI LINGUAGGI DI PROGRAMMAZIONE
- DELLE TECNICHE DI SVILUPPO PER L'IMPLEMENTAZIONE DI UN LINGUAGGIO DI PROGRAMMAZIONE
- DELLE FASI DI UN COMPILATORE
- DEI FORMALISMI NECESSARI PER LA SPECIFICA FORMALE DI UN LINGUAGGIO DI PROGRAMMAZIONE
- DEGLI ALGORITMI PRINCIPALI PER LA GENERAZIONE AUTOMATICA DI TRADUTTORI E COMPILATORI
CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE
LO STUDENTE SARÀ IN GRADO DI:
- UTILIZZARE TOOLS DI GENERAZIONE AUTOMATICA PER L'IMPLEMENTAZIONE DEI LINGUAGGI DI PROGRAMMAZIONE
- SVILUPPARE UN COMPILATORE PER UN SEMPLICE LINGUAGGIO DI PROGRAMMAZIONE
AUTONOMIA DI GIUDIZIO
LO STUDENTE SARÀ IN GRADO DI:
- VALUTARE LA QUALITÀ E LA COMPLESSITÀ DI UN LINGUAGGIO DI PROGRAMMAZIONE
- PERSEGUIRE GLI OBIETTIVI NECESSARI PER IL COMPLETAMENTO DI UN PROGETTO
- SELEZIONARE GLI STRUMENTI PIÙ ADATTI NELLO SVILUPPO DI UN COMPILATORE
ABILITÀ COMUNICATIVE
LO STUDENTE SARÀ IN GRADO DI:
- RAPPRESENTARE E COMUNICARE, MEDIANTE TESTI O STRUMENTI VIRTUALI, RISULTATI DI RICERCHE O ELABORAZIONI PROPRIE.
- SAPER DESCRIVERE, IN FORMA SCRITTA, IN MODO CHIARO E SINTETICO ED ESPORRE ORALMENTE CON PROPRIETÀ DI LINGUAGGIO LE CARATTERISTICHE DI UN PROGETTO SOFTWARE
CAPACITÀ DI APPRENDIMENTO
LO STUDENTE SARÀ IN GRADO DI:
- APPLICARE LE CONOSCENZE ACQUISITE NELLA COMPRENSIONE DI NUOVI LINGUAGGI DI PROGRAMMAZIONE
- APPROFONDIRE GLI ARGOMENTI TRATTATI USANDO MATERIALI DIVERSI DA QUELLI PROPOSTI
- PROCEDERE ALL’AGGIORNAMENTO CONTINUO DELLE PROPRIE CONOSCENZE UTILIZZANDO LA DOCUMENTAZIONE TECNICA
Prerequisiti
IL CORSO RICHIEDE LA CONOSCENZA DI STRUTTURE DATI E ALGORITMI, ARCHITETTURA, LINGUAGGI DI PROGRAMMAZIONE DI ALTO LIVELLO
Contenuti
IL CORSO INTRODUCE LO STUDENTE AI CONCETTI PRINCIPALI DELLO SVILUPPO DI UN COMPILATORE SIA DAL LATO FRONT END CHE BACKEND. GLI ARGOMENTI PRINCIPALI SONO:
• STORIA, PARADIGMI E CARATTERISTICHE DEI LINGUAGGI DI PROGRAMMAZIONE (2 ORE)
• ANALISI LESSICALE (10 ORE)
• SPECIFICA LESSICALE DEI LINGUAGGI DI PROGRAMMAZIONE, FLEX (4 ORE)
• CONCETTI BASE DELLE GRAMMATICHE (2 ORE)
• PARSING TOP DOWN E BOTTOM UP (14 ORE)
• SPECIFICA SINTATTICA DEI LINGUAGGI DI PROGRAMMAZIONE, JAVACUP/BISON (4 ORE)
• TRADUZIONI GUIDATE DALLA SINTASSI (8 ORE)
• RAPPRESENTAZIONI INTERMEDIE (8 ORE)
• ANALISI SEMANTICA E TYPE CHECKING (8 ORE)
• INTRODUZIONE ALLA GESTIONE DELLA MEMORIA A RUNTIME (2 ORE)
• GENERAZIONE DEL CODICE (4 ORE)
Metodi Didattici
LE LEZIONI FRONTALI VENGONO SVOLTE PER CIRCA 2/3 PER LA PRESENTAZIONE DEGLI ARGOMENTI E PER CIRCA 1/3 SONO RIVOLTE AD ESERCITAZIONI IN CLASSE. LO STUDIO INDIVIDUALE PREVEDE ANCHE UN’ATTIVITÀ PROGETTUALE PER L’UTILIZZO DEI TOOLS PRESENTATI.
DURANTE IL CORSO VERRANNO PROPOSTI DEI TEST DI AUTOVALUTAZIONE PUBBLICATI SUL SITO DEL CORSO.
LA DISCUSSIONE CON ALTRI STUDENTI E CON IL DOCENTE VERRÀ STIMOLATA SIA IN CLASSE, SIA UTILIZZANDO IL FORUM SUPPORTATO DAL SITO DEL CORSO.
LO SVOLGIMENTO DELLE ESERCITAZIONI E LA FREQUENZA DEL CORSO SONO FORTEMENTE CONSIGLIATE.
Verifica dell'apprendimento
LA VALUTAZIONE DELLE CONOSCENZE E DELLE CAPACITÀ ACQUISITE DA PARTE DEGLI STUDENTI È BASATA SU UNA PROVA SCRITTA ED UNA PROVA ORALE. LA PROVA SCRITTA RIGUARDERÀ DOMANDE APERTE ED ESERCIZI TESI A VALUTARE IL RAGGIUNGIMENTO DEGLI OBIETTIVI DEL CORSO. NELLA PROVA ORALE SI DISCUTERÀ DEL MATERIALE ILLUSTRATO IN CLASSE E DELLA REALIZZAZIONE OBBLIGATORIA DI UN PROGETTO SULLO SVILUPPO DI UN COMPILATORE. LA DISCUSSIONE INCLUDERÀ LA RICHIESTA DI MODIFICHE DEL CODICE DEL PROPRIO ELABORATO PROGETTUALE DIRETTAMENTE AL PC. LA VALUTAZIONE FINALE È DATA DALLA SOMMA DEI VOTI OTTENUTI DALLE PROVE. IN PARTICOLARE, SIA LA PROVA SCRITTA CHE LE MODIFICHE AL PC CON DISCUSSIONE DEL PROGETTO AVRANNO, CIASCUNA, UN PUNTEGGIO MASSIMO DI 16 PUNTI.
DURANTE IL CORSO SONO PREVISTE DUE PROVE INTERCORSO CHE, SE SUPERATE, SOSTITUIRANNO LA PROVA SCRITTA DEL I APPELLO.
IL SUPERAMENTO DELLO SCRITTO NEGLI APPELLI GENNAIO-FEBBRAIO RESTERÀ VALIDO FINO ALL'INIZIO DEL SECONDO SEMESTRE, QUELLO DI MARZO ENTRO LO STESSO MESE, QUELLO DI GIUGNO-LUGLIO ENTRO LUGLIO QUELLO DI SETTEMBRE FINO ALL’INIZIO DEI CORSI DEL PRIMO SEMESTRE, QUELLO DI NOVEMBRE ENTRO LO STESSO MESE.
Testi
V. AHO, R. SETHI, AND J. D. ULLMAN, COMPILERS: PRINCIPLES, TECHNIQUES, AND TOOLS, ADDISON-WESLEY, SECOND EDITION 2007

APPUNTI DEL DOCENTE ED ALTRO MATERIALE ELETTRONICO: SITO WEB DEL CORSO.

DI CONSULTAZIONE:
PRATT, T. W. AND M. V. ZELKOWITZ, PROGRAMMING LANGUAGES: DESIGN AND IMPLEMENTATION, 4RD ED., PRENTICE-HALL, 2000
Altre Informazioni
LA BACHECA DEL CORSO PER NOTIZIE ED ALTRE INFORMAZIONI ED IL DIARIO DELLE ATTIVITÀ SONO PUBBLICATI SUL SITO DEL CORSO.

GLI STUDENTI DEVONO ESSERE PREPARATI A TRASCORRERE UNA CONGRUA QUANTITÀ DI TEMPO NELLO STUDIO AL DI FUORI DELLE LEZIONI. UNA PREPARAZIONE SODDISFACENTE RICHIEDE IN MEDIA DUE ORE DI STUDIO PER CIASCUNA ORA TRASCORSA IN AULA.
Orari Lezioni

  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2024-11-18]