Nota: L'edizione 2019-20 del corso si terrà nella primavera del 2020. | |
Le lezioni vengono tenute nel periodo compreso tra il 24 settembre e il 21 dicembre 2018.
|
L’obiettivo principale del corso è quello di migliorare le proprie capacità di programmazione assimilando i princìpi di base della programmazione funzionale e imparando ad applicarli per scrivere codice elegante, modulare, riusabile, e più efficacemente parallelizzabile. I concetti verranno esposti usando principalmente il linguaggio Scala, ma verranno messi in prospettiva in modo da essere fruibili anche programmando in altri linguaggi. Nella seconda parte del corso viene affrontata la programmazione in vari modelli di calcolo per le moderne architetture multi-core: vettorizzazione SSE/AVX su piattaforme x86-64, multi-threading e programmazione GPU in OpenCL.
Prerequisiti: conoscenza dei princìpi della programmazione imperativa e orientata agli oggetti, in particolare usando i linguaggi Java, C e Python