6 ECTS credits
150 u studietijd

Aanbieding 1 met studiegidsnummer 1001725BNR voor alle studenten in het 2e semester met een verdiepend bachelor niveau.

2e semester
Inschrijving onder examencontract
Niet mogelijk
Beoordeling (0 tot 20)
2e zittijd mogelijk
Students must have followed ‘Object-oriented programming’, before they can enroll for ‘Parallelism and Distribution’.
Faculteit Wetenschappen en Bio-ingenieurswetensch.
Verantwoordelijke vakgroep
Elisa Gonzalez Boix (titularis)
Onderdelen en contacturen
26 contacturen Hoorcollege
26 contacturen Werkcolleges, practica en oefeningen

This course is a general introduction to fundamental topics within parallelism and distribution. A number of concepts in concurrency and parallelism for distributed and shared-memory memory models are introduced in the first part of the course including fork-join parallelism, multithreading and mutual exclusion, and message passing. The course then studies distributed systems and introduces different inter-processes communication abstractions (e.g. sockets, RMI, Pub/Sub, etc.) and established architectural models (e.g. client-server programs and peer-to-peer systems). The course also teaches a number of fundamental topics in the field such as synchronization (e.g. Lamport and vector clocks) and coordination and agreement (e.g. two-phase commit, FLP impossibility).

Digitaal cursusmateriaal (Vereist) : Parallelism and Distribution, cursusnota's
Digitaal cursusmateriaal (Vereist) : slides
Bijkomende info

During the classes, slides will be projected. These slides are made available ahead of time via the learning platform. The slides also detail the corresponding course material to study per chapter, mostly based on course notes. At the course space, those course notes together with the sample programs shown at class are made available for download.


General competences

This course is an introduction to fundamental topics within parallelism and distribution. There is a strong focus on the underlying concepts of parallel and distributed systems, unrelated to a specific technology. However, often, for each topic, there will be case studies of existing technology that builds upon the explained concepts. This way, the student becomes familiar with how the concepts are brought into practice.

Knowledge and Understanding:

The student will gain insight and knowledge in:

    •    what is parallel computing, different forms of parallelism, concurrency vs parallelism, parallel memory architectures.
    •    what distributed systems are, what they are used for, different challenges in building distributed programs.
    •    fundamentals on shared-memory models: fork-join parallelism, and multithreading.
    •    fundamentals on distributed memory: message passing and the actor model of concurrency.
    •    the basic principles of networking, as networks connect distributed processes
    •    the basic distributed architectures: client-server, and peer-to-peer systems.
    •    the different ways in which distributed processes can be made to communicate with each other: from message passing models (sockets, RPC/RMI)  to indirect communication models (e.g. tuple spaces, Pub/Sub, message queues)
    •    the basic principles of cryptography, to be able to communicate securely over an open network
    •    why clock synchronization is relevant in distributed systems,  physical vs. logical clocks
    •    the fundamental issue of agreement in distributed systems, and some practical algorithms to solve this issue

Application of Knowledge and Understanding:

The course does not only provide theoretical knowledge and insight. By the end of the course, students should be able to apply the knowledge into practice and be able to design and implement working parallel and distributed programs.

Making Judgements:

Students should be able to judge the applicability of a given programming model, technique or algorithm in a given situation. They can justify their choice.


Students should be able to communicate clearly about the topics studied. This is partially done by open questions at the exam and by asking students to submit a written essay about their programming project.

Learning Skills:

After having completed the course, students should have acquired the necessary foundational knowledge for them to be able to go deep and further study emerging parallel and distributed models ( e.g. cloud computing and big data processing, multicore, HPC, mobile computing, etc).


De beoordeling bestaat uit volgende opdrachtcategorieën:
Examen Schriftelijk bepaalt 50% van het eindcijfer

WPO Praktijkopdracht bepaalt 50% van het eindcijfer

Binnen de categorie Examen Schriftelijk dient men volgende opdrachten af te werken:

  • Schriftelijk Examen met een wegingsfactor 1 en aldus 50% van het totale eindcijfer.

    Toelichting: Schriftelijk examen (gesloten boek)

Binnen de categorie WPO Praktijkopdracht dient men volgende opdrachten af te werken:

  • Programmeerproject met een wegingsfactor 1 en aldus 50% van het totale eindcijfer.

    Toelichting: Programmeerproject (implementatie + verslag) met eventuele mondelinge verdediging

Aanvullende info mbt evaluatie

Theory: written exam (closed book).
Practice: programming project with oral project defense.
In the written exam, the knowledge and insight of the student is tested w.r.t. the topics discussed during class (see Content). The exam consists of a combination of open and closed questions. The student is expected to be able to synthesize the most important aspects of the question's topic, be able to analyse different solutions or techniques for a same topic, and reason about programs to answers questions and/or justify choices.
Practice: during the year, a detailed project description will be made known with specifications about the end product. The project will consists on two assignments: one focusing on the parallel aspects of the end product, and one focusing on the distributed aspects. For each assignment, the student delivers the implementation of the project, together with a brief report justifying made choices and the design. Each part of the project will be defended orally.
Both written exam and programming project account for 50% of the total score. Students need to obtain at least 8/20 in each evaluating part to be able to get a score for the entire course. If the scores for all parts are not higher than 8, the lowest score is used for the final mark.

Absence in one of the parts implies absence for the entire course. Partial marks for the exam or project, if the student obtains at least half of the score for this part, are transferred to the second session. Students may not relinquish partial marks.

Toegestane onvoldoende
Kijk in het aanvullend OER van je faculteit na of een toegestane onvoldoende mogelijk is voor dit opleidingsonderdeel.

Academische context

Deze aanbieding maakt deel uit van de volgende studieplannen:
Bachelor in de computerwetenschappen: Standaard traject
Master in de ingenieurswetenschappen: fotonica: Standaard traject