Note from June 29, 2020
Although we do not yet know how long the social distancing related to the Covid-19 pandemic will last, and regardless of the changes that had to be made in the evaluation of the June 2020 session in relation to what is provided for in this learning unit description, new learnig unit evaluation methods may still be adopted by the teachers; details of these methods have been - or will be - communicated to the students by the teachers, as soon as possible.
Although we do not yet know how long the social distancing related to the Covid-19 pandemic will last, and regardless of the changes that had to be made in the evaluation of the June 2020 session in relation to what is provided for in this learning unit description, new learnig unit evaluation methods may still be adopted by the teachers; details of these methods have been - or will be - communicated to the students by the teachers, as soon as possible.
5 credits
30.0 h + 15.0 h
Q2
Teacher(s)
Riviere Etienne;
Language
English
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.
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.
Aims
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:
|
The contribution of this Teaching Unit to the development and command of the skills and learning outcomes of the programme(s) can be accessed at the end of this sheet, in the section entitled “Programmes/courses offering this Teaching Unit”.
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.
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
- Short lectures
- Guided and interactive exercices in class
- Readings and/or videos at home
- Practical sessions
Evaluation methods
Evaluation methods:
- Projects (40% of the final mark)
- Exam (60% of the final mark)
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
UCL library reference 10.620.426
Faculty or entity
INFO