COMPILATORI

Gennaro COSTAGLIOLA COMPILATORI

0522500134
DIPARTIMENTO DI INFORMATICA
CORSO DI LAUREA MAGISTRALE
INFORMATICA
2021/2022



OBBLIGATORIO
ANNO CORSO 1
ANNO ORDINAMENTO 2016
PRIMO SEMESTRE
CFUOREATTIVITÀ
648LEZIONE
324LABORATORIO
Obiettivi
CONOSCENZA E CAPACITÀ DI COMPRENSIONE
• I CONCETTI PRINCIPALI DEI LINGUAGGI DI PROGRAMMAZIONE
• LE TECNICHE DI SVILUPPO PER L'IMPLEMENTAZIONE DI UN LINGUAGGIO DI PROGRAMMAZIONE
• LE FASI DI UN COMPILATORE
• I FORMALISMI NECESSARI PER LA SPECIFICA FORMALE DI UN LINGUAGGIO DI PROGRAMMAZIONE
• GLI ALGORITMI PRINCIPALI PER LA GENERAZIONE AUTOMATICA DI TRADUTTORI E COMPILATORI

CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE
• L’USO DI TOOLS QUALI FLEX E JAVACUP PER L'IMPLEMENTAZIONE DEI LINGUAGGI DI PROGRAMMAZIONE
• LO SVILUPPO DELLE PRIME FASI DI UN COMPILATORE
Prerequisiti
THE COURSE REQUIRES THE BASIC KNOWLEDGE OF DATA STRUCTURES AND ALGORITHMS, ARCHITECTURE, HIGH-LEVEL LANGUAGE PROGRAMMING.
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 (6 ORE)
• ANALISI LESSICALE (10 ORE)
• SPECIFICA LESSICALE DEI LINGUAGGI DI PROGRAMMAZIONE, JFLEX (4 ORE)
• CONCETTI BASE DELLE GRAMMATICHE (2 ORE)
• PARSING TOP DOWN E BOTTOM UP (14 ORE)
• SPECIFICA SINTATTICA DEI LINGUAGGI DI PROGRAMMAZIONE, JAVACUP (4 ORE)
• TRADUZIONI GUIDATE DALLA SINTASSI (8 ORE)
• RAPPRESENTAZIONI INTERMEDIE (6 ORE)
• ANALISI SEMANTICA E TYPE CHECKING (8 ORE)
• INTRODUZIONE ALLA GESTIONE DELLA MEMORIA A RUNTIME (2 ORE)
• INTRODUZIONE ALLA GENERAZIONE DEL CODICE (2 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 DI UN PROGETTO SULLO SVILUPPO DELLE PRIME FASI DI UN COMPILATORE. LA DISCUSSIONE INCLUDERÀ LA RICHIESTA DI MODIFICHE DEL CODICE DEL PROPRIO ELABORATO PROGETTUALE DIRETTAMENTE AL PC. LA VALUTAZIONE FINALE È DATA DALLA MEDIA PESATA DEI VOTI OTTENUTI ALLE PROVE, ED IN PARTICOLARE, LA PROVA SCRITTA AVRÀ UN PESO DEL 60% MENTRE LE MODIFICHE AL PC CON DISCUSSIONE DEL PROGETTO PESERANNO PER IL 40%.
DURANTE IL CORSO SONOI PREVISTE DUE PROVE INTERCORSO CHE, SE SUPERATE, SOSTITUIRANNO LA PROVA SCRITTA DEL I APPELLO.
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

ALTRO MATERIALE DIDATTICO VERRÀ
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.

  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2022-11-21]