Descriptif
Today's programs and calculations operate not on one computer at a time, but rather on groups of processors or machines working together in concert. But ensuring efficiency and cooperation among the threads of a program is a deeply subtle, and fascinating, problem. This course aims to provide the techniques required to master efficient distributed programming, avoiding the many pitfalls that arise when computations share their resources.
Diplôme(s) concerné(s)
Format des notes
Numérique sur 20Littérale/grade américainPour les étudiants du diplôme Bachelor of Science de l'Ecole polytechnique
Le rattrapage est autorisé- Crédits ECTS acquis : 4 ECTS
La note obtenue rentre dans le calcul de votre GPA.
Pour les étudiants du diplôme Echanges PEI
Le rattrapage est autorisé (Max entre les deux notes écrêté à une note seuil)- Crédits ECTS acquis : 4 ECTS
La note obtenue rentre dans le calcul de votre GPA.
Programme détaillé
This is a course on concurrency, and distributed systems. We will concentrate first and foremost on:
- multi-thread programming in C++ : this is a classical model for shared-memory concurrency. Our intention is not to write sophisticated C++ code, only to illustrate points 2 and 3 below.
- parallel and distributed computing algorithms : we will mostly deal with concurrent data structures, how to implement classical basic blocks in programming, concurrently (such as basic operations on stacks, queues, lists)
- correctness issues : parallel and distributed programming is harder than it looks, if it is already difficult to get important speedups, it is even more difficult to get correct algorithms and programs in the concurrent world. It is all the more important that these programs are non-deterministic and very difficult to test.
This is only an introduction to a vast subject. At the end of the course though, you will have the key concepts that will allow you to understand many other concurrency and distributed computing paradigms.
If you want to complement this course with some further readings, we recommend you the following :
- The Art of Multiprocessor Programming, Maurice Herlihy (pdf should be available from the Polytechnique network)
- Distributed Computing Through Combinatorial Topology, Maurice Herlihy (very advanced, but can interest the research-oriented reader)
- C++ Concurrency in Action, Practical Multithreading (free version)
Support pédagogique multimédia