Languages and compilers (2015/2016)

Course code
4S02726
Credits
12
Coordinator
Roberto Giacobazzi
Teaching is organised as follows:
Unit Credits Academic sector Period Academic staff
COMPILATORI 6 INF/01-INFORMATICS II semestre Alessandra Di Pierro
LINGUAGGI 6 INF/01-INFORMATICS I semestre Roberto Giacobazzi

Learning outcomes

------------------------
MM: COMPILATORI
------------------------
The students will learn the basic notions and techniques at the base of the theory and practice of compiler construction for programming languages. The course aims to provide the students with - the necessary competences for designing and implementing simple compilers, - the skills for a competent usage of tools for lexical and syntactical analysis, - the knowledge of the theoretical notions at the base of the various compilation phases.
------------------------
MM: LINGUAGGI
------------------------
The course introduces the basic concepts of programming languages, such as functions, types, memory management, and control. The aim is to give a thorough understanding of the problems encountered in the design of programming languages. With this knowledge, students will be able to understand the advantages and disadvantages in using certain kinds of programming languages and to choose the most appropriate one for a given application.

Syllabus

------------------------
MM: COMPILATORI
------------------------
* Introduction to the course and to the compilers technology * Lexical analysis * Syntactical analysis and language classes * Abstract syntax * Semantical analysis (type-checking) * Intermediate bytecode * Intermediate bytecode generation
------------------------
MM: LINGUAGGI
------------------------
Virtual machines: interpreters and compilers. Syntactical descriptions of programming languages: context free grammars. Structured operational semantics. Memory management: scoping rules, functions, procedures, parameter passing, stack of activation records, heap. Control: structuring of statements, abstraction, exceptions. Data and types: data types, base types, structured types, type systems, type inference and polymorphism. Examples of programming paradigms.

Assessment methods and criteria

------------------------
MM: COMPILATORI
------------------------
The exam consists in a group project with a final individual discussion.
------------------------
MM: LINGUAGGI
------------------------
Written exam with optional oral exam (mandatory for evaluations greater than 26/30).

Reference books
Author Title Publisher Year ISBN Note
Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman Compilers: Principles, Techniques, and Tools (2nd Edition) Pearson 2007 9780321486813
Torben Aegidius Mogensen Introduction to Compiler Design Springer 2011 978-0857298287
Maurizio Gabbrielli, Simone Martini Linguaggi di programmazione: principi e paradigmi (Edizione 2) McGraw Hill 2011 88-386-626
T.W. Pratt e M.V. Zelkowitz Programming languages: Design and implementation (Edizione 3) Prentice Hall 1999