Modules | Area | Type | Hours | Teacher(s) | |
PRINCIPI DEI LINGUAGGI DI PROGRAMMAZIONE | INF/01 | LEZIONI | 72 |
|
Il corso e' diviso in due parti. Nella prima parte lo studente acquisira' conoscenze relative a teoria, principi, tecniche e strumenti per la costruzione e la generazione di compilatori, con maggior enfasi sul front-end e su alcune tecniche di analisi statica e di ottimizzazione del codice. Nella seconda parte lo studente approfondira' la conoscenza di alcuni costrutti di programmazione avanzata supportati dai vari paradigmi di programmazione, in modo indipendente da specifici linguaggi e con attenzine a tecniche per la loro compilazione e per il corrispondente supporto a runtime.
The course is made of two parts. In the first part the student will acquire knowledge about theory, principles, techniques and tools for the construction and the generation of compilers, with greater enphasys on the front-end and on some techniques of static analysis and code optimization. In the second part the student will deepen the knowledge of some advanced programming constructs supported by the various programming paradigms, in a way independent of specific programming languages and with attention to techniques for their compilation and for the corresponding runtime support.
La prova scritta ha l'obiettivo di accertare che lo studente abbia acquisito sufficiente familiarita' con i concetti e le costruzioni alla base del front-end di un compilatore, con alcune tecniche di verifica, con aspetti di scoping e type checking di linguaggi di programmazione. Con la prova orale si verifichera' che lo studente abbia assimilato in modo critico i concetti introdotti nel corso.
The written exam aims to ensure that the student has acquired sufficient familiarity with the concepts and constructions at the basis of a compiler's front-end, with some verification techniques, with scoping and type checking aspects of programming languages. The oral exam will assess that the student has critically assimilated the concepts introduced in the course.
Al termine del corso lo studente sapra' analizzare linguaggi di programmazione anche non conosciuti relativamente ai costrutti da essi offerti, agli schemi di compilazione o interpretazione per essi disponibili, e all'adeguatezza per specifici campi applicativi. Inoltre avra' la capacita' di comprendere e analizzare la struttura di un compilatore allo stato dell'arte in termini delle componenti che lo costituiscono e delle loro interazioni.
At the end of the course the student will be able to analyze programming languages, even if not known before, with respect to the constructs they offer, the compilation or interpretation schemes available for them, and the suitability for specific application fields. The student will also have the capability to understand and analyze the structure of a state-to-the-art compiler in terms of its components and their interactions.
L'accertamento delle capacita' avviene tramite colloquio nell'esame finale del corso
Colloquium with the lecturer in the final oral exam.
Conoscenza di qualche linguaggio di programmazione, preferibilmente di paradigmi diversi (funzionale, imperativo, orientato ad oggetti). Familiarita' con notazione matematica, teoria dei linguaggi formali e espressioni regolari.
Knowledge of some programming language, preferably of different paradigms (functional, imperative, object-oriented). Familiarity with mathematical notation, formal language theory, regular expressions.
Il corso e' un prerequisito consigliato per Advanced Programming
The course is a suggested prerequisite for Advanced Programming
Slides presented during the lectures and selected chapters of the following books:
Slides presented during the lectures and selected chapters of the following books:
Gli studenti non frequentanti possono trovare sulla pagina web del corso l'elenco degli argomenti presentati per ogni singola lezione, con le slide proiettate e i riferimenti al materiale didattico rilevante. Le modalita' d'esame per gli studenti non frequentanti sono identiche a quelle per gli studenti frequentanti.
Non-attending students can find on the course web page the list of topics presented for each lesson, with the projected slides and references to the relevant teaching material. Examination methods for non-attending students are identical to those for attending students.
L'esame è composto da una prova scritta ed una prova orale. Il superamento di due prove in itinere equivale al superamento della prova scritta.
La prova scritta consiste in piú problemi da risolvere in circa due ore. Se superata, la prova rimane valida per tutti gli appelli della sessione di esami in corso.
La prova orale consiste in un colloquio tra il candidato e il docente, della durata di circa un'ora.
The exam consists of a written test and an oral exam. Passing the two mid-term exams is equivalent to passing the written test.
The written test consists of a few problems to be solved in about two hours. If passed, the test remains valid for the ongoing exam session.
The oral test consists of an interview between the candidate and the lecturer, which lasts approximately one hour.