Conoscenze nel campo della descrizione formale dei linguaggi e della traduzione (in particolare della compilazione) sono sempre state considerate fondamentali nel bagaglio culturale di un informatico e non possono essere ignorate dagli addetti al settore. Competenze di questo tipo si trovano  nei curricula di orientamento informatico-matematico delle Università di tutto il mondo. I linguaggi di programmazione si sono evoluti presentando nuovi problemi di compilazione che hanno portato allo sviluppo di metodi generali per affrontarli. Buona parte della tecnologia di “front-end” dei compilatori, come grammatiche, espressioni regolari, parsificatori e traduttori guidati dalla sintassi, trovano anche applicazione in tutti i programmi in cui sia richiesta l’analisi strutturale di un testo o, in generale, di dati in cui si debba individuare  una struttura.

L’insegnamento si propone pertanto di fornire allo studente una visione introduttiva dei problemi connessi alla definizione e alla traduzione dei linguaggi di programmazione, con particolare riferimento al progetto e alla costruzione di compilatori. Le metodologie e le tecniche presentate sono utili in generale come formalismi per definire il comportamento di un sistema o per realizzare traduttori più semplici di un compilatore vero e proprio.

Lo scopo del laboratorio è di completare la preparazione degli studenti fornendo competenze pratiche che riguardano l’applicazione dei concetti presentati nelle lezioni di teoria. In particolare in laboratorio verrà realizzato un semplice compilatore applicando le tecniche corrette.