LARA

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

Course Book Description

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

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

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

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

  • Concurrency 1: Chapter 2 of Learning Concurrent Programming in Scala Slides

Week 07, Wednesday 13 April 2016

Week 08, Wednesday 20 April 2016

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

Slides on implementing futures

Week 09, Wednesday 27 April 2016

Week 10, Wednesday 4 May 2016

Part III: Big Data Analysis with Scala and Spark

Week 11, Wednesday 11 May 2016

  • NO LIVE LECTURE. See the video and the slides.
  • Spark Lecture 1 v
  • Slides slides

Week 12, Wednesday 18 May 2016

Week 13, Wednesday 25 May 2016

Week 14, Wednesday 1 June 2016

  • 15:15 Office hours in INF 3
  • Sample questions and answers from last year's quiz of a similar course QuestionsSolutions
  • 16:00 FINAL EXAM INF 1 and INF 2