5 ECTS credits
150 u studietijd

Aanbieding 2 met studiegidsnummer 2019941BNW voor werkstudenten in het 2e semester met een verdiepend bachelor niveau.

Semester
2e semester
Inschrijving onder examencontract
Niet mogelijk
Beoordelingsvoet
Beoordeling (0 tot 20)
2e zittijd mogelijk
Ja
Inschrijvingsvereisten
Dit opleidingsonderdeel is enkel toegankelijk voor werkstudenten.
Onderwijstaal
Engels
Faculteit
Faculteit Wetenschappen en Bio-ingenieurswetensch.
Verantwoordelijke vakgroep
Computerwetenschappen
Onderwijsteam
Elisa Gonzalez Boix (titularis)
Onderdelen en contacturen
26 contacturen Hoorcollege
26 contacturen Werkcolleges, practica en oefeningen
125 contacturen Zelfstudie en externe werkvormen
Inhoud

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, and RMI) 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).

Studiemateriaal
Digitaal cursusmateriaal (Vereist) : Slides
Digitaal cursusmateriaal (Vereist) : Parallelism and Distribution, Cursusnota's
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.

 
Leerresultaten

General competencies

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

Beoordelingsinformatie

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:

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

    Toelichting: Written exam (closed book)

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

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

    Toelichting: Programming assignments to be submitted via the learning platform

Aanvullende info mbt evaluatie

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. 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 ingenieurswetenschappen: elektronica en informatietechnologie Profiel profiel computerwetenschappen
Schakelprogramma Master of Science in de ingenieurswetenschappen: computerwetenschappen: Standaard traject
Schakelprogramma Master of Science in de toegepaste informatica: Standaard traject
Voorbereidingsprogramma Master of Science in de ingenieurswetenschappen: computerwetenschappen: Traject C (Ind Ing, 61 ECTS)
Voorbereidingsprogramma Master of Science in de ingenieurswetenschappen: computerwetenschappen: Traject A (76 ECTS)
Voorbereidingsprogramma Master of Science in de ingenieurswetenschappen: computerwetenschappen: Traject B (65 ECTS)
Voorbereidingsprogramma Master of Science in de toegepaste informatica: Traject C (Ind Ing, 58 ECTS)
Voorbereidingsprogramma Master of Science in de toegepaste informatica: Traject A (58 ECTS)
Voorbereidingsprogramma Master of Science in de toegepaste informatica: Traject B (52 ECTS)