Docente
|
DEMETRESCU CAMIL
(programma)
================================================
Corso: Programmazione Funzionale e Parallela (6 CFU)
Docente: Camil Demetrescu
Obiettivi del corso
Il corso copre due competenze fondamentali per i programmatori: la capacità di astrazione e modellazione di problemi complessi utilizzando linguaggi di alto livello e l'uso efficace del parallelismo per la loro risoluzione sfruttando le moderne architetture multicore. In particolare, il corso introduce allo stile di programmazione funzionale, che si affianca a quello imperativo e orientato agli oggetti fornendo costrutti sorprendentemente potenti ed espressivi. I linguaggi di programmazione funzionali consentono di scrivere programmi di cui da una parte è possibile ragionare sulla correttezza in modo induttivo, dall'altra sono caratterizzati dall'assenza di effetti collaterali che li rendono particolarmente adatti alla programmazione multi-threaded. Il corso insegnerà inoltre come utilizzare le potenti schede grafiche oggi disponibili come supporto per le applicazioni multimediali e i giochi 3D come strumento per il calcolo parallelo massivo.
------------------------------------------------
Programma
1. Fondamenti della programmazione funzionale
- lambda calcolo, definizione e applicazione di funzioni, ricorsione, currificazione
- linguaggi funzionali puri e programmazione dichiarativa
- trasparenza referenziale
- funzioni di ordine superiore
- design pattern, folding e unfolding, filter, map, reduce
- valutazioni eager e lazy
- monadi, chiusure, continuazioni
- thread-safety
2. Fondamenti del calcolo parallelo
- Programmazione concorrente
- Primitive atomiche
- Collezioni concorrenti
- Programmazione asincrona e attori
- Programmazione parallela in OpenCL
Libri di testo:
- Ryoji Tsuchiyama, Takashi Nakamura, Takuro Iizuka, Akihiro Asahara, Jeongdo Son, Satoshi Miki. The OpenCL Programming Book. Fixstars, 2012
- Martin Odersky, Lex Spoon, Bill Venners. Programming in Scala. 2nd edition, Artima, 2011
- Dispense del corso
|