ADVANCED PROGRAMMING LANGUAGES

Anno accademico
2026/2027 Programmi anni precedenti
Titolo corso in inglese
ADVANCED PROGRAMMING LANGUAGES
Codice insegnamento
CM0632 (AF:733839 AR:436303)
Lingua di insegnamento
Inglese
Modalità
In presenza
Crediti formativi universitari
6
Livello laurea
Laurea magistrale (DM270)
Settore scientifico disciplinare
INFO-01/A
Periodo
I Semestre
Anno corso
1
Sede
VENEZIA
Il corso fornisce un'introduzione ai fondamenti della teoria dei linguaggi e un'analisi approfondita dei meccanismi e tecniche più avanzate dei linguaggi di programmazione moderni. Permette quindi:
- di comprendere gli strumenti matematici di supporto all'informatica
- di utilizzare tali strumenti per affinare la sua capacità affrontare problemi scientificamente rilevanti e di sviluppare applicazioni complesse.

Il corso permette di:
- acquisire conoscenze specialistiche delle tecniche di progetto dei linguaggi di programmazione più avanzati
- acquisire conoscenze specialistiche degli strumenti di verifica del software
- acquisire capacità di applicare tali conoscenze per valutare l'efficacia di tali tecniche e tali strumenti nello sviluppo di sistemi software complessi

Si assume una conoscenza di base dei principi e dei meccanismi della programmazione
Introduzione
- Principi e meccanismi di base dei linguaggi di programmazione:
- Programmazione Funzionale

Typing foundations dei linguaggi di programmazione
- Applied Lambda Calculus. Sintassi e semantica operazionale.
- Typing: types, type systems, type safety

Strict vs Non-strict evaluation
- Strategie di valutazione: fondamenti e conseguenze per l'implementazione

Progetto di di datatypes nei linguaggi funzionali e object oriented
- Algebraic data types
- Funzioni di ordine superiore e polimorfe
- Tecniche di encapsulation

Subtyping e subtype polymorphism
- Il principio di sostituzione e la relazione di sottotipo.
- Typing e Subtyping: nominale vs strutturale

Type parametrization
- Generics, varianza e type bounds

Ad hoc polymorphism
- Da overloading a polimorfismo parametrico (bounded)
- Qualified types e type classes

Gestione degli errori:
- eccezioni: punti di forza, debolezza e alternative.



[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.

Note delle lezioni e delle esercitazioni.
Esame scritto con successiva verifica orale dell'elaborato scritto.
Progetti di approfondimento ed esercitazioni da sviluppare durante il corso (in gruppo o singolarmente)
Nell'esame scritto e nella successiva verifica orale viene valutata la capacità di applicare le tecniche formali e di programmazione illustrate a lezione.
Con i progetti e le esercitazioni viene viene valutata la capacità di comprendere come tali tecniche possano essere estese e/o adapted ad altri contesti.
scritto e orale

Il/la docente ha il dovere di vigilare affinché siano rispettate le regole di autenticità e originalità delle prove d'esame. Di conseguenza, nei casi in cui vi sia il sospetto di un comportamento irregolare, l'esame può prevedere un ulteriore approfondimento, contestuale alla prova d'esame, che potrà essere realizzato anche in modalità differente rispetto alle modalità sopra riportate.

Nella valutazione finale, lo scritto pesa l'70%, mentre la prova orale e lavoro sui progetti e le esercitazioni pesa il 30%.
La prova orale serve anche quale convalida della valutazione dello scritto.
Lezioni in class, con esercizi in classe e proposti per casa.
RISORSE WEB

Alcuni corsi sugli stessi argomenti:
- Uday Reddy at Bham: https://www.cs.bham.ac.uk/~udr/popl/
- Kathleen Fisher at Tufts: https://www.cs.tufts.edu/comp/150PLD/

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



Il programma è ancora provvisorio e potrà subire modifiche.
Data ultima modifica programma: 28/05/2026