04138 - Programming Languages

Course Unit Page

Academic Year 2016/2017

Learning outcomes

At the end of the course, the student will know the principal techniques for defining the syntax and the semantics of the most common programming languages; they will also know how to implement the principal constructs.

Course contents

First module, first semester; instructor: [http://www.unibo.it/SitoWebDocente/default.htm?UPN=simone.martini2%40unibo.it]Roberto Gorrieri [http://www.cs.unibo.it/~gorrieri/]
The evolution of programming languages. From assembly to higher level languages. Abstract machines, intepreters and compilers. Syntax (BNF) and semantics (SOS). Regular grammars, regular expressions, and regular automata: equivalences and principal theorems (e.g., pumping lemma); design of lexical analysers. Context free grammars and push-down automata: equivalences and principal theorems (e.g., pumping lemma). Deterministic context free grammars: algorithms for parsing; grammars LL(1), LR(0), SLR, LR(1), LALR.

Second module, second semester; instructor: Maurizio Gabbrielli [http://www.unibo.it/SitoWebDocente/default.htm?UPN=maurizio.gabbrielli%40unibo.it]
Environment, scoping rules and their implementation. Stack of the activation records; heap. Memory management: garbage collection. Sequence control, procedures, recursion. Types and type checking. Parameters and parameter passing: by value, by reference, by result, by name. Functional parameters; closures. Exceptions. The object-oriented paradigm: classes and objects, initialization, inheritance and late-binding. Subtyping is not inheritance. The logical paradigm. The functional paradigm. The concurrent paradigm.


Maurizio Gabbrielli, Simone Martini Linguaggi di programmazione: principi e paradigmi. Seconda edizione. McGraw-Hill Italia, 2010. ISBN 88-386-6573-8.
For the second module, one can use also the English translation of the first edition:
Maurizio Gabbrielli, Simone Martini. Programming Languages: Principles and Paradigms [http://www.springer.com/computer/book/978-1-84882-913-8]. Springer, April 2010. ISBN 978-1-84882-913-8. Series Undergraduate Topics in Computer Science, UTiCS [http://www.springer.com/series/7592] .

Teaching methods


Assessment methods

Written and oral examinations. The examination covers both modules.

Teaching tools



Office hours

See the website of Roberto Gorrieri

See the website of Maurizio Gabbrielli