Parallelism and concurrency in software
Summary
From sensors,to smart phones,to the world's largest datacenters and supercomputers, parallelism & concurrency is ubiquitous in modern computing.There are also many forms of parallel & concurrent execution in modern platforms with varying degrees of ease of programmability,performance & efficiency.
Content
The goal of this course is to provide a deep understanding of the fundamental principles and trade-offs involved in constructing efficient parallel or concurrent software.
- Performance vs. efficiency
- Forms of parallelism
- Communication models
- Memory models
- Functional parallelism
- Domain-specific languages
- Throughput parallelism
- Data parallelism
- Distributed data parallelism
- Forms of concurrency
- Asynchronous programming
- Coroutines and futures
Learning Prerequisites
Required courses
- CS-200 Computer architecture
- CS-214 Software construction
Recommended courses
CS-202 Computer systems
Important concepts to start the course
- Programming in C/C++, Java or Scala
- Basic assembly language programming
- Basic use of tools to debug
Learning Outcomes
By the end of the course, the student must be able to:
- Construct parallel software
- Construct concurrent software
- Construct efficient software
- Design software for various platforms including CPUs, accelerators and clusters
Teaching methods
- Lectures
- Homework
- Projects
Expected student activities
- Standalone homeworks
- Projects in teams
Assessment methods
- 20% homework
- 30% projects
- 20% midterm
- 30% final
Supervision
Office hours | Yes |
Assistants | Yes |
Prerequisite for
- CS-471 Advanced multiprocessor architecture
- CS-453 Concurrent computing
- CS-451 Distributed algorithms
Dans les plans d'études
- Semestre: Printemps
- Forme de l'examen: Pendant le semestre (session d'été)
- Matière examinée: Parallelism and concurrency in software
- Cours: 3 Heure(s) hebdo x 14 semaines
- Exercices: 1 Heure(s) hebdo x 14 semaines
- Labo: 2 Heure(s) hebdo x 14 semaines
- Type: optionnel
- Semestre: Printemps
- Forme de l'examen: Pendant le semestre (session d'été)
- Matière examinée: Parallelism and concurrency in software
- Cours: 3 Heure(s) hebdo x 14 semaines
- Exercices: 1 Heure(s) hebdo x 14 semaines
- Labo: 2 Heure(s) hebdo x 14 semaines
- Type: optionnel
- Semestre: Printemps
- Forme de l'examen: Pendant le semestre (session d'été)
- Matière examinée: Parallelism and concurrency in software
- Cours: 3 Heure(s) hebdo x 14 semaines
- Exercices: 1 Heure(s) hebdo x 14 semaines
- Labo: 2 Heure(s) hebdo x 14 semaines
- Type: optionnel
- Semestre: Printemps
- Forme de l'examen: Pendant le semestre (session d'été)
- Matière examinée: Parallelism and concurrency in software
- Cours: 3 Heure(s) hebdo x 14 semaines
- Exercices: 1 Heure(s) hebdo x 14 semaines
- Labo: 2 Heure(s) hebdo x 14 semaines
- Type: optionnel
- Semestre: Printemps
- Forme de l'examen: Pendant le semestre (session d'été)
- Matière examinée: Parallelism and concurrency in software
- Cours: 3 Heure(s) hebdo x 14 semaines
- Exercices: 1 Heure(s) hebdo x 14 semaines
- Labo: 2 Heure(s) hebdo x 14 semaines
- Type: optionnel