6 ECTS credits
150 h study time

Offer 1 with catalog number 1024441ANR for all students in the 2nd semester at a (A) Bachelor - preliminary level.

Semester
2nd semester
Enrollment based on exam contract
Impossible
Grading method
Grading (scale from 0 to 20)
Can retake in second session
Yes
Enrollment Requirements
Students must have followed ‘Object-oriented Systems’, before they can enroll for ‘Parallelism and Distribution’.
Taught in
Dutch
Faculty
Faculty of Sciences and Bioengineering Sciences
Department
Computer Science
Educational team
Elisa Gonzalez Boix (course titular)
Activities and contact hours
26 contact hours Lecture
26 contact hours Seminar, Exercises or Practicals
Course Content

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).

Course material
Digital course material (Required) : Parallelism and Distribution, cursusnota's
Digital course material (Required) : slides
Additional 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.

 
Learning Outcomes

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.



Communication:


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).

Grading

The final grade is composed based on the following categories:
Written Exam determines 50% of the final mark.
PRAC Practical Assignment determines 50% of the final mark.

Within the Written Exam category, the following assignments need to be completed:

  • Written exam with a relative weight of 1 which comprises 50% of the final mark.

    Note: Written exam (closed book)

Within the PRAC Practical Assignment category, the following assignments need to be completed:

  • Practical assignment with a relative weight of 1 which comprises 50% of the final mark.

    Note: Programming assignemnts (implementation + report) with possible oral defense

Additional info regarding evaluation

Theory: written exam (closed book).
Practice: programming project with oral project defense.
 
Theory:
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.

Allowed unsatisfactory mark
The supplementary Teaching and Examination Regulations of your faculty stipulate whether an allowed unsatisfactory mark for this programme unit is permitted.

Academic context

This offer is part of the following study plans:
Bachelor of Computer Science: Default track (only offered in Dutch)
Bachelor of Artificial Intelligence: Default track (only offered in Dutch)