Il corso introduce i principali modelli e strumenti per la programmazione parallela e distribuita, con maggiore enfasi sulla programmazione parallela. Obiettivo primario è fornire metodi e strumenti per dominare la complessità della progettazione di applicazioni parallele basate sui modelli di programmazione a memoria condivisa, a scambio di messaggi e SIMD.

Metodologicamente, il corso prima introduce le architetture ed i concetti fondamentali per la programmazione parallela e distribuita (attività, sincronizzazione, comunicazione), che poi vengono applicati ed esemplificati su esempi di interesse per per i curriculum dello studente (es. calcolo scientifico).