cookieImage
2026-2027 / INFO9012-1

Parallel Programming

Duration

25h Th, 25h Pr

Number of credits

 Bachelor of Science (BSc) in Engineering5 crédits 
 Bachelor of Science (BSc) in Computer Science5 crédits 
 Master MSc. in Computer Science, professional focus in computer systems security5 crédits 
 Master MSc. in Computer Science and Engineering, professional focus in management5 crédits 
 Master Msc. in computer science and engineering, professional focus in intelligent systems5 crédits 
 Master MSc. in Computer Science, professional focus in management5 crédits 
 Master MSc. in Computer Science and Engineering, professional focus in computer systems and networks5 crédits 
 Master MSc. in Computer Science, professional focus in intelligent systems5 crédits 

Lecturer

Pascal Fontaine

Language(s) of instruction

English language

Organisation and examination

Teaching in the second semester

Schedule

Schedule online

Units courses prerequisite and corequisite

Prerequisite or corequisite units are presented within each program

Learning unit contents

This course addresses some practical and theoretical aspects of distributed computing and parallel programming. It will notably introduce parallel programming models, the notions of process and thread, race conditions, mutual exclusion, data races, memory models, semaphores, monitors, and conditions.  Some classical problems are studied.  On the more practical side, the course will be based on examples in classical programming languages (C, C++, Java, Python) and will quickly introduce OpenMP.  Finally, message passing will be explained, using MPI and Go to illustrate in practice message passing and queues.

 

Learning outcomes of the learning unit

At the end of this course, the student will be aware of the pitfalls of parallel and distributed programming.  The student will know the basic algorithms to solve typical issues that occur in distributed systems, and will be able to apply them in concrete applications.

Prerequisite knowledge and skills

Excellent familiarity with sequential imperative programming is mandatory.

Examples are provided in C, C++, Go, Java and Python.  We assume the student to be sufficiently at ease with programming not to be disturbed if some notions are explained in a less well-known language.

The practical exercices will be done in C, C++, and go.  Since most of the code is provided, and we do not require from the student to write a large amount of code, there is no formal prerequisite for those languages.  However, again, the student must be sufficiently familiar with imperative programming to get along writing, e.g., a few hundred lines of C++ code.

Students must have access to a machine under Linux, with a working X11 server.  A Raspberry Pi or a well-installed virtual machine is enough.  Machines are available at the university (candi*.montefiore.ulg.ac.be)

This course contributes to the learning outcomes I.1, I.2, II.1, III.1, IV.1, IV.3, IV.4, VI.1, VI.2, VII.1, VII.4 of the MSc in computer science and engineering.

Planned learning activities and teaching methods

The course comprises:

  • ex cathedra courses, that introduce the concepts and techniques;
  • problem sessions;
  • hands-on sessions in the lab (C / go), to get practical knowledge of parallel programming;
  • a more ambitious homework project (C++).

Mode of delivery (face to face, distance learning, hybrid learning)

Face-to-face course


Additional information:

Lectures are given in English.  2nd quadrimester, face-to-face.

Recording of the course will be given as best effort: there is no guarantee everything will be recorded, and there is no guarantee on the quality of the recordings.

 

Course materials and recommended or required readings

Reference text, notes and slides available on the course space on eCampus.

Exam(s) in session

Any session

- In-person

written exam ( open-ended questions )

Other : Practical evaluation on machine


Further information:

There will be a practical evaluation on machines, during the allocated slots for the course.  No internet connection will be available. The student will have access to static documentation including C++ reference, and slides of the course.  Students might suggest (at the latest two weeks before the evaluation) additional material that will be subject to approval.  No AI tool, web search, community, repositories of solved problems, etc... may be used for this practical evaluation. The grade will be Pass or Fail. 

For the written exam, no document and no electronic help is allowed.

If the practical grade is Pass, the final grade is the grade of the written exam, otherwise it is the grade of the written exam capped at 7/20.

 

Work placement(s)

None

Organisational remarks and main changes to the course

The contents of the theoretical and practical sessions, as well as the assignments and useful links, will be made available on the e-Campus space for the course.

Contacts

Teacher: Pascal Fontaine
Phone: 04 366 28 75
e-mail: Pascal.Fontaine@uliege.be

Association of one or more MOOCs

There is no MOOC associated with this course.


Additional information:

None