LARA

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

Week 07

In class lecture

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

Slides on implementing futures

Week 08

MIDTERM

  • Closed book. No material is allowed apart from writing material (pens, pencils, erasers, etc.).
  • No project session given afterwards.

Week 09

  • Actors 1: Introduction: Why Actors? Video
  • Actors 2: The Actor Model Video

Exercise session instead of lecture

Week 10

  • Actors 3: Message Processing Semantics Video
  • Actors 4: Testing Actor Systems Video

Exercise session instead of lecture

Exercises:

Part III: Big Data Analysis with Scala and Spark

Week 11

Exercises:

Week 12

Exercises:

Week 13

Exercises:

Week 14

  • FINAL EXAM
  • The exam will be closed book.