Obiettivi formativi.
Fornire un'introduzione alla programmazione funzionale, allo studio
degli algoritmi e allo sviluppo di strutture dati complesse
in tale paradigma di programmazione.
Attività formative.
Il corso si svolge in 44 lezioni, due terzi delle quali frontali,
e un terzo delle quali in laboratorio.
Programma del corso.
- Introduzione al corso e alla programmazione funzionale.
- Utilizzo dell'ambiente di programmazione OCaml.
- Introduzione alla programmazione OCaml.
- Funzioni come valori.
- Valutazioni strette e lazy.
- Persistenza: liste, alberi binari di ricerca.
- Heap sinistrorsi e binomiali, alberi rosso-neri
- Valutazione lazy: gli stream
- Analisi ammortizzata: code e heap
- Ammortizzazione e persistenza tramite valutazione lazy
- Il metodo del banchiere e quello del fisico
- Eliminazione dell'ammortizzazione
- Ricostruzione lazy