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
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.
- if you need to learn Scala, have a look at the course Functional Programming Principles 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, https://www.coursera.org/learn/parprog1/
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
Overview
There are three main parts of the course:
- Parallelism
- Concurrency
- Big Data Analysis with Scala and Spark
Staff
EPFL Instructors | Viktor Kuncak, Heather Miller, Martin Odersky, and Aleksandar Prokopec |
Graduate Assistants | Romain Edelmann (head TA), Georg Schmid, Denys Shabalin, Sébastien Doeraene |
Student Assistants | Cédric Viaccoz, Romain Gehrig, Bastian Nanchen |
Secretaries | Natascha Fontana and Sylvie Jankow |
Rooms
- 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.
Grading
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%
Projects
Grading infrastructure and git:
- Grading infrastructure Read this before starting to work on your projects.
- Git instructions on branches Read this to create and manage different branches for your projects.
Programming projects:
- Parallel Box Blur Filter (Deadline: Friday 3rd March 2017 at midnight)
- Reductions and Prefix Sums (Deadline: Friday 10th March 2017 at midnight)
- K-Means (Deadline: Friday 17th March 2017 at midnight)
- Barnes-Hut Simulation (Deadline: Friday 24th March 2017 at midnight)
- Bounded Buffer (Deadline: Friday 31st March 2017 at midnight)
- Lock-free Sorted List (Deadline: Friday 7th April 2017 at midnight)
- Actors Binary Tree (Deadline: Friday 5th May 2017 at midnight)
- Wikipedia (Deadline: Friday 12th May 2017 at midnight)
- StackOverflow (Deadline: Friday 19th May 2017 at midnight )
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
Reading:
Exercises:
- Exercise sheet (Updated: 28.02.17 - 10.00am) (Solutions)
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
Exercises:
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
Exercises:
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
- Concurrency 2: Chapter 3 of Learning Concurrent Programming in Scala Slides (Updated 29.03.17 14:05)
- Documentation of Java Memory Model (an older PDF document)
Week 07, Wednesday 5 April 2017
In class lecture
- Concurrency 3: Chapter 4 of Learning Concurrent Programming in Scala Slides
Week 08, Wednesday 12 April 2017
MIDTERM
- 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
- Midterm 2015 (Only the questions covering topics seen so far have been included)
Video lectures
- Click here for Video lectures on Actors - Part 1
- Not covered in the midterm.
Week 09, Wednesday 26 April 2017
Exercise session instead of lecture
- Actors 2
- Click here for Video lectures on Actors - Part 2
- Click here for Video lectures on Actors - Part 3
- Slides on actors are available in the google drive: Course Slides
Exercises:
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
- Spark Lectures Week 4
Week 14, Wednesday 31 May 2017
- Wednesday, 31 May 2017, 14:15-16:00 FINAL EXAM in room SG 1138.
Last year's course is at Parallelism and Concurrency 2016.