Beware, this is the 2016 course. For the 2017 course, please follow this link.
_
_
_
_
_
_
Parallelism and Concurrency - EPFL Course, Spring 2016
CS 206 - Spring Semester, 2nd year undergraduate course
Main reading material: Learning Concurrent Programming in Scala
IMPORTANT: Grading Interface for Concurrency Assignments
- For more details scroll down to the “Getting Started” section under the heading “Part II: Concurrent Programming”
IMPORTANT: Coursera Email Information
Parts of this course will run through Coursera, https://www.coursera.org/learn/parprog1/
Students taking this course are requested to provide their Coursera account email by filling up this google form. Note that Coursera requires you to only have one account.
Please note that, when using Coursera, you can choose “I don't want to verify” and “Continue without verification” and you will receive assignment submission tokens that have no time limits, which will simplify the use of the system for this course.
Overview
There are three main parts of the course:
- Parallelism (first four weeks): lectures as live lectures and MOOC videos, assignment submission through Coursera
- Concurrency: lectures as live lectures
- Big Data Analysis with Scala and Spark (last three weeks): MOOC
In any case, there will be programming assignments that you will be submitting online.
Staff
EPFL Instructors | Martin Odersky, Heather Miller, and Viktor Kuncak |
Remote Instructor | Aleksandar Prokopec |
PhD Assistants | Ravi Kandhadai (lead TA), Romain Edelmann, and Mikaël Mayer |
MSc Assistants | Alfonso Peterssen, Jean-Baptiste Cordonnier, Teo Stocco, Tristan Overney |
Secretaries | Danielle Chamberlain and Sylvie Jankow |
Grading
Continuous control. Components of the grade include:
- written exams during the semester (midterm counting 35%, and the final counting 40% of the grade)
- small programming projects during the semester (all together counting 25% of the grade)
Assignment Deadlines
Assignment Due Dates:
- a) Assignment 1: 9th March.
- b) Assignment 2: 19th March (the deadline was relaxed for a few students who had problems with grading infrastructure)
- c) Assignment 3: 23rd March
- d) Assignment 4: 6th April
- e) Assignment 5: 21st April
- f) Assignment 6: 4th May
- g) Assignment 7: 12th May
- h) Assignment 8: 3rd June
- i) Assignment 9: 3rd June
Course Calendar
Course Material
Part I: Parallel Programming
Week 01, Wednesday 24 February 2016
Combined PDF Slides for Week 1
Week 02, Wednesday 2 March 2016
- Example: Merge Sort
- Parallel mapping
- Reductions (fold)
- Associativity
- Parallel scan left
Reading:
Week 03, Wednesday 9 March 2016
- Data-Parallel Programming
- Data-Parallel Operations I
- Data-Parallel Operations II
- Scala Parallel Collections
- Splitters and Combiners
Week 04, Wednesday 16 March 2016
- Implementing Combiners
- Two-Phase Construction
- Conc-Trees
- Amortized Conc-Tree Appends
- Conc-Tree Combiners
Week 05, Wednesday 23 March 2016
- Review of the material (e.g. more on associativity)
Wednesday 30 March - NO CLASSES
Part II: Concurrent Programming
Week 06, Wednesday 6 April 2016
Week 07, Wednesday 13 April 2016
- Concurrency 2: Chapter 3 of Learning Concurrent Programming in Scala Slides
- Documentation of Java Memory Model (an older PDF document)
Week 08, Wednesday 20 April 2016
- Concurrency 3: Chapter 4 of Learning Concurrent Programming in Scala Slides
Week 09, Wednesday 27 April 2016
- 14:15: Actors 1
- Click here for Video lectures on Actors - Part 1
- 16:00 MIDTERM EXAM
- Midterm exam will happen in Rooms INF 1 and INF 2 the usual lab rooms
Week 10, Wednesday 4 May 2016
- 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
Part III: Big Data Analysis with Scala and Spark
Week 11, Wednesday 11 May 2016
- Assignment 8 - Stackoverflow - Problem Statement and Handout
Week 12, Wednesday 18 May 2016
- Live Lecture by Heather Miller
- Assignment 9 - Wikipedia - Problem Statement and Handout
Week 13, Wednesday 25 May 2016
- Live Lecture by Heather Miller
- Revisiting joins (updated last week's slides1)
- Shuffles, closures, and shared variables (continuing with slides2 from last week)