This is an old page. Please Click Here for 2020 Version of the Course

Another old version of the course, from 2019

EPFL Parallelism and Concurrency (CS-206), Spring 2017

Moodle Calendar Slides

Parallelism Youtube Parallelism Coursera

This is the EPFL course CS 206 offered in Spring Semester, 2nd year at the undergraduate level.

You can read here the Course Book Description.

The main textbook is Learning Concurrent Programming in Scala.

IMPORTANT: Exercises Rooms

Please select your preferred time slot and location for exercise sessions on the following Doodle form.

Exercise sessions will take place whenever no live lectures are given. Please check when they happen on the course schedule below.

  • Exercise sessions (which start at 14:15) differ from project sessions given every week in INF1 and INF2 from 16:15

IMPORTANT: Coursera Information

Parts of this course will run through Coursera,

However, please note that

  • grading will be done using our own interface, NOT USING Coursera
  • although you are free to use information on Coursera, the staff of this course will only monitor the Moodle Forum


There are three main parts of the course:

  • Parallelism
  • Concurrency
  • Big Data Analysis with Scala and Spark



  • Lectures are given in CM3.
  • Exercises sessions take place in CM3, CM013, INM200. Please register on the Doodle form.
  • Project sessions take place in INF1 and INF2.


Continuous control. Components of the grade include:

  • written exams during the semester
    • midterm on 12 April 2017, responsible for 35%
    • final in the last week, on 31 May 2017 responsible for 40%
  • programming assignments - projects (around 9 of them), during the semester, all together responsible for 25%


Grading infrastructure and git:

Programming projects:

Course Material

Part I: Parallel Programming

Week 01, Wednesday 22 February 2017

In class lecture

  • Course introduction and introduction to parallelism
  • JVM and parallelism
  • Basic parallel Construct. Array sum example
  • Example: estimating the value of pi
  • First-class tasks
  • How fast are parallel programs?
  • Benchmarking parallel programs

Reading: background on recurrences

Week 02, Wednesday 1 March 2017

Exercise session instead of lecture

  • Example: Merge Sort
  • Parallel mapping
  • Reductions (fold)
  • Associativity
  • Parallel scan left



Week 03, Wednesday 8 March 2017

Exercise session instead of lecture

  • Data-Parallel Programming
  • Data-Parallel Operations I
  • Data-Parallel Operations II
  • Scala Parallel Collections
  • Splitters and Combiners


Week 04, Wednesday 15 March 2017

Exercise session instead of lecture

  • Implementing Combiners
  • Two-Phase Construction
  • Conc-Trees
  • Amortized Conc-Tree Appends
  • Conc-Tree Combiners


Part II: Concurrent Programming

Week 05, Wednesday 22 March 2017

In class lecture by Aleksandar Prokopec

  • Concurrency 1: Chapter 2 of Learning Concurrent Programming in Scala Slides (Updated 22.03.17 09:05)

Week 06, Wednesday 29 March 2016

In class lecture

Week 07, Wednesday 5 April 2017

In class lecture

  • Concurrency 3: Chapter 4 of Learning Concurrent Programming in Scala Slides

Slides on implementing futures

Week 08, Wednesday 12 April 2017


  • From 2.15pm to 4pm.
  • Closed book. No material is allowed apart from writing material (pens, pencils, erasers, etc.).
  • Room assignments are available here.
  • No project session given afterwards.
Preparation material for the midterm
Video lectures

Week 09, Wednesday 26 April 2017

Exercise session instead of lecture


Part III: Big Data Analysis with Scala and Spark

Week 10, Wednesday 3 May 2017


Week 11, Wednesday 10 May 2017


Week 12, Wednesday 17 May 2017


Week 13, Wednesday 24 May 2017

Week 14, Wednesday 31 May 2017

Last year's course is at Parallelism and Concurrency 2016.