Parallel and Distributed Systems

1st year
Programme main editor:
Onsite in:
ECTS range:
6-7 ECTS


Marco Danelutto
Oleksandr Rokovyi


C/C++ programming, algorithms, foundations of computer architecture (multicore, Cluster-of-Workstation COW).

Pedagogical objectives:

The student successfully completing the course will be able to design and implement parallel applications/run time supports efficiently using/implementing common and useful parallel design patterns using both structured and more classical parallel programming frameworks. In particular, the student will be able to evaluate different, alternative parallelisation strategies and techniques by exploiting proper abstract and concrete parallel pattern performance models and to implement the different parallelisation strategies with state of the art parallel programming tools.

Evaluation modalities:

Final project, assignment reports, and oral exam (theory arguments).


The main course deals with a set of arguments related to the programming models targeting parallel and/or distributed architectures. The common background of these arguments is represented by structured parallel programming models, such as those based on algorithmic skeletons or on parallel design patterns. More in detail, the course covers:

  • Parallel and distributed programming principles,
  • Structured parallel/distributed programming patterns (data and stream parallel),
  • Parallel/distributed pattern implementation techniques for multi/many cores and cluster/networks of workstations,
  • Parallel/distributed patterns refactoring,
  • Autonomic management of non functional features.
  • Analytical, concrete and abstract performance models for parallel/distributed patterns,
  • Implementation of parallel/distributed patterns with state of the art parallel programming frameworks.

Complementary content:

  • Concise introduction to the usage of GPU accelerators.
  • Concise introduction to the usage of data intensive parallel programming frameworks.

Required teaching material

Book : Parallel Programming Concepts and Practice, Bertil Schmidt, Jorge Gonzalez-Martinez, Christian Hundt, Moritz Schlar, Morgan Kaufmann, 2017, plus course notes (PDF). No sw licence required, all software is open source (under Linux). Shared memory multicore and a small cluster of workstations with Linux, GNU C++ toolchain needed for exercise and final project implementation.

Teaching volume:
28-40 hours
0-20 hours
Supervised lab:
0-28 hours


  • Laboratory-Based Course Structure
  • Open-Source Software Requirements