Languages and compilers (2009/2010)

Teaching is organised as follows:
Unit Credits Academic sector Period Academic staff
COMPILATORI 6 INF/01-INFORMATICS 2nd Semester Andrea Masini
LINGUAGGI 6 INF/01-INFORMATICS 1st Semester Andrea Masini

Learning outcomes

Module: COMPILATORI
-------
The aim of the course is to introduce the techniques of automatic translation of code (how to formalize the
semantical control of the code, and reasoning on the syntactical structure). The target is to learn to write small compilers.


Module: LINGUAGGI
-------
The course teaches the fundamental concepts of programming languages, such as functions, types, memory management, and control. The aim is to give a thorough understanding of problems in the design of programming languages. This understanding enables students to grasp the advantages and disadvantages of using different kind of programming languages.

Syllabus

Module: COMPILATORI
-------
Lexical analysis of the code. Syntactical analysis: classification of languages. Abstract syntax. Semantical analysis: control of types and of position of statements. Intermediate code generation. Object code generation. Optimization of code.


Module: LINGUAGGI
-------
Virtual machines: interpreters and compilers. Syntactical descriptions of programming languages: context free grammars. Structured operational semantics: transition systems. Type systems, type inference and polymorphism. Memory management: scoping rules, functions, procedures, parameter passing. Control: structuring of statements, abstraction, exceptions. Data: abstraction and modularity, module systems. All the topics will be presented by means of one or more concrete programming languages (e.g., ML).

Assessment methods and criteria

Module: COMPILATORI
-------
The exam consists of a written test.


Module: LINGUAGGI
-------
The exam consists of a written test.

Reference books
Author Title Publisher Year ISBN Note
Aho, A.V. and Lam, M.S. and Sethi, R. and Ullman, J.D. Compilatori: Principi, tecniche e strumenti (Edizione 2) Pearson 2009 978-88-7192-559-2
John C. Mitchell Concepts in Programming Languages (Edizione 1) Cambridge University Press 2003 0-521-7809
Maurizio Gabbrielli, Simone Martini Linguaggi di programmazione: principi e paradigmi (Edizione 2) McGraw Hill 2011 88-386-626