ADVANCED PROGRAMMING LANGUAGES

Academic year
2026/2027 Syllabus of previous years
Official course title
ADVANCED PROGRAMMING LANGUAGES
Course code
CM0632 (AF:733839 AR:436303)
Teaching language
English
Modality
On campus classes
ECTS credits
6
Degree level
Master's Degree Programme (DM270)
Academic Discipline
INFO-01/A
Period
1st Semester
Course year
1
Where
VENEZIA
The course provides an introduction to the fundamentals of language theory and an in-depth analysis of the most advanced mechanisms and techniques used in modern programming languages. It therefore enables students:
- to understand the mathematical tools that support computer science;
- to use these tools to enhance their ability to address scientifically relevant problems and to develop complex applications.


The course enables students to:
- acquire specialized knowledge of the design techniques used in advanced programming languages;
- acquire specialized knowledge of software verification tools;
- develop the ability to apply this knowledge to assess the effectiveness of these techniques and tools in the development of complex software systems.
Knowledge of the basic principles and of the core mechanisms of programming languages is assumed.
Introduction
- Basic principles and mechanisms of programming languages
- Functional Programming

Typing foundations of programming languages
- Applied Lambda Calculus. Syntax and operational semantics.
- Typing: types, type systems, type safety

Strict vs Non-strict evaluation
- Evaluation strategies: foundations and implications for implementation

Design of datatypes in functional and object-oriented languages
- Algebraic data types
- Higher-order and polymorphic functions
- Encapsulation techniques

Subtyping and subtype polymorphism
- The substitution principle and the subtype relation
- Typing and Subtyping: nominal vs structural

Type parametrization
- Generics, variance and type bounds

Ad hoc polymorphism
- From overloading to (bounded) parametric polymorphism
- Qualified types and type classes

Error handling
- Exceptions: strengths, weaknesses and alternatives

[Scala] Programming in Scala (5th Edition). M. Odersky, L. Spoon, B. Venners, F. Sommers.
Artima Press. 2021.

[TAPL] Types and Programming Languages. B.C. Pierce. The MIT Press. 2002.

Lecture notes.
Written exam followed by an oral discussion of the written work.
Group projects and (class) challenges to be developed along the course
The written exam and subsequent oral discussion assess the ability to apply the formal and programming techniques presented in class.
Thed projects and the class challenges contribute to evaluates the ability to understand how these techniques can be extended and/or adapted to other contexts.


written and oral

The lecturer has a duty to ensure that the rules regarding the authenticity and originality of exam tests and papers are respected. Therefore, if there is suspicion of irregular conduct, an additional assessment may be conducted, which could differ from the original exam description.

In the final evaluation, the written exam accounts for 70%, while the oral exam and project work account for 30%.
The oral exam also serves as validation of the written exam grade.
Class lectures with in-class exercises, and additional exercises proposed as homework.
WEB RESOURCES

Companion courses (some of ...)
- Uday Reddy at Bham: https://www.cs.bham.ac.uk/~udr/popl/
- Kathleen Fisher at Tufts: https://www.cs.tufts.edu/comp/150PLD/

Functional languages:
Linguaggi funzionali
- Scala: https://dotty.epfl.ch/
- Haskell: https://www.haskell.org/
- Elixir: https://elixir-lang.org/

This programme is provisional and there could still be changes in its contents.
Last update of the programme: 28/05/2026