CS-302 / 6 credits

Teacher(s): Basu Arkaprava, Falsafi Babak

Language: English


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

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
  • 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

Tuesday, 10h - 12h: Lecture CE14

Thursday, 10h - 11h: Lecture CM4

Thursday, 11h - 12h: Exercise, TP CM4

Friday, 10h - 12h: Project, labs, other CM011
CM012

Related courses

Results from graphsearch.epfl.ch.