COMPILERS
cod. 1000637

Academic year 2009/10
1° year of course - First semester
Professor
Academic discipline
Fisica sperimentale (FIS/01)
Field
Attività formative affini o integrative
Type of training activity
Related/supplementary
48 hours
of face-to-face activities
6 credits
hub:
course unit
in - - -

Learning objectives

The study of the compilation process for a programming language has to face several analysis, design and implementation issues whose solutions are often paradigmatic of problems that occur frequently during the development of complex software systems. <br />
The course aims at providing an overall introduction to typical subjects in the discipline, with further exploring of a few aspects of significant interest.

Prerequisites

Students must be familiar with the subjects considered in the following courses: Fondamenti di Programmazione, Algoritmi e Strutture Dati, Fondamenti dell'Informatica, as well as at least one course from Metodologie di Programmazione and Linguaggi Dichiarativi. It is recommended that students should have attended the course on Linguaggi di Programmazione.

Course unit content

<ul>
<li>Introduction to the course.<br />
Abstract machines, interpreters and compilers.<br />
Division of the compiler into front end, middle end and back end.<br />
Run-time and compilation-time support structures.</li>
<li>The front end.<br />
Lexical analysis: automata, regular expressions and scanners.<br />
Syntax analysis: context-free grammars and parsers.<br />
Context-sensitive analysis: checks for the static semantics.</li>
<li>Support structures for compilation.<br />
Symbol tables and memory allocation schemes.<br />
Procedure abstraction: activation frames and calling conventions.<br />
Generation of intermediate code: translation types and schemes.</li>
<li>The back end.<br />
Selection and scheduling of machine instructions.<br />
Register allocation.</li>
<li>The middle end.<br />
Introduction to code optimisation.<br />
Data-flow and control-flow analysis.<br />
Some examples of optimisation.</li>
</ul>

Full programme

- - -

Bibliography

Engineering a Compiler,<br />
Keith D. Cooper and Linda Torczon, <br />
Morgan Kaufmann, 2003. <br />
<br />
Alternatively: <br />
<br />
Compilers: Principles, Techniques and Tools (2nd edition), <br />
Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman and Monica S. Lam, <br />
Pearson Education, 2006.

Teaching methods

The exam is based on the completion of an individual project, during the course of which students must tackle one of the subjects introduced and discussed during the lessons, building there knowledge of related problems and issues and applying a solution for the specific application context concerned.

Assessment methods and criteria

- - -

Other information

- - -