Course Material
Part I: Parallel Programming
Week 1
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 2
Exercise session instead of lecture
- Example: Merge Sort
- Parallel mapping
- Reductions (fold)
- Associativity
- Parallel scan left
Reading:
Exercises:
Week 3
Exercise session instead of lecture
- Data-Parallel Programming
- Data-Parallel Operations I
- Data-Parallel Operations II
- Scala Parallel Collections
- Splitters and Combiners
Exercises:
Week 4
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
In class lecture
- Concurrency 1: Chapter 2 of Learning Concurrent Programming in Scala Slides
Week 06
In class lecture
- Concurrency 2: Chapter 3 of Learning Concurrent Programming in Scala Slides
- Documentation of Java Memory Model (an older PDF document)
Week 07
In class lecture
- Concurrency 3: Chapter 4 of Learning Concurrent Programming in Scala Slides
Week 08
MIDTERM
- Closed book. No material is allowed apart from writing material (pens, pencils, erasers, etc.).
- No project session given afterwards.
Week 09
Exercise session instead of lecture
Exercises:
Week 10
Exercise session instead of lecture
Part III: Big Data Analysis with Scala and Spark
Week 11
Week 12
Week 13
Week 14
- FINAL EXAM
- The exam will be closed book.