Languages and compilers (2010/2011)

Teaching is organised as follows:
Unit Credits Academic sector Period Academic staff
COMPILATORI 6 INF/01-INFORMATICS II semestre Andrea Masini
LINGUAGGI 6 INF/01-INFORMATICS I semestre Andrea Masini

Learning outcomes

Module: COMPILATORI
-------
The aim of the course is to introduce the techniques of automatic translation. The target is to learn a general methodology for the compilers design.


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: top-down (LL) and bottom-up (LR) parsing.
Syntax-directed definitions and syntax-directed translations: attributes, semantical actions. Intermediate code generation: abstract syntax trees, intermediate code. Object-code generation. Code optimization.


Module: 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.

Assessment methods and criteria

Module: COMPILATORI
-------



Module: LINGUAGGI
-------
Written examination

Reference books
Author Title Publisher Year ISBN Note
Maurizio Gabbrielli, Simone Martini Linguaggi di programmazione: principi e paradigmi (Edizione 2) McGraw Hill 2011 88-386-626