Principles and Paradigms of Programming Languages (Laurea Magistrale LM-18)
Lo scopo del corso è fornire una conoscenza più approfondita e critica dei linguaggi di programmazione, attraverso sia lo studio di alcuni fondamenti teorici sia l'utilizzo di diversi paradigmi.
Modalità d'esame
L'esame consta di una prova orale e dello svolgimento e presentazione di un piccolo progetto in Haskell o Prolog (preferibilmente individuale, da concordare).
Gli studenti che hanno nel piano di studi anche ITCC dovranno preparare e presentare un argomento aggiuntivo (da concordare).
Programma
- Preliminari: Definizioni induttive e principio di induzione (generale). Semantica operazionale small-step, sistemi di tipi e soundness. Esempio introduttivo: linguaggio di espressioni booleane e naturali.
- Paradigma funzionale: Lambda-calcolo puro, strategie call-by-value e call-by-name. Lambda-calcolo con tipi semplici. Polimorfismo, algoritmo di inferenza di Hindley-Milner.
Programmazione funzionale in Haskell, lazy evaluation, type classes. Laboratorio Haskell.
- Effetti: Estensione imperativa e con eccezioni del lambda-calcolo tipato. Monadi in Haskell.
- Paradigma object-oriented: Subtyping. Featherweight Java.
- Paradigma logico: Prolog puro. Sintassi, semantica a modelli, risoluzione SLD. Laboratorio Prolog.
AulaWeb a.a. 12/13
Testi e link di riferimento
Note delle lezioni (versione preliminare incompleta).
Types and Programming Languages di B. Pierce, disponibile in biblioteca.
The Haskell Programming Language
SWI Prolog
Ritorno alla pagina precedente
Ultima modifica: 26 novembre 2012