CS-302 / 6 credits

Teacher: Falsafi Babak

Language: English


Summary

From sensors and smartphones to the world's largest datacenters and supercomputers, parallelism & concurrency are now fundamental to modern computing. Understanding when and how to use these technqiues is essential for constructing scalable, high-performance, and efficients applications.

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. Accordingly, the following topics are covered in the course:

  • Principles of parallel programming
  • Shared-memory parallel programming
  • Distributed-memory parallel programming
  • Memory consistency models
  • Synchronization techniques
  • Concurrency techniques
  • Asynchronous programming using coroutines
  • Microservices and RPC
  • Introduction to GPUs
  • GPU programming using CUDA

Note that the topics are tentative and will be explored at different depths. In-class participatin is strongly recommended.

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
  • Construct parallel software
  • Construct concurrent software
  • Construct efficient software
  • Design software for various platforms including CPUs, accelerators and clusters

Teaching methods

  • Lectures
  • Projects

 

Expected student activities

  • Projects in teams

 

Assessment methods

  • 30% projects
  • 30% midterm
  • 40% final

 

Supervision

Office hours Yes
Assistant.e.s Yes

Prerequisite for

  • CS-471 Advanced multiprocessor architecture
  • CS-453 Concurrent computing
  • CS-451 Distributed algorithms

 

In the programs

  • Semester: Spring
  • Exam form: During the semester (summer session)
  • Subject examined: Parallelism and concurrency in software
  • Courses: 3 Hour(s) per week x 14 weeks
  • Exercises: 1 Hour(s) per week x 14 weeks
  • Lab: 2 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: During the semester (summer session)
  • Subject examined: Parallelism and concurrency in software
  • Courses: 3 Hour(s) per week x 14 weeks
  • Exercises: 1 Hour(s) per week x 14 weeks
  • Lab: 2 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: During the semester (summer session)
  • Subject examined: Parallelism and concurrency in software
  • Courses: 3 Hour(s) per week x 14 weeks
  • Exercises: 1 Hour(s) per week x 14 weeks
  • Lab: 2 Hour(s) per week x 14 weeks
  • Type: optional

Reference week

Related courses

Results from graphsearch.epfl.ch.