Multicore programming

linfo2355  2024-2025  Louvain-la-Neuve

Multicore programming
5.00 credits
30.0 h + 15.0 h
Q2
Teacher(s)
Language
Main themes
This course treats a specific advanced topic or selection of topics of current research interest in the area of software engineering.
The actual topic(s) may vary from year to year, and will be chosen from a variety of software engineering domains such as data-intensive computing, software analytics, development and analysis of large evolving software systems, big data techniques, software repository mining, software recommendation systems, software visualization, novel programming technologies, software requirements and analysis,model-driven software engineering, software configuration management, software engineering processes, software engineering tools and methods, software testing and quality aspects, etc.
Learning outcomes

At the end of this learning unit, the student is able to :

1 Given the learning outcomes of the "Master in Computer Science and Engineering" program, this course contributes to the development, acquisition and evaluation of the following learning outcomes:
  • INFO1.1
  • INFO3.1
  • INFO6.3
Given the learning outcomes of the "Master [120] in Computer Science" program, this course contributes to the development, acquisition and evaluation of the following learning outcomes:
  • SINF1.M3
  • SINF3.1
  • SINF6.3
The students shall acquire advanced theoretical knowledge and technical competences about the topics covered in the course.
 
Content
This course targets programming models and methods for scalable applications on modern multi-processor and multi-core architectures.

In a first short part, it provides the necessary elements of theory and defines consistency protocols, in order to be able to understand the challenges and tradeoffs associated with shared-memory concurrent programming. The emphasis is on performance and scalability aspects (efficient simultaneous use of multiple cores).

The rest of the course surveys a number of fundamental algorithmic techniques for building shared memory concurrent data structures. It studies the performance implications of these data structures and algorithmic constructs in the context of modern architectures, taking into account various aspects such as the memory and cache hierarchy, hardware consistency protocols, and non-uniform memory accesses (NUMA).

The course is accompanied by a number of practical projects. A multi-core machine is available for the experiments. Students will be able to evaluate the performance and scalability of various algorithms and data structures seen in class.
Teaching methods
  • Lectures
  • Readings and/or production of tutorial videos
  • Practical sessions
  • Mini project
Evaluation methods
Modes d'évaluation :
  • Projets et contrôle continu (40% de la note finale)
  • Examen sur table comportant deux parties (60% de la note finale)
    • Une première de questions de cours (questions ouvertes et QCM)
    • Une seconde partie portant sur un ou plusieurs articles de recherche du domaine préalablement fournis aux étudiant·es.
    • La proportion entre les deux parties est variable mais aucune ne dépassera 70% de la note. Les QCM n'entraînent pas de points négatifs pour une question individuelle mais la section QCM dans son ensemble peut demander un seuil minimal de réponses correctes avant de valoir des points.
Pour la seconde session (Aout), le projet et l'évaluation continu peuvent être refait mais uniquement de façon individuelle.
L'évaluation des travaux soumis (projets, travaux pratiques, travail individuel, et de manière générale toute activité donnant lieu à évaluation) est basé sur la matériel (code, rapports, et tout autre matériel) soumis par l'étudiant·e, accompagné sur demande du profeseur par un examen oral complémentaire.
Evaluation methods:
  • Projects and continuous evaluation (40% of the final grade)
  • Final exam (60% of the final grade), in two parts:
    • First part: open questions and multiple-choice/answer questions about the course material;
    • Second part: open questions and multiple-choice/answer questions about one or several scientific publication(s) provided to the student(s) ahead of the exam.
    • The ratio of points between the two parts can vary but no part will count for more than 70% of the grade. Individual multiple-choice/answer questions cannot yield negative points, but the score for the complete multiple-choice/answer questions section may require a threshold number of correct answers to grant points.
For the second session (August), the project and continuous evaluation exercises can be redone but only individually.
The evaluation of produced work (projects, practicals, individual work, and all graded activities in general) is based on the submitted code, reports, and other material submitted by the student and can be accompanied, upon request of the professor, by an oral examination.
Unless explicitly mentioned, any work or assignment in this course must remain confidential and personal. Sharing information and/or code with other students (out of the declared partner for group works) is a case of plagiarism.
Other information
All relevant course material and slides as well as practical information related to the course will be accessible on Moodle, which will also be the primary means of communication between the teacher(s) and the students.
Bibliography
The Art of Multiprocessor Programming, Maurice Herlihy and Nir Shavit, Morgan Kaufmann. ISBN 978-0-12-370591-4.
UCL library reference 10.620.426
Faculty or entity


Programmes / formations proposant cette unité d'enseignement (UE)

Title of the programme
Sigle
Credits
Prerequisites
Learning outcomes
Master [120] in Computer Science and Engineering

Master [120] in Computer Science

Master [120] in Data Science Engineering

Master [120] in Data Science: Information Technology