From d6a93182469445f039adaccaba06b601fd823256 Mon Sep 17 00:00:00 2001
From: Guillaume Martres <smarter@ubuntu.com>
Date: Mon, 19 Apr 2021 12:02:23 +0200
Subject: [PATCH] Add solution to the 2021 midterm

---
 previous-exams/2021-midterm/m1.md             |  61 +++
 previous-exams/2021-midterm/m1/.gitignore     |  22 +
 previous-exams/2021-midterm/m1/assignment.sbt |   2 +
 previous-exams/2021-midterm/m1/build.sbt      |  12 +
 .../2021-midterm/m1/grading-tests.jar         | Bin 0 -> 33287 bytes
 .../m1/project/FilteringReporterPlugin.scala  |  31 ++
 .../m1/project/MOOCSettings.scala             |  49 ++
 .../m1/project/StudentTasks.scala             | 303 +++++++++++++
 .../2021-midterm/m1/project/build.properties  |   1 +
 .../2021-midterm/m1/project/buildSettings.sbt |   5 +
 .../2021-midterm/m1/project/plugins.sbt       |   2 +
 .../m1/src/main/scala/m1/Lib.scala            |  60 +++
 .../m1/src/main/scala/m1/M1.scala             |  76 ++++
 .../m1/src/test/scala/m1/M1Suite.scala        | 156 +++++++
 previous-exams/2021-midterm/m14.md            |  42 ++
 previous-exams/2021-midterm/m14/.gitignore    |  22 +
 .../2021-midterm/m14/assignment.sbt           |   2 +
 previous-exams/2021-midterm/m14/build.sbt     |  12 +
 .../2021-midterm/m14/grading-tests.jar        | Bin 0 -> 119786 bytes
 .../m14/project/FilteringReporterPlugin.scala |  31 ++
 .../m14/project/MOOCSettings.scala            |  49 ++
 .../m14/project/StudentTasks.scala            | 303 +++++++++++++
 .../2021-midterm/m14/project/build.properties |   1 +
 .../m14/project/buildSettings.sbt             |   5 +
 .../2021-midterm/m14/project/plugins.sbt      |   2 +
 .../scala/m14/AbstractBlockingQueue.scala     |  14 +
 .../m14/AbstractThreadPoolExecutor.scala      |   7 +
 .../m14/src/main/scala/m14/M14.scala          |  80 ++++
 .../m14/src/main/scala/m14/Monitor.scala      |  23 +
 .../m14/src/test/scala/m14/M14Suite.scala     | 159 +++++++
 .../m14/instrumentation/MockedMonitor.scala   |  73 +++
 .../SchedulableBlockingQueue.scala            |  17 +
 .../scala/m14/instrumentation/Scheduler.scala | 305 +++++++++++++
 .../scala/m14/instrumentation/Stats.scala     |  23 +
 .../m14/instrumentation/TestHelper.scala      | 125 ++++++
 .../scala/m14/instrumentation/TestUtils.scala |  20 +
 previous-exams/2021-midterm/m15.md            |  42 ++
 previous-exams/2021-midterm/m15/.gitignore    |  22 +
 .../2021-midterm/m15/assignment.sbt           |   2 +
 previous-exams/2021-midterm/m15/build.sbt     |  12 +
 .../2021-midterm/m15/grading-tests.jar        | Bin 0 -> 126110 bytes
 .../m15/project/FilteringReporterPlugin.scala |  31 ++
 .../m15/project/MOOCSettings.scala            |  49 ++
 .../m15/project/StudentTasks.scala            | 303 +++++++++++++
 .../2021-midterm/m15/project/build.properties |   1 +
 .../m15/project/buildSettings.sbt             |   5 +
 .../2021-midterm/m15/project/plugins.sbt      |   2 +
 .../scala/m15/AbstractBlockingQueue.scala     |  14 +
 .../m15/AbstractThreadPoolExecutor.scala      |   7 +
 .../m15/src/main/scala/m15/M15.scala          |  79 ++++
 .../m15/src/main/scala/m15/Monitor.scala      |  23 +
 .../m15/src/test/scala/m15/M15Suite.scala     | 281 ++++++++++++
 .../m15/instrumentation/MockedMonitor.scala   |  73 +++
 .../SchedulableBlockingQueue.scala            |  17 +
 .../scala/m15/instrumentation/Scheduler.scala | 305 +++++++++++++
 .../scala/m15/instrumentation/Stats.scala     |  23 +
 .../m15/instrumentation/TestHelper.scala      | 125 ++++++
 .../scala/m15/instrumentation/TestUtils.scala |  20 +
 previous-exams/2021-midterm/m2.md             |  61 +++
 previous-exams/2021-midterm/m2/.gitignore     |  22 +
 previous-exams/2021-midterm/m2/assignment.sbt |   2 +
 previous-exams/2021-midterm/m2/build.sbt      |  12 +
 .../2021-midterm/m2/grading-tests.jar         | Bin 0 -> 34633 bytes
 .../m2/project/FilteringReporterPlugin.scala  |  31 ++
 .../m2/project/MOOCSettings.scala             |  49 ++
 .../m2/project/StudentTasks.scala             | 303 +++++++++++++
 .../2021-midterm/m2/project/build.properties  |   1 +
 .../2021-midterm/m2/project/buildSettings.sbt |   5 +
 .../2021-midterm/m2/project/plugins.sbt       |   2 +
 .../m2/src/main/scala/m2/Lib.scala            |  60 +++
 .../m2/src/main/scala/m2/M2.scala             |  75 ++++
 .../m2/src/test/scala/m2/M2Suite.scala        | 175 ++++++++
 previous-exams/2021-midterm/m20.md            |  97 ++++
 previous-exams/2021-midterm/m20/.gitignore    |  22 +
 .../2021-midterm/m20/assignment.sbt           |   2 +
 previous-exams/2021-midterm/m20/build.sbt     |  12 +
 .../2021-midterm/m20/grading-tests.jar        | Bin 0 -> 131660 bytes
 .../m20/project/FilteringReporterPlugin.scala |  31 ++
 .../m20/project/MOOCSettings.scala            |  49 ++
 .../m20/project/StudentTasks.scala            | 303 +++++++++++++
 .../2021-midterm/m20/project/build.properties |   1 +
 .../m20/project/buildSettings.sbt             |   5 +
 .../2021-midterm/m20/project/plugins.sbt      |   2 +
 .../main/scala/m20/MultiWriterSeqCount.scala  |  66 +++
 .../m20/src/main/scala/m20/SeqCount.scala     |  53 +++
 .../m20/instrumentation/AtomicVariable.scala  |  28 ++
 .../scala/m20/instrumentation/Monitor.scala   |  23 +
 .../m20/src/test/scala/m20/TestSuite.scala    | 122 +++++
 .../m20/instrumentation/MockedMonitor.scala   |  72 +++
 .../scala/m20/instrumentation/Scheduler.scala | 304 +++++++++++++
 .../scala/m20/instrumentation/Stats.scala     |  23 +
 .../m20/instrumentation/TestHelper.scala      | 124 +++++
 .../scala/m20/instrumentation/TestUtils.scala |  19 +
 .../m20/src/test/scala/m20/overrides.scala    |  68 +++
 previous-exams/2021-midterm/m21.md            |  97 ++++
 previous-exams/2021-midterm/m21/.gitignore    |  22 +
 .../2021-midterm/m21/assignment.sbt           |   2 +
 previous-exams/2021-midterm/m21/build.sbt     |  12 +
 .../2021-midterm/m21/grading-tests.jar        | Bin 0 -> 131654 bytes
 .../m21/project/FilteringReporterPlugin.scala |  31 ++
 .../m21/project/MOOCSettings.scala            |  49 ++
 .../m21/project/StudentTasks.scala            | 303 +++++++++++++
 .../2021-midterm/m21/project/build.properties |   1 +
 .../m21/project/buildSettings.sbt             |   5 +
 .../2021-midterm/m21/project/plugins.sbt      |   2 +
 .../main/scala/m21/MultiWriterSeqCount.scala  |  66 +++
 .../m21/src/main/scala/m21/SeqCount.scala     |  53 +++
 .../m21/instrumentation/AtomicVariable.scala  |  28 ++
 .../scala/m21/instrumentation/Monitor.scala   |  23 +
 .../m21/src/test/scala/m21/TestSuite.scala    | 122 +++++
 .../m21/instrumentation/MockedMonitor.scala   |  72 +++
 .../scala/m21/instrumentation/Scheduler.scala | 304 +++++++++++++
 .../scala/m21/instrumentation/Stats.scala     |  23 +
 .../m21/instrumentation/TestHelper.scala      | 124 +++++
 .../scala/m21/instrumentation/TestUtils.scala |  19 +
 .../m21/src/test/scala/m21/overrides.scala    |  68 +++
 previous-exams/2021-midterm/m3.md             |  61 +++
 previous-exams/2021-midterm/m3/.gitignore     |  22 +
 previous-exams/2021-midterm/m3/assignment.sbt |   2 +
 previous-exams/2021-midterm/m3/build.sbt      |  12 +
 .../2021-midterm/m3/grading-tests.jar         | Bin 0 -> 34429 bytes
 .../m3/project/FilteringReporterPlugin.scala  |  31 ++
 .../m3/project/MOOCSettings.scala             |  49 ++
 .../m3/project/StudentTasks.scala             | 303 +++++++++++++
 .../2021-midterm/m3/project/build.properties  |   1 +
 .../2021-midterm/m3/project/buildSettings.sbt |   5 +
 .../2021-midterm/m3/project/plugins.sbt       |   2 +
 .../m3/src/main/scala/m3/Lib.scala            |  68 +++
 .../m3/src/main/scala/m3/M3.scala             |  75 ++++
 .../m3/src/test/scala/m3/M3Suite.scala        | 174 ++++++++
 previous-exams/2021-midterm/m6.md             | 155 +++++++
 previous-exams/2021-midterm/m6/.gitignore     |  22 +
 previous-exams/2021-midterm/m6/assignment.sbt |   2 +
 previous-exams/2021-midterm/m6/build.sbt      |  12 +
 .../2021-midterm/m6/grading-tests.jar         | Bin 0 -> 35241 bytes
 .../m6/project/FilteringReporterPlugin.scala  |  31 ++
 .../m6/project/MOOCSettings.scala             |  49 ++
 .../m6/project/StudentTasks.scala             | 303 +++++++++++++
 .../2021-midterm/m6/project/build.properties  |   1 +
 .../2021-midterm/m6/project/buildSettings.sbt |   5 +
 .../2021-midterm/m6/project/plugins.sbt       |   2 +
 .../m6/src/main/scala/m6/M6.scala             | 149 +++++++
 .../m6/src/main/scala/m6/lib.scala            |  84 ++++
 .../m6/src/test/scala/m6/M6Suite.scala        | 422 ++++++++++++++++++
 previous-exams/2021-midterm/m7.md             | 155 +++++++
 previous-exams/2021-midterm/m7/.gitignore     |  22 +
 previous-exams/2021-midterm/m7/assignment.sbt |   2 +
 previous-exams/2021-midterm/m7/build.sbt      |  12 +
 .../2021-midterm/m7/grading-tests.jar         | Bin 0 -> 35244 bytes
 .../m7/project/FilteringReporterPlugin.scala  |  31 ++
 .../m7/project/MOOCSettings.scala             |  49 ++
 .../m7/project/StudentTasks.scala             | 303 +++++++++++++
 .../2021-midterm/m7/project/build.properties  |   1 +
 .../2021-midterm/m7/project/buildSettings.sbt |   5 +
 .../2021-midterm/m7/project/plugins.sbt       |   2 +
 .../m7/src/main/scala/m7/M7.scala             | 149 +++++++
 .../m7/src/main/scala/m7/lib.scala            |  84 ++++
 .../m7/src/test/scala/m7/M7Suite.scala        | 422 ++++++++++++++++++
 158 files changed, 10460 insertions(+)
 create mode 100644 previous-exams/2021-midterm/m1.md
 create mode 100644 previous-exams/2021-midterm/m1/.gitignore
 create mode 100644 previous-exams/2021-midterm/m1/assignment.sbt
 create mode 100644 previous-exams/2021-midterm/m1/build.sbt
 create mode 100644 previous-exams/2021-midterm/m1/grading-tests.jar
 create mode 100644 previous-exams/2021-midterm/m1/project/FilteringReporterPlugin.scala
 create mode 100644 previous-exams/2021-midterm/m1/project/MOOCSettings.scala
 create mode 100644 previous-exams/2021-midterm/m1/project/StudentTasks.scala
 create mode 100644 previous-exams/2021-midterm/m1/project/build.properties
 create mode 100644 previous-exams/2021-midterm/m1/project/buildSettings.sbt
 create mode 100644 previous-exams/2021-midterm/m1/project/plugins.sbt
 create mode 100644 previous-exams/2021-midterm/m1/src/main/scala/m1/Lib.scala
 create mode 100644 previous-exams/2021-midterm/m1/src/main/scala/m1/M1.scala
 create mode 100644 previous-exams/2021-midterm/m1/src/test/scala/m1/M1Suite.scala
 create mode 100644 previous-exams/2021-midterm/m14.md
 create mode 100644 previous-exams/2021-midterm/m14/.gitignore
 create mode 100644 previous-exams/2021-midterm/m14/assignment.sbt
 create mode 100644 previous-exams/2021-midterm/m14/build.sbt
 create mode 100644 previous-exams/2021-midterm/m14/grading-tests.jar
 create mode 100644 previous-exams/2021-midterm/m14/project/FilteringReporterPlugin.scala
 create mode 100644 previous-exams/2021-midterm/m14/project/MOOCSettings.scala
 create mode 100644 previous-exams/2021-midterm/m14/project/StudentTasks.scala
 create mode 100644 previous-exams/2021-midterm/m14/project/build.properties
 create mode 100644 previous-exams/2021-midterm/m14/project/buildSettings.sbt
 create mode 100644 previous-exams/2021-midterm/m14/project/plugins.sbt
 create mode 100644 previous-exams/2021-midterm/m14/src/main/scala/m14/AbstractBlockingQueue.scala
 create mode 100644 previous-exams/2021-midterm/m14/src/main/scala/m14/AbstractThreadPoolExecutor.scala
 create mode 100644 previous-exams/2021-midterm/m14/src/main/scala/m14/M14.scala
 create mode 100644 previous-exams/2021-midterm/m14/src/main/scala/m14/Monitor.scala
 create mode 100644 previous-exams/2021-midterm/m14/src/test/scala/m14/M14Suite.scala
 create mode 100644 previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/MockedMonitor.scala
 create mode 100644 previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/SchedulableBlockingQueue.scala
 create mode 100644 previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/Scheduler.scala
 create mode 100644 previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/Stats.scala
 create mode 100644 previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/TestHelper.scala
 create mode 100644 previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/TestUtils.scala
 create mode 100644 previous-exams/2021-midterm/m15.md
 create mode 100644 previous-exams/2021-midterm/m15/.gitignore
 create mode 100644 previous-exams/2021-midterm/m15/assignment.sbt
 create mode 100644 previous-exams/2021-midterm/m15/build.sbt
 create mode 100644 previous-exams/2021-midterm/m15/grading-tests.jar
 create mode 100644 previous-exams/2021-midterm/m15/project/FilteringReporterPlugin.scala
 create mode 100644 previous-exams/2021-midterm/m15/project/MOOCSettings.scala
 create mode 100644 previous-exams/2021-midterm/m15/project/StudentTasks.scala
 create mode 100644 previous-exams/2021-midterm/m15/project/build.properties
 create mode 100644 previous-exams/2021-midterm/m15/project/buildSettings.sbt
 create mode 100644 previous-exams/2021-midterm/m15/project/plugins.sbt
 create mode 100644 previous-exams/2021-midterm/m15/src/main/scala/m15/AbstractBlockingQueue.scala
 create mode 100644 previous-exams/2021-midterm/m15/src/main/scala/m15/AbstractThreadPoolExecutor.scala
 create mode 100644 previous-exams/2021-midterm/m15/src/main/scala/m15/M15.scala
 create mode 100644 previous-exams/2021-midterm/m15/src/main/scala/m15/Monitor.scala
 create mode 100644 previous-exams/2021-midterm/m15/src/test/scala/m15/M15Suite.scala
 create mode 100644 previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/MockedMonitor.scala
 create mode 100644 previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/SchedulableBlockingQueue.scala
 create mode 100644 previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/Scheduler.scala
 create mode 100644 previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/Stats.scala
 create mode 100644 previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/TestHelper.scala
 create mode 100644 previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/TestUtils.scala
 create mode 100644 previous-exams/2021-midterm/m2.md
 create mode 100644 previous-exams/2021-midterm/m2/.gitignore
 create mode 100644 previous-exams/2021-midterm/m2/assignment.sbt
 create mode 100644 previous-exams/2021-midterm/m2/build.sbt
 create mode 100644 previous-exams/2021-midterm/m2/grading-tests.jar
 create mode 100644 previous-exams/2021-midterm/m2/project/FilteringReporterPlugin.scala
 create mode 100644 previous-exams/2021-midterm/m2/project/MOOCSettings.scala
 create mode 100644 previous-exams/2021-midterm/m2/project/StudentTasks.scala
 create mode 100644 previous-exams/2021-midterm/m2/project/build.properties
 create mode 100644 previous-exams/2021-midterm/m2/project/buildSettings.sbt
 create mode 100644 previous-exams/2021-midterm/m2/project/plugins.sbt
 create mode 100644 previous-exams/2021-midterm/m2/src/main/scala/m2/Lib.scala
 create mode 100644 previous-exams/2021-midterm/m2/src/main/scala/m2/M2.scala
 create mode 100644 previous-exams/2021-midterm/m2/src/test/scala/m2/M2Suite.scala
 create mode 100644 previous-exams/2021-midterm/m20.md
 create mode 100644 previous-exams/2021-midterm/m20/.gitignore
 create mode 100644 previous-exams/2021-midterm/m20/assignment.sbt
 create mode 100644 previous-exams/2021-midterm/m20/build.sbt
 create mode 100644 previous-exams/2021-midterm/m20/grading-tests.jar
 create mode 100644 previous-exams/2021-midterm/m20/project/FilteringReporterPlugin.scala
 create mode 100644 previous-exams/2021-midterm/m20/project/MOOCSettings.scala
 create mode 100644 previous-exams/2021-midterm/m20/project/StudentTasks.scala
 create mode 100644 previous-exams/2021-midterm/m20/project/build.properties
 create mode 100644 previous-exams/2021-midterm/m20/project/buildSettings.sbt
 create mode 100644 previous-exams/2021-midterm/m20/project/plugins.sbt
 create mode 100644 previous-exams/2021-midterm/m20/src/main/scala/m20/MultiWriterSeqCount.scala
 create mode 100644 previous-exams/2021-midterm/m20/src/main/scala/m20/SeqCount.scala
 create mode 100644 previous-exams/2021-midterm/m20/src/main/scala/m20/instrumentation/AtomicVariable.scala
 create mode 100644 previous-exams/2021-midterm/m20/src/main/scala/m20/instrumentation/Monitor.scala
 create mode 100644 previous-exams/2021-midterm/m20/src/test/scala/m20/TestSuite.scala
 create mode 100644 previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/MockedMonitor.scala
 create mode 100644 previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/Scheduler.scala
 create mode 100644 previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/Stats.scala
 create mode 100644 previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/TestHelper.scala
 create mode 100644 previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/TestUtils.scala
 create mode 100644 previous-exams/2021-midterm/m20/src/test/scala/m20/overrides.scala
 create mode 100644 previous-exams/2021-midterm/m21.md
 create mode 100644 previous-exams/2021-midterm/m21/.gitignore
 create mode 100644 previous-exams/2021-midterm/m21/assignment.sbt
 create mode 100644 previous-exams/2021-midterm/m21/build.sbt
 create mode 100644 previous-exams/2021-midterm/m21/grading-tests.jar
 create mode 100644 previous-exams/2021-midterm/m21/project/FilteringReporterPlugin.scala
 create mode 100644 previous-exams/2021-midterm/m21/project/MOOCSettings.scala
 create mode 100644 previous-exams/2021-midterm/m21/project/StudentTasks.scala
 create mode 100644 previous-exams/2021-midterm/m21/project/build.properties
 create mode 100644 previous-exams/2021-midterm/m21/project/buildSettings.sbt
 create mode 100644 previous-exams/2021-midterm/m21/project/plugins.sbt
 create mode 100644 previous-exams/2021-midterm/m21/src/main/scala/m21/MultiWriterSeqCount.scala
 create mode 100644 previous-exams/2021-midterm/m21/src/main/scala/m21/SeqCount.scala
 create mode 100644 previous-exams/2021-midterm/m21/src/main/scala/m21/instrumentation/AtomicVariable.scala
 create mode 100644 previous-exams/2021-midterm/m21/src/main/scala/m21/instrumentation/Monitor.scala
 create mode 100644 previous-exams/2021-midterm/m21/src/test/scala/m21/TestSuite.scala
 create mode 100644 previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/MockedMonitor.scala
 create mode 100644 previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/Scheduler.scala
 create mode 100644 previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/Stats.scala
 create mode 100644 previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/TestHelper.scala
 create mode 100644 previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/TestUtils.scala
 create mode 100644 previous-exams/2021-midterm/m21/src/test/scala/m21/overrides.scala
 create mode 100644 previous-exams/2021-midterm/m3.md
 create mode 100644 previous-exams/2021-midterm/m3/.gitignore
 create mode 100644 previous-exams/2021-midterm/m3/assignment.sbt
 create mode 100644 previous-exams/2021-midterm/m3/build.sbt
 create mode 100644 previous-exams/2021-midterm/m3/grading-tests.jar
 create mode 100644 previous-exams/2021-midterm/m3/project/FilteringReporterPlugin.scala
 create mode 100644 previous-exams/2021-midterm/m3/project/MOOCSettings.scala
 create mode 100644 previous-exams/2021-midterm/m3/project/StudentTasks.scala
 create mode 100644 previous-exams/2021-midterm/m3/project/build.properties
 create mode 100644 previous-exams/2021-midterm/m3/project/buildSettings.sbt
 create mode 100644 previous-exams/2021-midterm/m3/project/plugins.sbt
 create mode 100644 previous-exams/2021-midterm/m3/src/main/scala/m3/Lib.scala
 create mode 100644 previous-exams/2021-midterm/m3/src/main/scala/m3/M3.scala
 create mode 100644 previous-exams/2021-midterm/m3/src/test/scala/m3/M3Suite.scala
 create mode 100644 previous-exams/2021-midterm/m6.md
 create mode 100644 previous-exams/2021-midterm/m6/.gitignore
 create mode 100644 previous-exams/2021-midterm/m6/assignment.sbt
 create mode 100644 previous-exams/2021-midterm/m6/build.sbt
 create mode 100644 previous-exams/2021-midterm/m6/grading-tests.jar
 create mode 100644 previous-exams/2021-midterm/m6/project/FilteringReporterPlugin.scala
 create mode 100644 previous-exams/2021-midterm/m6/project/MOOCSettings.scala
 create mode 100644 previous-exams/2021-midterm/m6/project/StudentTasks.scala
 create mode 100644 previous-exams/2021-midterm/m6/project/build.properties
 create mode 100644 previous-exams/2021-midterm/m6/project/buildSettings.sbt
 create mode 100644 previous-exams/2021-midterm/m6/project/plugins.sbt
 create mode 100644 previous-exams/2021-midterm/m6/src/main/scala/m6/M6.scala
 create mode 100644 previous-exams/2021-midterm/m6/src/main/scala/m6/lib.scala
 create mode 100644 previous-exams/2021-midterm/m6/src/test/scala/m6/M6Suite.scala
 create mode 100644 previous-exams/2021-midterm/m7.md
 create mode 100644 previous-exams/2021-midterm/m7/.gitignore
 create mode 100644 previous-exams/2021-midterm/m7/assignment.sbt
 create mode 100644 previous-exams/2021-midterm/m7/build.sbt
 create mode 100644 previous-exams/2021-midterm/m7/grading-tests.jar
 create mode 100644 previous-exams/2021-midterm/m7/project/FilteringReporterPlugin.scala
 create mode 100644 previous-exams/2021-midterm/m7/project/MOOCSettings.scala
 create mode 100644 previous-exams/2021-midterm/m7/project/StudentTasks.scala
 create mode 100644 previous-exams/2021-midterm/m7/project/build.properties
 create mode 100644 previous-exams/2021-midterm/m7/project/buildSettings.sbt
 create mode 100644 previous-exams/2021-midterm/m7/project/plugins.sbt
 create mode 100644 previous-exams/2021-midterm/m7/src/main/scala/m7/M7.scala
 create mode 100644 previous-exams/2021-midterm/m7/src/main/scala/m7/lib.scala
 create mode 100644 previous-exams/2021-midterm/m7/src/test/scala/m7/M7Suite.scala

diff --git a/previous-exams/2021-midterm/m1.md b/previous-exams/2021-midterm/m1.md
new file mode 100644
index 0000000..0846974
--- /dev/null
+++ b/previous-exams/2021-midterm/m1.md
@@ -0,0 +1,61 @@
+Use the following commands to make a fresh clone of your repository:
+
+```
+git clone -b m1 git@gitlab.epfl.ch:lamp/student-repositories-s21/cs206-GASPAR.git m1
+```
+
+## Useful links
+
+  * [A guide to the Scala parallel collections](https://docs.scala-lang.org/overviews/parallel-collections/overview.html)
+  * [The API documentation of the Scala parallel collections](https://www.javadoc.io/doc/org.scala-lang.modules/scala-parallel-collections_2.13/latest/scala/collection/index.html)
+  * [The API documentation of the Scala standard library](https://www.scala-lang.org/files/archive/api/2.13.4)
+  * [The API documentation of the Java standard library](https://docs.oracle.com/en/java/javase/15/docs/api/index.html)
+
+**If you have issues with the IDE, try [reimporting the
+build](https://gitlab.epfl.ch/lamp/cs206/-/blob/master/labs/example-lab.md#ide-features-like-type-on-hover-or-go-to-definition-do-not-work),
+if you still have problems, use `compile` in sbt instead.**
+
+## Exercise
+
+Given the following sequential implementation of a function that computes the sequence of rolling averages, your task will be to complete and optimize a parallel version of this code.
+
+```scala
+/** Compute the rolling average of array.
+ *
+ *  For an array `arr = Arr(x1, x2, x3, ..., xn)` the result is
+ *  `Arr(x1 / 1, (x1 + x2) / 2, (x1 + x2 + x3) / 3, ..., (x1 + x2 + x3 + ... + xn) / n)`
+ */
+def rollingAveragesSequential(arr: Array[Int]): Array[Double] =
+  // Transform all numbers to fractions with denominator 1
+  val arr1 = arr.map(x => Frac(x, 1))
+  // Compute the rolling average keeping the sum of all elements in the numerator and the count of elements in the denominator.
+  val arr2 = arr1.scan(Frac(0, 0))((acc, x) => Frac(acc.numerator + x.numerator, acc.denominator + x.denominator))
+  // Transform fractions to Doubles
+  arr2.map(frac => frac.toDouble)
+  // Drop the extra initial element that was added by the scan
+  arr3.tail
+```
+
+ This implementation has some issues:
+ - It does not use parallelism
+ - Creates two intermediate arrays by calling `map`
+ - Creates an extra intermediate arrays by calling `tail`
+ - Scan returns an extra element we do not need
+
+ We want to parallelize and avoid the creation of the extra arrays.
+ As we are calling a `scan` the natural operations we need are `upsweep` and `downsweep`.
+ It is possible specialize those operations for our problem by letting those operations do the mapping.
+ It is also possible to change those operations to not generate the first element.
+
+We give you a version of `rollingAveragesSequential` that partially implements the parallelization using `upsweep` and `downsweep`.
+
+ Your tasks in the exercise will be to:
+ - TASK 1: Implement the parallelization of `upsweep` and `downsweep`
+ - TASK 2: Remove the calls to the `map`
+ - TASK 3: Remove the call to `tail`
+
+ You can get partial points for solving part of the tasks.
+ The order of the tasks is a suggestion, you may do them in any order if that is simpler for you.
+
+Look at the `Lib` trait to find the definitions of functions and classes you can use (or already used).
+In this question we use a `Arr` array class instead of the normal `Array`. You may assume that this class has the same performance characteristics as the normal array. `Arr` provides only a limited set of operations.
diff --git a/previous-exams/2021-midterm/m1/.gitignore b/previous-exams/2021-midterm/m1/.gitignore
new file mode 100644
index 0000000..40937dc
--- /dev/null
+++ b/previous-exams/2021-midterm/m1/.gitignore
@@ -0,0 +1,22 @@
+# General
+*.DS_Store
+*.swp
+*~
+
+# Dotty
+*.class
+*.tasty
+*.hasTasty
+
+# sbt
+target/
+
+# IDE
+.bsp
+.bloop
+.metals
+.vscode
+
+# datasets
+stackoverflow-grading.csv
+wikipedia-grading.dat
diff --git a/previous-exams/2021-midterm/m1/assignment.sbt b/previous-exams/2021-midterm/m1/assignment.sbt
new file mode 100644
index 0000000..da7eb3c
--- /dev/null
+++ b/previous-exams/2021-midterm/m1/assignment.sbt
@@ -0,0 +1,2 @@
+// Student tasks (i.e. submit, packageSubmission)
+enablePlugins(StudentTasks)
diff --git a/previous-exams/2021-midterm/m1/build.sbt b/previous-exams/2021-midterm/m1/build.sbt
new file mode 100644
index 0000000..e476688
--- /dev/null
+++ b/previous-exams/2021-midterm/m1/build.sbt
@@ -0,0 +1,12 @@
+course := "midterm"
+assignment := "m1"
+scalaVersion := "3.0.0-RC1"
+scalacOptions ++= Seq("-language:implicitConversions", "-deprecation")
+
+libraryDependencies += "org.scalameta" %% "munit" % "0.7.22"
+
+val MUnitFramework = new TestFramework("munit.Framework")
+testFrameworks += MUnitFramework
+// Decode Scala names
+testOptions += Tests.Argument(MUnitFramework, "-s")
+testSuite := "m1.M1Suite"
diff --git a/previous-exams/2021-midterm/m1/grading-tests.jar b/previous-exams/2021-midterm/m1/grading-tests.jar
new file mode 100644
index 0000000000000000000000000000000000000000..6fa91f4263cecf0bd58cfea49fefc29d3cf7bffa
GIT binary patch
literal 33287
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
P82A|Gu`n<M*MfKex{Fn^

literal 0
HcmV?d00001

diff --git a/previous-exams/2021-midterm/m1/project/FilteringReporterPlugin.scala b/previous-exams/2021-midterm/m1/project/FilteringReporterPlugin.scala
new file mode 100644
index 0000000..2e4fd9a
--- /dev/null
+++ b/previous-exams/2021-midterm/m1/project/FilteringReporterPlugin.scala
@@ -0,0 +1,31 @@
+package sbt // To access the private[sbt] compilerReporter key
+package filteringReporterPlugin
+
+import Keys._
+import ch.epfl.lamp._
+
+object FilteringReporterPlugin extends AutoPlugin {
+  override lazy val projectSettings = Seq(
+    // Turn off warning coming from scalameter that we cannot fix without changing scalameter
+    compilerReporter in (Compile, compile) ~= { reporter => new FilteringReporter(reporter) }
+  )
+}
+
+class FilteringReporter(reporter: xsbti.Reporter) extends xsbti.Reporter {
+
+  def reset(): Unit = reporter.reset()
+  def hasErrors: Boolean = reporter.hasErrors
+  def hasWarnings: Boolean = reporter.hasWarnings
+  def printSummary(): Unit = reporter.printSummary()
+  def problems: Array[xsbti.Problem] = reporter.problems
+
+  def log(problem: xsbti.Problem): Unit = {
+    if (!problem.message.contains("An existential type that came from a Scala-2 classfile cannot be"))
+      reporter.log(problem)
+  }
+
+  def comment(pos: xsbti.Position, msg: String): Unit =
+    reporter.comment(pos, msg)
+
+  override def toString = s"CollectingReporter($reporter)"
+}
diff --git a/previous-exams/2021-midterm/m1/project/MOOCSettings.scala b/previous-exams/2021-midterm/m1/project/MOOCSettings.scala
new file mode 100644
index 0000000..1c40443
--- /dev/null
+++ b/previous-exams/2021-midterm/m1/project/MOOCSettings.scala
@@ -0,0 +1,49 @@
+package ch.epfl.lamp
+
+import sbt._
+import sbt.Keys._
+
+/**
+ * Coursera uses two versions of each assignment. They both have the same assignment key and part id but have
+ * different item ids.
+ *
+ * @param key Assignment key
+ * @param partId Assignment partId
+ * @param itemId Item id of the non premium version
+ * @param premiumItemId Item id of the premium version (`None` if the assignment is optional)
+ */
+case class CourseraId(key: String, partId: String, itemId: String, premiumItemId: Option[String])
+
+/**
+  * Settings shared by all assignments, reused in various tasks.
+  */
+object MOOCSettings extends AutoPlugin {
+
+  override def requires = super.requires && filteringReporterPlugin.FilteringReporterPlugin
+
+  object autoImport {
+    val course = SettingKey[String]("course")
+    val assignment = SettingKey[String]("assignment")
+    val options = SettingKey[Map[String, Map[String, String]]]("options")
+    val courseraId = settingKey[CourseraId]("Coursera-specific information identifying the assignment")
+    val testSuite = settingKey[String]("Fully qualified name of the test suite of this assignment")
+      .withRank(KeyRanks.Invisible)
+    // Convenient alias
+    type CourseraId = ch.epfl.lamp.CourseraId
+    val CourseraId = ch.epfl.lamp.CourseraId
+  }
+
+  import autoImport._
+
+  override val globalSettings: Seq[Def.Setting[_]] = Seq(
+    // supershell is verbose, buggy and useless.
+    useSuperShell := false
+  )
+
+  override val projectSettings: Seq[Def.Setting[_]] = Seq(
+    parallelExecution in Test := false,
+    // Report test result after each test instead of waiting for every test to finish
+    logBuffered in Test := false,
+    name := s"${course.value}-${assignment.value}"
+  )
+}
diff --git a/previous-exams/2021-midterm/m1/project/StudentTasks.scala b/previous-exams/2021-midterm/m1/project/StudentTasks.scala
new file mode 100644
index 0000000..c4669af
--- /dev/null
+++ b/previous-exams/2021-midterm/m1/project/StudentTasks.scala
@@ -0,0 +1,303 @@
+package ch.epfl.lamp
+
+import sbt._
+import Keys._
+
+// import scalaj.http._
+import java.io.{File, FileInputStream, IOException}
+import org.apache.commons.codec.binary.Base64
+// import play.api.libs.json.{Json, JsObject, JsPath}
+import scala.util.{Failure, Success, Try}
+
+/**
+  * Provides tasks for submitting the assignment
+  */
+object StudentTasks extends AutoPlugin {
+
+  override def requires = super.requires && MOOCSettings
+
+  object autoImport {
+    val packageSourcesOnly = TaskKey[File]("packageSourcesOnly", "Package the sources of the project")
+    val packageBinWithoutResources = TaskKey[File]("packageBinWithoutResources", "Like packageBin, but without the resources")
+    val packageSubmissionZip = TaskKey[File]("packageSubmissionZip")
+    val packageSubmission = inputKey[Unit]("package solution as an archive file")
+
+    lazy val Grading = config("grading") extend(Runtime)
+  }
+
+
+  import autoImport._
+  import MOOCSettings.autoImport._
+
+  override lazy val projectSettings = Seq(
+    packageSubmissionSetting,
+    fork := true,
+    connectInput in run := true,
+    outputStrategy := Some(StdoutOutput),
+  ) ++
+    packageSubmissionZipSettings ++
+    inConfig(Grading)(Defaults.testSettings ++ Seq(
+      unmanagedJars += file("grading-tests.jar"),
+
+      definedTests := (definedTests in Test).value,
+      internalDependencyClasspath := (internalDependencyClasspath in Test).value
+    ))
+
+
+  /** **********************************************************
+    * SUBMITTING A SOLUTION TO COURSERA
+    */
+
+  val packageSubmissionZipSettings = Seq(
+    packageSubmissionZip := {
+      val submission = crossTarget.value / "submission.zip"
+      val sources = (packageSourcesOnly in Compile).value
+      val binaries = (packageBinWithoutResources in Compile).value
+      IO.zip(Seq(sources -> "sources.zip", binaries -> "binaries.jar"), submission, None)
+      submission
+    },
+    artifactClassifier in packageSourcesOnly := Some("sources"),
+    artifact in (Compile, packageBinWithoutResources) ~= (art => art.withName(art.name + "-without-resources"))
+  ) ++
+  inConfig(Compile)(
+    Defaults.packageTaskSettings(packageSourcesOnly, Defaults.sourceMappings) ++
+    Defaults.packageTaskSettings(packageBinWithoutResources, Def.task {
+      val relativePaths =
+        (unmanagedResources in Compile).value.flatMap(Path.relativeTo((unmanagedResourceDirectories in Compile).value)(_))
+      (mappings in (Compile, packageBin)).value.filterNot { case (_, path) => relativePaths.contains(path) }
+    })
+  )
+
+  val maxSubmitFileSize = {
+    val mb = 1024 * 1024
+    10 * mb
+  }
+
+  /** Check that the jar exists, isn't empty, isn't crazy big, and can be read
+    * If so, encode jar as base64 so we can send it to Coursera
+    */
+  def prepareJar(jar: File, s: TaskStreams): String = {
+    val errPrefix = "Error submitting assignment jar: "
+    val fileLength = jar.length()
+    if (!jar.exists()) {
+      s.log.error(errPrefix + "jar archive does not exist\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength == 0L) {
+      s.log.error(errPrefix + "jar archive is empty\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength > maxSubmitFileSize) {
+      s.log.error(errPrefix + "jar archive is too big. Allowed size: " +
+        maxSubmitFileSize + " bytes, found " + fileLength + " bytes.\n" +
+        jar.getAbsolutePath)
+      failSubmit()
+    } else {
+      val bytes = new Array[Byte](fileLength.toInt)
+      val sizeRead = try {
+        val is = new FileInputStream(jar)
+        val read = is.read(bytes)
+        is.close()
+        read
+      } catch {
+        case ex: IOException =>
+          s.log.error(errPrefix + "failed to read sources jar archive\n" + ex.toString)
+          failSubmit()
+      }
+      if (sizeRead != bytes.length) {
+        s.log.error(errPrefix + "failed to read the sources jar archive, size read: " + sizeRead)
+        failSubmit()
+      } else encodeBase64(bytes)
+    }
+  }
+
+  /** Task to package solution to a given file path */
+  lazy val packageSubmissionSetting = packageSubmission := {
+    val args: Seq[String] = Def.spaceDelimited("[path]").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val base64Jar = prepareJar(jar, s)
+
+    val path = args.headOption.getOrElse((baseDirectory.value / "submission.jar").absolutePath)
+    scala.tools.nsc.io.File(path).writeAll(base64Jar)
+  }
+
+/*
+  /** Task to submit a solution to coursera */
+  val submit = inputKey[Unit]("submit solution to Coursera")
+  lazy val submitSetting = submit := {
+    // Fail if scalafix linting does not pass.
+    scalafixLinting.value
+
+    val args: Seq[String] = Def.spaceDelimited("<arg>").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val assignmentDetails =
+      courseraId.?.value.getOrElse(throw new MessageOnlyException("This assignment can not be submitted to Coursera because the `courseraId` setting is undefined"))
+    val assignmentKey = assignmentDetails.key
+    val courseName =
+      course.value match {
+        case "capstone" => "scala-capstone"
+        case "bigdata"  => "scala-spark-big-data"
+        case other      => other
+      }
+
+    val partId = assignmentDetails.partId
+    val itemId = assignmentDetails.itemId
+    val premiumItemId = assignmentDetails.premiumItemId
+
+    val (email, secret) = args match {
+      case email :: secret :: Nil =>
+        (email, secret)
+      case _ =>
+        val inputErr =
+          s"""|Invalid input to `submit`. The required syntax for `submit` is:
+              |submit <email-address> <submit-token>
+              |
+              |The submit token is NOT YOUR LOGIN PASSWORD.
+              |It can be obtained from the assignment page:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId
+              |${
+                premiumItemId.fold("") { id =>
+                  s"""or (for premium learners):
+                     |https://www.coursera.org/learn/$courseName/programming/$id
+                   """.stripMargin
+                }
+              }
+          """.stripMargin
+        s.log.error(inputErr)
+        failSubmit()
+    }
+
+    val base64Jar = prepareJar(jar, s)
+    val json =
+      s"""|{
+          |   "assignmentKey":"$assignmentKey",
+          |   "submitterEmail":"$email",
+          |   "secret":"$secret",
+          |   "parts":{
+          |      "$partId":{
+          |         "output":"$base64Jar"
+          |      }
+          |   }
+          |}""".stripMargin
+
+    def postSubmission[T](data: String): Try[HttpResponse[String]] = {
+      val http = Http("https://www.coursera.org/api/onDemandProgrammingScriptSubmissions.v1")
+      val hs = List(
+        ("Cache-Control", "no-cache"),
+        ("Content-Type", "application/json")
+      )
+      s.log.info("Connecting to Coursera...")
+      val response = Try(http.postData(data)
+                         .headers(hs)
+                         .option(HttpOptions.connTimeout(10000)) // scalaj default timeout is only 100ms, changing that to 10s
+                         .asString) // kick off HTTP POST
+      response
+    }
+
+    val connectMsg =
+      s"""|Attempting to submit "${assignment.value}" assignment in "$courseName" course
+          |Using:
+          |- email: $email
+          |- submit token: $secret""".stripMargin
+    s.log.info(connectMsg)
+
+    def reportCourseraResponse(response: HttpResponse[String]): Unit = {
+      val code = response.code
+      val respBody = response.body
+
+       /* Sample JSON response from Coursera
+      {
+        "message": "Invalid email or token.",
+        "details": {
+          "learnerMessage": "Invalid email or token."
+        }
+      }
+      */
+
+      // Success, Coursera responds with 2xx HTTP status code
+      if (response.is2xx) {
+        val successfulSubmitMsg =
+          s"""|Successfully connected to Coursera. (Status $code)
+              |
+                |Assignment submitted successfully!
+              |
+                |You can see how you scored by going to:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId/
+              |${
+            premiumItemId.fold("") { id =>
+              s"""or (for premium learners):
+                 |https://www.coursera.org/learn/$courseName/programming/$id
+                       """.stripMargin
+            }
+          }
+              |and clicking on "My Submission".""".stripMargin
+        s.log.info(successfulSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 4xx HTTP status code (client-side failure)
+      else if (response.is4xx) {
+        val result = Try(Json.parse(respBody)).toOption
+        val learnerMsg = result match {
+          case Some(resp: JsObject) =>
+            (JsPath \ "details" \ "learnerMessage").read[String].reads(resp).get
+          case Some(x) => // shouldn't happen
+            "Could not parse Coursera's response:\n" + x
+          case None =>
+            "Could not parse Coursera's response:\n" + respBody
+        }
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |There was something wrong while attempting to submit.
+              |Coursera says:
+              |$learnerMsg (Status $code)""".stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 5xx HTTP status code (server-side failure)
+      else if (response.is5xx) {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera seems to be unavailable at the moment (Status $code)
+              |Check https://status.coursera.org/ and try again in a few minutes.
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera repsonds with an unexpected status code
+      else {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera replied with an unexpected code (Status $code)
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+    }
+
+    // kick it all off, actually make request
+    postSubmission(json) match {
+      case Success(resp) => reportCourseraResponse(resp)
+      case Failure(e) =>
+        val failedConnectMsg =
+          s"""|Connection to Coursera failed.
+              |There was something wrong while attempting to connect to Coursera.
+              |Check your internet connection.
+              |${e.toString}""".stripMargin
+        s.log.error(failedConnectMsg)
+    }
+
+   }
+*/
+
+  def failSubmit(): Nothing = {
+    sys.error("Submission failed")
+  }
+
+  /**
+    * *****************
+    * DEALING WITH JARS
+    */
+  def encodeBase64(bytes: Array[Byte]): String =
+    new String(Base64.encodeBase64(bytes))
+}
diff --git a/previous-exams/2021-midterm/m1/project/build.properties b/previous-exams/2021-midterm/m1/project/build.properties
new file mode 100644
index 0000000..0b2e09c
--- /dev/null
+++ b/previous-exams/2021-midterm/m1/project/build.properties
@@ -0,0 +1 @@
+sbt.version=1.4.7
diff --git a/previous-exams/2021-midterm/m1/project/buildSettings.sbt b/previous-exams/2021-midterm/m1/project/buildSettings.sbt
new file mode 100644
index 0000000..8fac702
--- /dev/null
+++ b/previous-exams/2021-midterm/m1/project/buildSettings.sbt
@@ -0,0 +1,5 @@
+// Used for Coursera submission (StudentPlugin)
+// libraryDependencies += "org.scalaj" %% "scalaj-http" % "2.4.2"
+// libraryDependencies += "com.typesafe.play" %% "play-json" % "2.7.4"
+// Used for Base64 (StudentPlugin)
+libraryDependencies += "commons-codec" % "commons-codec" % "1.10"
diff --git a/previous-exams/2021-midterm/m1/project/plugins.sbt b/previous-exams/2021-midterm/m1/project/plugins.sbt
new file mode 100644
index 0000000..021c019
--- /dev/null
+++ b/previous-exams/2021-midterm/m1/project/plugins.sbt
@@ -0,0 +1,2 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.5.3")
diff --git a/previous-exams/2021-midterm/m1/src/main/scala/m1/Lib.scala b/previous-exams/2021-midterm/m1/src/main/scala/m1/Lib.scala
new file mode 100644
index 0000000..37ce780
--- /dev/null
+++ b/previous-exams/2021-midterm/m1/src/main/scala/m1/Lib.scala
@@ -0,0 +1,60 @@
+package m1
+
+////////////////////////////////////////
+// NO NEED TO MODIFY THIS SOURCE FILE //
+////////////////////////////////////////
+
+trait Lib {
+
+  /** If an array has `n` elements and `n < THRESHOLD`, then it should be processed sequentially */
+  final val THRESHOLD: Int = 33
+
+  /** Compute the two values in parallel
+   *
+   *  Note: Most tests just compute those two sequentially to make any bug simpler to debug
+   */
+  def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2)
+
+  /** A limited array. It only contains the required operations for this exercise. */
+  trait Arr[T] {
+    /** Get the i-th element of the array (0-based) */
+    def apply(i: Int): T
+    /** Update the i-th element of the array with the given value (0-based) */
+    def update(i: Int, x: T): Unit
+    /** Number of elements in this array */
+    def length: Int
+    /** Create a copy of this array without the first element */
+    def tail: Arr[T]
+    /** Create a copy of this array by mapping all the elements with the given function */
+    def map[U](f: T => U): Arr[U]
+  }
+
+  object Arr {
+    /** Create an array with the given elements */
+    def apply[T](xs: T*): Arr[T] = {
+      val arr: Arr[T] = Arr.ofLength(xs.length)
+      for i <- 0 until xs.length do arr(i) = xs(i)
+      arr
+    }
+
+    /** Create an array with the given length. All elements are initialized to `null`. */
+    def ofLength[T](n: Int): Arr[T] =
+      newArrOfLength(n)
+
+  }
+
+  /** Create an array with the given length. All elements are initialized to `null`. */
+  def newArrOfLength[T](n: Int): Arr[T]
+
+  /** A fractional number representing `numerator/denominator` */
+  case class Frac(numerator: Int, denominator: Int) {
+    def toDouble: Double = numerator.toDouble / denominator
+  }
+
+  /** Tree result of an upsweep operation. Specialized for `Frac` results. */
+  trait TreeRes { val res: Frac }
+  /** Leaf result of an upsweep operation. Specialized for `Frac` results. */
+  case class Leaf(from: Int, to: Int, res: Frac) extends TreeRes
+  /** Tree node result of an upsweep operation. Specialized for `Frac` results. */
+  case class Node(left: TreeRes, res: Frac, right: TreeRes) extends TreeRes
+}
diff --git a/previous-exams/2021-midterm/m1/src/main/scala/m1/M1.scala b/previous-exams/2021-midterm/m1/src/main/scala/m1/M1.scala
new file mode 100644
index 0000000..fc53991
--- /dev/null
+++ b/previous-exams/2021-midterm/m1/src/main/scala/m1/M1.scala
@@ -0,0 +1,76 @@
+package m1
+
+
+trait M1 extends Lib {
+  // Functions and classes of Lib can be used in here
+
+  /** Compute the rolling average of array.
+   *
+   *  For an array `arr = Arr(x1, x2, x3, ..., xn)` the result is
+   *  `Arr(x1 / 1, (x1 + x2) / 2, (x1 + x2 + x3) / 3, ..., (x1 + x2 + x3 + ... + xn) / n)`
+   */
+  def rollingAveragesParallel(arr: Arr[Int]): Arr[Double] = {
+    if (arr.length == 0) return Arr.ofLength(0)
+
+    val out: Arr[Double] = Arr.ofLength(arr.length)
+    val tree = upsweep(arr, 0, arr.length)
+    downsweep(arr, Frac(0, 0), tree, out)
+    out
+  }
+
+  // No need to modify this
+  def scanOp(acc: Frac, x: Frac) =
+    Frac(acc.numerator + x.numerator, acc.denominator + x.denominator)
+
+
+  def upsweep(input: Arr[Int], from: Int, to: Int): TreeRes = {
+    if (to - from < THRESHOLD)
+      Leaf(from, to, reduceSequential(input, from + 1, to, Frac(input(from), 1)))
+    else {
+      val mid = from + (to - from)/2
+      val (tL, tR) = parallel(
+        upsweep(input, from, mid),
+        upsweep(input, mid, to)
+      )
+      Node(tL, scanOp(tL.res, tR.res), tR)
+    }
+  }
+
+
+  def downsweep(input: Arr[Int], a0: Frac, tree: TreeRes, output: Arr[Double]): Unit = {
+    tree match {
+      case Node(left, _, right) =>
+        parallel(
+          downsweep(input, a0, left, output),
+          downsweep(input, scanOp(a0, left.res), right, output)
+        )
+      case Leaf(from, to, _) =>
+        downsweepSequential(input, from, to, a0, output)
+    }
+  }
+
+
+  def downsweepSequential(input: Arr[Int], from: Int, to: Int, a0: Frac, output: Arr[Double]): Unit = {
+    if (from < to) {
+      var i = from
+      var a = a0
+      while (i < to) {
+        a = scanOp(a, Frac(input(i), 1))
+        output(i) = a.toDouble
+        i = i + 1
+      }
+    }
+  }
+
+
+  def reduceSequential(input: Arr[Int], from: Int, to: Int, a0: Frac): Frac = {
+    var a = a0
+    var i = from
+    while (i < to) {
+      a = scanOp(a, Frac(input(i), 1))
+      i = i + 1
+    }
+    a
+  }
+
+}
diff --git a/previous-exams/2021-midterm/m1/src/test/scala/m1/M1Suite.scala b/previous-exams/2021-midterm/m1/src/test/scala/m1/M1Suite.scala
new file mode 100644
index 0000000..ab1b865
--- /dev/null
+++ b/previous-exams/2021-midterm/m1/src/test/scala/m1/M1Suite.scala
@@ -0,0 +1,156 @@
+package m1
+
+class M1Suite extends munit.FunSuite {
+
+  test("Rolling average result test (5pts)") {
+    RollingAveragesBasicLogicTest.basicTests()
+    RollingAveragesBasicLogicTest.normalTests()
+    RollingAveragesBasicLogicTest.largeTests()
+  }
+
+  test("[TASK 1] Rolling average parallelism test (30pts)") {
+    RollingAveragesCallsToParallel.parallelismTest()
+    RollingAveragesParallel.basicTests()
+    RollingAveragesParallel.normalTests()
+    RollingAveragesParallel.largeTests()
+  }
+
+  test("[TASK 2] Rolling average no `map` test (35pts)") {
+    RollingAveragesNoMap.basicTests()
+    RollingAveragesNoMap.normalTests()
+    RollingAveragesNoMap.largeTests()
+  }
+
+  test("[TASK 3] Rolling average no `tail` test (30pts)") {
+    RollingAveragesNoTail.basicTests()
+    RollingAveragesNoTail.normalTests()
+    RollingAveragesNoTail.largeTests()
+  }
+
+
+  object RollingAveragesBasicLogicTest extends M1 with LibImpl with RollingAveragesTest {
+    def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2) = (op1, op2)
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T] = new ArrImpl(arr)
+  }
+
+  object RollingAveragesCallsToParallel extends M1 with LibImpl with RollingAveragesTest {
+    private var count = 0
+    def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2) =
+      count += 1
+      (op1, op2)
+
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T] = new ArrImpl(arr)
+
+    def parallelismTest() = {
+      assertParallelCount(Arr(), 0)
+      assertParallelCount(Arr(1), 0)
+      assertParallelCount(Arr(1, 2, 3, 4), 0)
+      assertParallelCount(Arr(Array.tabulate(16)(identity): _*), 0)
+      assertParallelCount(Arr(Array.tabulate(32)(identity): _*), 0)
+
+      assertParallelCount(Arr(Array.tabulate(33)(identity): _*), 2)
+      assertParallelCount(Arr(Array.tabulate(64)(identity): _*), 2)
+      assertParallelCount(Arr(Array.tabulate(128)(identity): _*), 6)
+      assertParallelCount(Arr(Array.tabulate(256)(identity): _*), 14)
+      assertParallelCount(Arr(Array.tabulate(1000)(identity): _*), 62)
+      assertParallelCount(Arr(Array.tabulate(1024)(identity): _*), 62)
+    }
+
+    def assertParallelCount(arr: Arr[Int], expected: Int): Unit = {
+      try {
+        count = 0
+        rollingAveragesParallel(arr)
+        assert(count == expected, {
+          val extra = if (expected == 0) "" else s" ${expected/2} for the `upsweep` and ${expected/2} for the `downsweep`"
+          s"\n$arr\n\nERROR: Expected $expected instead of $count calls to `parallel(...)` for an array of ${arr.length} elements. Current parallel threshold is $THRESHOLD.$extra"
+        })
+      } finally {
+        count = 0
+      }
+    }
+
+  }
+
+  object RollingAveragesNoMap extends M1 with LibImpl with RollingAveragesTest {
+    def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2) = (op1, op2)
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T] = new ArrImpl[T](arr) {
+      override def map[U](f: T => U): Arr[U] = throw Exception("Should not call Arr.map")
+    }
+  }
+
+  object RollingAveragesNoTail extends M1 with LibImpl with RollingAveragesTest {
+    def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2) = (op1, op2)
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T] = new ArrImpl[T](arr) {
+      override def tail: Arr[T] = throw Exception("Should not call Arr.tail")
+    }
+  }
+
+  object RollingAveragesParallel extends M1 with LibImpl with RollingAveragesTest {
+    import scala.concurrent.duration._
+    val TIMEOUT = Duration(10, SECONDS)
+    def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2) = {
+      import concurrent.ExecutionContext.Implicits.global
+      import scala.concurrent._
+      Await.result(Future(op1).zip(Future(op2)), TIMEOUT) // FIXME not timing-out
+    }
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T] = new ArrImpl(arr)
+  }
+
+  trait LibImpl extends Lib {
+
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T]
+
+    def newArrOfLength[T](n: Int): Arr[T] =
+      newArrFrom(new Array(n))
+
+    class ArrImpl[T](val arr: Array[AnyRef]) extends Arr[T]:
+      def apply(i: Int): T =
+        arr(i).asInstanceOf[T]
+      def update(i: Int, x: T): Unit =
+        arr(i) = x.asInstanceOf[AnyRef]
+      def length: Int =
+        arr.length
+      def map[U](f: T => U): Arr[U] =
+        newArrFrom(arr.map(f.asInstanceOf[AnyRef => AnyRef]))
+      def tail: Arr[T] =
+        newArrFrom(arr.tail)
+      override def toString: String =
+        arr.mkString("Arr(", ", ", ")")
+      override def equals(that: Any): Boolean =
+        that match
+          case that: ArrImpl[_] => Array.equals(arr, that.arr)
+          case _ => false
+  }
+
+  trait RollingAveragesTest extends M1 {
+
+    def tabulate[T](n: Int)(f: Int => T): Arr[T] =
+      val arr = Arr.ofLength[T](n)
+      for i <- 0 until n do
+        arr(i) = f(i)
+      arr
+
+    def basicTests() = {
+      assertEquals(rollingAveragesParallel(Arr()), Arr[Double]())
+      assertEquals(rollingAveragesParallel(Arr(1)), Arr[Double](1))
+      assertEquals(rollingAveragesParallel(Arr(1, 2, 3, 4)), Arr(1, 1.5, 2, 2.5))
+      assertEquals(rollingAveragesParallel(Arr(4, 4, 4, 4)), Arr[Double](4, 4, 4, 4))
+    }
+
+    def normalTests() = {
+      assertEquals(rollingAveragesParallel(Arr(Array.tabulate(64)(identity): _*)), Arr(Array.tabulate(64)(_.toDouble / 2): _*))
+      assertEquals(rollingAveragesParallel(Arr(4, 4, 4, 4)), Arr[Double](4, 4, 4, 4))
+      assertEquals(rollingAveragesParallel(Arr(4, 8, 6, 4)), Arr[Double](4, 6, 6, 5.5))
+      assertEquals(rollingAveragesParallel(Arr(4, 3, 2, 1)), Arr(4, 3.5, 3, 2.5))
+      assertEquals(rollingAveragesParallel(Arr(Array.tabulate(64)(identity).reverse: _*)), Arr(Array.tabulate(64)(i => 63 - i.toDouble / 2): _*))
+      assertEquals(rollingAveragesParallel(Arr(Array.tabulate(128)(i => 128 - 2*i).reverse: _*)), Arr(Array.tabulate(128)(i => -126d + i): _*))
+    }
+
+    def largeTests() = {
+      assertEquals(rollingAveragesParallel(Arr(Array.tabulate(500)(identity): _*)), Arr(Array.tabulate(500)(_.toDouble / 2): _*))
+      assertEquals(rollingAveragesParallel(Arr(Array.tabulate(512)(identity): _*)), Arr(Array.tabulate(512)(_.toDouble / 2): _*))
+      assertEquals(rollingAveragesParallel(Arr(Array.tabulate(1_000)(identity): _*)), Arr(Array.tabulate(1_000)(_.toDouble / 2): _*))
+      assertEquals(rollingAveragesParallel(Arr(Array.tabulate(10_000)(identity): _*)), Arr(Array.tabulate(10_000)(_.toDouble / 2): _*))
+    }
+  }
+}
\ No newline at end of file
diff --git a/previous-exams/2021-midterm/m14.md b/previous-exams/2021-midterm/m14.md
new file mode 100644
index 0000000..62f775d
--- /dev/null
+++ b/previous-exams/2021-midterm/m14.md
@@ -0,0 +1,42 @@
+Use the following commands to make a fresh clone of your repository:
+
+```
+git clone -b m14 git@gitlab.epfl.ch:lamp/student-repositories-s21/cs206-GASPAR.git m14
+```
+
+## Useful links
+
+  * [A guide to the Scala parallel collections](https://docs.scala-lang.org/overviews/parallel-collections/overview.html)
+  * [The API documentation of the Scala parallel collections](https://www.javadoc.io/doc/org.scala-lang.modules/scala-parallel-collections_2.13/latest/scala/collection/index.html)
+  * [The API documentation of the Scala standard library](https://www.scala-lang.org/files/archive/api/2.13.4)
+  * [The API documentation of the Java standard library](https://docs.oracle.com/en/java/javase/15/docs/api/index.html)
+
+**If you have issues with the IDE, try [reimporting the
+build](https://gitlab.epfl.ch/lamp/cs206/-/blob/master/labs/example-lab.md#ide-features-like-type-on-hover-or-go-to-definition-do-not-work),
+if you still have problems, use `compile` in sbt instead.**
+
+## Exercise
+
+In this question, you will implement a simple thread pool executor.
+Thread pool executors provide a way to execute tasks in parallel using one of several pooled threads.
+Using a pool of threads provides improved performance compared to creating a new thread for every operation since threads in the pool are reused throughout the executor's lifetime.
+
+Thread pool executors are one of the core primitive used to implement parallel programs. For example, they are the underlying mechanism used in the implementation of `Future`-s.
+
+Your task is to complete the implementation of the `ThreadPoolExecutor` class. This class' constructor takes the number of threads of the pool as argument and exposes two life-cycle methods (`start` and `shutdown`), and an `execute` method to run tasks on the thread pool. The `execute` method takes as argument `Unit => Unit` functions. These functions can be constructed anonymously using the following syntax: `val func = (x: Unit) => println("hello")`. Furthermore, given a `func` function of type `Unit => Unit`, one can invoke that function using `func(())`.
+For the purpose of this exercise, you can assume that the tasks submitted to the thread pool via the `execute` method do not throw exceptions.
+
+The thread pool implementation uses two additional classes:
+- `BlockingQueue`, used by the `ThreadPoolExecutor` to store pending tasks,
+- `Worker`-s, which each run in a separate thread, consume tasks from the queue and execute those tasks.
+
+The `BlockingQueue` implements two methods:
+- `put` to insert an element in the queue
+- `take` to retrieve and remove an element from the queue, in a last in first out order.
+
+The `put` operation always succeeds and is non-blocking (the queue is unbounded).
+The `take` operation is a potentially blocking operation that waits for new elements when called on an empty queue.
+
+Given that `Worker`-s run on separate threads, the `take` operation must be thread-safe. Furthermore, since the thread pool executor could also be used from multiple threads, the `put` operation should also be thread-safe.
+Your implementation should use a single lock to achieve this thread safety, specifically using the `[wait](http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#wait())`/`[notify](http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#notify())`/`[notifyAll](http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#notifyAll())`/`synchronized` primitives.
+Remember that `wait`, `notify` and `notifyAll` should only be invoked inside a synchronized block.
diff --git a/previous-exams/2021-midterm/m14/.gitignore b/previous-exams/2021-midterm/m14/.gitignore
new file mode 100644
index 0000000..40937dc
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/.gitignore
@@ -0,0 +1,22 @@
+# General
+*.DS_Store
+*.swp
+*~
+
+# Dotty
+*.class
+*.tasty
+*.hasTasty
+
+# sbt
+target/
+
+# IDE
+.bsp
+.bloop
+.metals
+.vscode
+
+# datasets
+stackoverflow-grading.csv
+wikipedia-grading.dat
diff --git a/previous-exams/2021-midterm/m14/assignment.sbt b/previous-exams/2021-midterm/m14/assignment.sbt
new file mode 100644
index 0000000..da7eb3c
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/assignment.sbt
@@ -0,0 +1,2 @@
+// Student tasks (i.e. submit, packageSubmission)
+enablePlugins(StudentTasks)
diff --git a/previous-exams/2021-midterm/m14/build.sbt b/previous-exams/2021-midterm/m14/build.sbt
new file mode 100644
index 0000000..aeee575
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/build.sbt
@@ -0,0 +1,12 @@
+course := "midterm"
+assignment := "m14"
+scalaVersion := "3.0.0-RC1"
+scalacOptions ++= Seq("-language:implicitConversions", "-deprecation")
+
+libraryDependencies += "org.scalameta" %% "munit" % "0.7.22"
+
+val MUnitFramework = new TestFramework("munit.Framework")
+testFrameworks += MUnitFramework
+// Decode Scala names
+testOptions += Tests.Argument(MUnitFramework, "-s")
+testSuite := "m14.M14Suite"
diff --git a/previous-exams/2021-midterm/m14/grading-tests.jar b/previous-exams/2021-midterm/m14/grading-tests.jar
new file mode 100644
index 0000000000000000000000000000000000000000..ff7d9e97309ad2d12b3694244f6870f5603f0dbc
GIT binary patch
literal 119786
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
YpOp=i6dV~G8P<z2FsSZjWME(b0Ga(<mH+?%

literal 0
HcmV?d00001

diff --git a/previous-exams/2021-midterm/m14/project/FilteringReporterPlugin.scala b/previous-exams/2021-midterm/m14/project/FilteringReporterPlugin.scala
new file mode 100644
index 0000000..2e4fd9a
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/project/FilteringReporterPlugin.scala
@@ -0,0 +1,31 @@
+package sbt // To access the private[sbt] compilerReporter key
+package filteringReporterPlugin
+
+import Keys._
+import ch.epfl.lamp._
+
+object FilteringReporterPlugin extends AutoPlugin {
+  override lazy val projectSettings = Seq(
+    // Turn off warning coming from scalameter that we cannot fix without changing scalameter
+    compilerReporter in (Compile, compile) ~= { reporter => new FilteringReporter(reporter) }
+  )
+}
+
+class FilteringReporter(reporter: xsbti.Reporter) extends xsbti.Reporter {
+
+  def reset(): Unit = reporter.reset()
+  def hasErrors: Boolean = reporter.hasErrors
+  def hasWarnings: Boolean = reporter.hasWarnings
+  def printSummary(): Unit = reporter.printSummary()
+  def problems: Array[xsbti.Problem] = reporter.problems
+
+  def log(problem: xsbti.Problem): Unit = {
+    if (!problem.message.contains("An existential type that came from a Scala-2 classfile cannot be"))
+      reporter.log(problem)
+  }
+
+  def comment(pos: xsbti.Position, msg: String): Unit =
+    reporter.comment(pos, msg)
+
+  override def toString = s"CollectingReporter($reporter)"
+}
diff --git a/previous-exams/2021-midterm/m14/project/MOOCSettings.scala b/previous-exams/2021-midterm/m14/project/MOOCSettings.scala
new file mode 100644
index 0000000..1c40443
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/project/MOOCSettings.scala
@@ -0,0 +1,49 @@
+package ch.epfl.lamp
+
+import sbt._
+import sbt.Keys._
+
+/**
+ * Coursera uses two versions of each assignment. They both have the same assignment key and part id but have
+ * different item ids.
+ *
+ * @param key Assignment key
+ * @param partId Assignment partId
+ * @param itemId Item id of the non premium version
+ * @param premiumItemId Item id of the premium version (`None` if the assignment is optional)
+ */
+case class CourseraId(key: String, partId: String, itemId: String, premiumItemId: Option[String])
+
+/**
+  * Settings shared by all assignments, reused in various tasks.
+  */
+object MOOCSettings extends AutoPlugin {
+
+  override def requires = super.requires && filteringReporterPlugin.FilteringReporterPlugin
+
+  object autoImport {
+    val course = SettingKey[String]("course")
+    val assignment = SettingKey[String]("assignment")
+    val options = SettingKey[Map[String, Map[String, String]]]("options")
+    val courseraId = settingKey[CourseraId]("Coursera-specific information identifying the assignment")
+    val testSuite = settingKey[String]("Fully qualified name of the test suite of this assignment")
+      .withRank(KeyRanks.Invisible)
+    // Convenient alias
+    type CourseraId = ch.epfl.lamp.CourseraId
+    val CourseraId = ch.epfl.lamp.CourseraId
+  }
+
+  import autoImport._
+
+  override val globalSettings: Seq[Def.Setting[_]] = Seq(
+    // supershell is verbose, buggy and useless.
+    useSuperShell := false
+  )
+
+  override val projectSettings: Seq[Def.Setting[_]] = Seq(
+    parallelExecution in Test := false,
+    // Report test result after each test instead of waiting for every test to finish
+    logBuffered in Test := false,
+    name := s"${course.value}-${assignment.value}"
+  )
+}
diff --git a/previous-exams/2021-midterm/m14/project/StudentTasks.scala b/previous-exams/2021-midterm/m14/project/StudentTasks.scala
new file mode 100644
index 0000000..c4669af
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/project/StudentTasks.scala
@@ -0,0 +1,303 @@
+package ch.epfl.lamp
+
+import sbt._
+import Keys._
+
+// import scalaj.http._
+import java.io.{File, FileInputStream, IOException}
+import org.apache.commons.codec.binary.Base64
+// import play.api.libs.json.{Json, JsObject, JsPath}
+import scala.util.{Failure, Success, Try}
+
+/**
+  * Provides tasks for submitting the assignment
+  */
+object StudentTasks extends AutoPlugin {
+
+  override def requires = super.requires && MOOCSettings
+
+  object autoImport {
+    val packageSourcesOnly = TaskKey[File]("packageSourcesOnly", "Package the sources of the project")
+    val packageBinWithoutResources = TaskKey[File]("packageBinWithoutResources", "Like packageBin, but without the resources")
+    val packageSubmissionZip = TaskKey[File]("packageSubmissionZip")
+    val packageSubmission = inputKey[Unit]("package solution as an archive file")
+
+    lazy val Grading = config("grading") extend(Runtime)
+  }
+
+
+  import autoImport._
+  import MOOCSettings.autoImport._
+
+  override lazy val projectSettings = Seq(
+    packageSubmissionSetting,
+    fork := true,
+    connectInput in run := true,
+    outputStrategy := Some(StdoutOutput),
+  ) ++
+    packageSubmissionZipSettings ++
+    inConfig(Grading)(Defaults.testSettings ++ Seq(
+      unmanagedJars += file("grading-tests.jar"),
+
+      definedTests := (definedTests in Test).value,
+      internalDependencyClasspath := (internalDependencyClasspath in Test).value
+    ))
+
+
+  /** **********************************************************
+    * SUBMITTING A SOLUTION TO COURSERA
+    */
+
+  val packageSubmissionZipSettings = Seq(
+    packageSubmissionZip := {
+      val submission = crossTarget.value / "submission.zip"
+      val sources = (packageSourcesOnly in Compile).value
+      val binaries = (packageBinWithoutResources in Compile).value
+      IO.zip(Seq(sources -> "sources.zip", binaries -> "binaries.jar"), submission, None)
+      submission
+    },
+    artifactClassifier in packageSourcesOnly := Some("sources"),
+    artifact in (Compile, packageBinWithoutResources) ~= (art => art.withName(art.name + "-without-resources"))
+  ) ++
+  inConfig(Compile)(
+    Defaults.packageTaskSettings(packageSourcesOnly, Defaults.sourceMappings) ++
+    Defaults.packageTaskSettings(packageBinWithoutResources, Def.task {
+      val relativePaths =
+        (unmanagedResources in Compile).value.flatMap(Path.relativeTo((unmanagedResourceDirectories in Compile).value)(_))
+      (mappings in (Compile, packageBin)).value.filterNot { case (_, path) => relativePaths.contains(path) }
+    })
+  )
+
+  val maxSubmitFileSize = {
+    val mb = 1024 * 1024
+    10 * mb
+  }
+
+  /** Check that the jar exists, isn't empty, isn't crazy big, and can be read
+    * If so, encode jar as base64 so we can send it to Coursera
+    */
+  def prepareJar(jar: File, s: TaskStreams): String = {
+    val errPrefix = "Error submitting assignment jar: "
+    val fileLength = jar.length()
+    if (!jar.exists()) {
+      s.log.error(errPrefix + "jar archive does not exist\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength == 0L) {
+      s.log.error(errPrefix + "jar archive is empty\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength > maxSubmitFileSize) {
+      s.log.error(errPrefix + "jar archive is too big. Allowed size: " +
+        maxSubmitFileSize + " bytes, found " + fileLength + " bytes.\n" +
+        jar.getAbsolutePath)
+      failSubmit()
+    } else {
+      val bytes = new Array[Byte](fileLength.toInt)
+      val sizeRead = try {
+        val is = new FileInputStream(jar)
+        val read = is.read(bytes)
+        is.close()
+        read
+      } catch {
+        case ex: IOException =>
+          s.log.error(errPrefix + "failed to read sources jar archive\n" + ex.toString)
+          failSubmit()
+      }
+      if (sizeRead != bytes.length) {
+        s.log.error(errPrefix + "failed to read the sources jar archive, size read: " + sizeRead)
+        failSubmit()
+      } else encodeBase64(bytes)
+    }
+  }
+
+  /** Task to package solution to a given file path */
+  lazy val packageSubmissionSetting = packageSubmission := {
+    val args: Seq[String] = Def.spaceDelimited("[path]").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val base64Jar = prepareJar(jar, s)
+
+    val path = args.headOption.getOrElse((baseDirectory.value / "submission.jar").absolutePath)
+    scala.tools.nsc.io.File(path).writeAll(base64Jar)
+  }
+
+/*
+  /** Task to submit a solution to coursera */
+  val submit = inputKey[Unit]("submit solution to Coursera")
+  lazy val submitSetting = submit := {
+    // Fail if scalafix linting does not pass.
+    scalafixLinting.value
+
+    val args: Seq[String] = Def.spaceDelimited("<arg>").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val assignmentDetails =
+      courseraId.?.value.getOrElse(throw new MessageOnlyException("This assignment can not be submitted to Coursera because the `courseraId` setting is undefined"))
+    val assignmentKey = assignmentDetails.key
+    val courseName =
+      course.value match {
+        case "capstone" => "scala-capstone"
+        case "bigdata"  => "scala-spark-big-data"
+        case other      => other
+      }
+
+    val partId = assignmentDetails.partId
+    val itemId = assignmentDetails.itemId
+    val premiumItemId = assignmentDetails.premiumItemId
+
+    val (email, secret) = args match {
+      case email :: secret :: Nil =>
+        (email, secret)
+      case _ =>
+        val inputErr =
+          s"""|Invalid input to `submit`. The required syntax for `submit` is:
+              |submit <email-address> <submit-token>
+              |
+              |The submit token is NOT YOUR LOGIN PASSWORD.
+              |It can be obtained from the assignment page:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId
+              |${
+                premiumItemId.fold("") { id =>
+                  s"""or (for premium learners):
+                     |https://www.coursera.org/learn/$courseName/programming/$id
+                   """.stripMargin
+                }
+              }
+          """.stripMargin
+        s.log.error(inputErr)
+        failSubmit()
+    }
+
+    val base64Jar = prepareJar(jar, s)
+    val json =
+      s"""|{
+          |   "assignmentKey":"$assignmentKey",
+          |   "submitterEmail":"$email",
+          |   "secret":"$secret",
+          |   "parts":{
+          |      "$partId":{
+          |         "output":"$base64Jar"
+          |      }
+          |   }
+          |}""".stripMargin
+
+    def postSubmission[T](data: String): Try[HttpResponse[String]] = {
+      val http = Http("https://www.coursera.org/api/onDemandProgrammingScriptSubmissions.v1")
+      val hs = List(
+        ("Cache-Control", "no-cache"),
+        ("Content-Type", "application/json")
+      )
+      s.log.info("Connecting to Coursera...")
+      val response = Try(http.postData(data)
+                         .headers(hs)
+                         .option(HttpOptions.connTimeout(10000)) // scalaj default timeout is only 100ms, changing that to 10s
+                         .asString) // kick off HTTP POST
+      response
+    }
+
+    val connectMsg =
+      s"""|Attempting to submit "${assignment.value}" assignment in "$courseName" course
+          |Using:
+          |- email: $email
+          |- submit token: $secret""".stripMargin
+    s.log.info(connectMsg)
+
+    def reportCourseraResponse(response: HttpResponse[String]): Unit = {
+      val code = response.code
+      val respBody = response.body
+
+       /* Sample JSON response from Coursera
+      {
+        "message": "Invalid email or token.",
+        "details": {
+          "learnerMessage": "Invalid email or token."
+        }
+      }
+      */
+
+      // Success, Coursera responds with 2xx HTTP status code
+      if (response.is2xx) {
+        val successfulSubmitMsg =
+          s"""|Successfully connected to Coursera. (Status $code)
+              |
+                |Assignment submitted successfully!
+              |
+                |You can see how you scored by going to:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId/
+              |${
+            premiumItemId.fold("") { id =>
+              s"""or (for premium learners):
+                 |https://www.coursera.org/learn/$courseName/programming/$id
+                       """.stripMargin
+            }
+          }
+              |and clicking on "My Submission".""".stripMargin
+        s.log.info(successfulSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 4xx HTTP status code (client-side failure)
+      else if (response.is4xx) {
+        val result = Try(Json.parse(respBody)).toOption
+        val learnerMsg = result match {
+          case Some(resp: JsObject) =>
+            (JsPath \ "details" \ "learnerMessage").read[String].reads(resp).get
+          case Some(x) => // shouldn't happen
+            "Could not parse Coursera's response:\n" + x
+          case None =>
+            "Could not parse Coursera's response:\n" + respBody
+        }
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |There was something wrong while attempting to submit.
+              |Coursera says:
+              |$learnerMsg (Status $code)""".stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 5xx HTTP status code (server-side failure)
+      else if (response.is5xx) {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera seems to be unavailable at the moment (Status $code)
+              |Check https://status.coursera.org/ and try again in a few minutes.
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera repsonds with an unexpected status code
+      else {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera replied with an unexpected code (Status $code)
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+    }
+
+    // kick it all off, actually make request
+    postSubmission(json) match {
+      case Success(resp) => reportCourseraResponse(resp)
+      case Failure(e) =>
+        val failedConnectMsg =
+          s"""|Connection to Coursera failed.
+              |There was something wrong while attempting to connect to Coursera.
+              |Check your internet connection.
+              |${e.toString}""".stripMargin
+        s.log.error(failedConnectMsg)
+    }
+
+   }
+*/
+
+  def failSubmit(): Nothing = {
+    sys.error("Submission failed")
+  }
+
+  /**
+    * *****************
+    * DEALING WITH JARS
+    */
+  def encodeBase64(bytes: Array[Byte]): String =
+    new String(Base64.encodeBase64(bytes))
+}
diff --git a/previous-exams/2021-midterm/m14/project/build.properties b/previous-exams/2021-midterm/m14/project/build.properties
new file mode 100644
index 0000000..0b2e09c
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/project/build.properties
@@ -0,0 +1 @@
+sbt.version=1.4.7
diff --git a/previous-exams/2021-midterm/m14/project/buildSettings.sbt b/previous-exams/2021-midterm/m14/project/buildSettings.sbt
new file mode 100644
index 0000000..8fac702
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/project/buildSettings.sbt
@@ -0,0 +1,5 @@
+// Used for Coursera submission (StudentPlugin)
+// libraryDependencies += "org.scalaj" %% "scalaj-http" % "2.4.2"
+// libraryDependencies += "com.typesafe.play" %% "play-json" % "2.7.4"
+// Used for Base64 (StudentPlugin)
+libraryDependencies += "commons-codec" % "commons-codec" % "1.10"
diff --git a/previous-exams/2021-midterm/m14/project/plugins.sbt b/previous-exams/2021-midterm/m14/project/plugins.sbt
new file mode 100644
index 0000000..021c019
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/project/plugins.sbt
@@ -0,0 +1,2 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.5.3")
diff --git a/previous-exams/2021-midterm/m14/src/main/scala/m14/AbstractBlockingQueue.scala b/previous-exams/2021-midterm/m14/src/main/scala/m14/AbstractBlockingQueue.scala
new file mode 100644
index 0000000..a91a39c
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/src/main/scala/m14/AbstractBlockingQueue.scala
@@ -0,0 +1,14 @@
+package m14
+
+abstract class AbstractBlockingQueue[T] extends Monitor {
+  private var underlying: List[T] = Nil
+
+  def getUnderlying(): List[T] =
+    underlying
+
+  def setUnderlying(newValue: List[T]): Unit =
+    underlying = newValue
+
+  def put(elem: T): Unit
+  def take(): T
+}
diff --git a/previous-exams/2021-midterm/m14/src/main/scala/m14/AbstractThreadPoolExecutor.scala b/previous-exams/2021-midterm/m14/src/main/scala/m14/AbstractThreadPoolExecutor.scala
new file mode 100644
index 0000000..670294c
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/src/main/scala/m14/AbstractThreadPoolExecutor.scala
@@ -0,0 +1,7 @@
+package m14
+
+abstract class AbstractThreadPoolExecutor {
+  def execute(task: Unit => Unit): Unit
+  def start(): Unit
+  def shutdown(): Unit
+}
diff --git a/previous-exams/2021-midterm/m14/src/main/scala/m14/M14.scala b/previous-exams/2021-midterm/m14/src/main/scala/m14/M14.scala
new file mode 100644
index 0000000..82e2e4c
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/src/main/scala/m14/M14.scala
@@ -0,0 +1,80 @@
+package m14
+
+object M14 {
+  /** A thread pool that executes submitted task using one of several threads */
+  class ThreadPoolExecutor(taskQueue: BlockingQueue[Unit => Unit], poolSize: Int)
+      extends AbstractThreadPoolExecutor {
+
+    private class Worker extends Thread {
+      override def run(): Unit = {
+        try {
+          while (true) {
+
+            val task = taskQueue.take()
+            task(())
+          }
+        } catch {
+          case e: InterruptedException =>
+            // Nothing to do here, we are shutting down gracefully.
+        }
+      }
+    }
+    private val workers: List[Worker] = List.fill(poolSize)(new Worker())
+
+    /** Executes the given task, passed by name. */
+    def execute(task: Unit => Unit): Unit =
+
+      taskQueue.put(task)
+
+    /** Starts the thread pool. */
+    def start(): Unit =
+      workers.foreach(_.start())
+
+    /** Instantly shuts down all actively executing tasks using an interrupt. */
+    def shutdown(): Unit =
+      workers.foreach(_.interrupt())
+  }
+
+  /**
+   * A queue whose take operations blocks until the queue become non-empty.
+   * Elements must be retrived from this queue in a last in, first out order.
+   * All methods of this class are thread safe, that is, they can safely
+   * be used from multiple thread without any particular synchronization.
+   */
+  class BlockingQueue[T] extends AbstractBlockingQueue[T] {
+
+    // The state of this queue is stored in an underlying List[T] defined in
+    // the AbstractBlockingQueue class. Your implementation should access and
+    // update this list using the following setter and getter methods:
+    // - def getUnderlying(): List[T]
+    // - def setUnderlying(newValue: List[T]): Unit
+    // Using these methods is required for testing purposes.
+
+    /** Inserts the specified element into this queue (non-blocking) */
+    def put(elem: T): Unit =
+
+      this.synchronized {
+        val underlying = getUnderlying()
+        setUnderlying(elem :: underlying)
+        this.notifyAll()
+      }
+
+
+    /**
+     * Retrieves and removes the head of this queue, waiting if necessary
+     * This queue operates in a first in, first out order.
+     * until an element becomes available (blocking).
+     * This queue operates in a last in, first out order.
+     */
+    def take(): T =
+
+      this.synchronized {
+        while (getUnderlying().isEmpty)
+          this.wait()
+        val underlying = getUnderlying()
+        val head = underlying.head
+        setUnderlying(underlying.tail)
+        head
+      }
+  }
+}
diff --git a/previous-exams/2021-midterm/m14/src/main/scala/m14/Monitor.scala b/previous-exams/2021-midterm/m14/src/main/scala/m14/Monitor.scala
new file mode 100644
index 0000000..97dd73a
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/src/main/scala/m14/Monitor.scala
@@ -0,0 +1,23 @@
+package m14
+
+class Dummy
+
+trait Monitor {
+  implicit val dummy: Dummy = new Dummy
+
+  def wait()(implicit i: Dummy) = waitDefault()
+
+  def synchronized[T](e: => T)(implicit i: Dummy) = synchronizedDefault(e)
+
+  def notify()(implicit i: Dummy) = notifyDefault()
+
+  def notifyAll()(implicit i: Dummy) = notifyAllDefault()
+
+  private val lock = new AnyRef
+
+  // Can be overriden.
+  def waitDefault(): Unit = lock.wait()
+  def synchronizedDefault[T](toExecute: => T): T = lock.synchronized(toExecute)
+  def notifyDefault(): Unit = lock.notify()
+  def notifyAllDefault(): Unit = lock.notifyAll()
+}
diff --git a/previous-exams/2021-midterm/m14/src/test/scala/m14/M14Suite.scala b/previous-exams/2021-midterm/m14/src/test/scala/m14/M14Suite.scala
new file mode 100644
index 0000000..cd04f2a
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/src/test/scala/m14/M14Suite.scala
@@ -0,0 +1,159 @@
+package m14
+
+import instrumentation.SchedulableBlockingQueue
+import instrumentation.TestHelper._
+import instrumentation.TestUtils._
+
+class M14Suite extends munit.FunSuite {
+  import M14._
+
+  test("ThreadPool should put jobs in the queue, Workers should execute jobs from the queue (10pts)") {
+    case class PutE(e: Unit => Unit) extends Exception
+    val nThreads = 3
+    var taken = false
+    class TestBlockingQueue extends BlockingQueue[Unit => Unit] {
+      override def put(e: Unit => Unit): Unit =
+        throw new PutE(e)
+
+      override def take(): Unit => Unit =
+        x => {
+          taken = true
+          Thread.sleep(10 * 1000)
+        }
+    }
+
+    val tpe = new ThreadPoolExecutor(new TestBlockingQueue, nThreads)
+    val unit2unit: Unit => Unit = x => ()
+    try {
+      tpe.execute(unit2unit)
+      assert(false, "ThreadPoolExecutor does not put jobs in the queue")
+    } catch {
+      case PutE(e) =>
+        assert(e == unit2unit)
+    }
+    tpe.start()
+    Thread.sleep(1000)
+    assert(taken, s"ThreadPoolExecutor workers do no execute jobs from the queue")
+    tpe.shutdown()
+  }
+
+  test("BlockingQueue should work in a sequential setting (1pts)") {
+    testSequential[(Int, Int, Int, Int)]{ sched =>
+      val queue = new SchedulableBlockingQueue[Int](sched)
+      queue.put(1)
+      queue.put(2)
+      queue.put(3)
+      queue.put(4)
+      (queue.take(),
+      queue.take(),
+      queue.take(),
+      queue.take())
+    }{ tuple =>
+      (tuple == (4, 3, 2, 1), s"Expected (4, 3, 2, 1) got $tuple")
+    }
+  }
+
+  test("BlockingQueue should work when Thread 1: 'put(1)', Thread 2: 'take' (3pts)") {
+    testManySchedules(2, sched => {
+      val queue = new SchedulableBlockingQueue[Int](sched)
+      (List(() => queue.put(1), () => queue.take()),
+       args => (args(1) == 1, s"Expected 1, got ${args(1)}"))
+    })
+  }
+
+  test("BlockingQueue should not be able to take from an empty queue (3pts)") {
+    testSequential[Boolean]{ sched =>
+      val queue = new SchedulableBlockingQueue[Int](sched);
+      queue.put(1)
+      queue.put(2)
+      queue.take()
+      queue.take()
+      failsOrTimesOut(queue.take())
+    }{ res =>
+      (res, "Was able to retrieve an element from an empty queue")
+    }
+  }
+
+  test("BlockingQueue should work when Thread 1: 'put(1)', Thread 2: 'put(2)', Thread 3: 'take' (5pts)") {
+    testManySchedules(3, sched => {
+      val queue = new SchedulableBlockingQueue[Int](sched)
+      (List(() => queue.put(1), () => queue.put(2), () => queue.take())
+      , args => {
+        val takeRes = args(2).asInstanceOf[Int]
+        val nocreation = (takeRes == 1 || takeRes == 2)
+        if (!nocreation)
+          (false, s"'take' should return either 1 or 2")
+        else (true, "")
+      })
+    })
+  }
+
+  test("BlockingQueue should work when Thread 1: 'put(1)', Thread 2: 'put(2)', Thread 3: 'take', Thread 4: 'take' (10pts)") {
+    testManySchedules(4, sched => {
+      val queue = new SchedulableBlockingQueue[Int](sched)
+      (List(() => queue.put(1), () => queue.put(2), () => queue.take(), () => queue.take())
+      , args => {
+        def m(): (Boolean, String) = {
+          val takeRes1 = args(2).asInstanceOf[Int]
+          val takeRes2 = args(3).asInstanceOf[Int]
+          val nocreation = (x: Int) => List(1, 2).contains(x)
+          if (!nocreation(takeRes1))
+            return (false, s"'Thread 3: take' returned $takeRes1 but should return a value in {1, 2, 3}")
+          if (!nocreation(takeRes2))
+            return (false, s"'Thread 4: take' returned $takeRes2 but should return a value in {1, 2, 3}")
+
+          val noduplication = takeRes1 != takeRes2
+          if (!noduplication)
+            (false, s"'Thread 3 and 4' returned the same value: $takeRes1")
+          else (true, "")
+        }
+        m()
+      })
+    })
+  }
+
+  test("BlockingQueue should work when Thread 1: 'put(1)', Thread 2: 'put(2)', Thread 3: 'put(3)', Thread 4: 'take', Thread 5: 'take' (10pts)") {
+    testManySchedules(5, sched => {
+      val queue = new SchedulableBlockingQueue[Int](sched)
+      (List(() => queue.put(1), () => queue.put(2), () => queue.put(3),
+        () => queue.take(), () => queue.take())
+      , args => {
+        def m(): (Boolean, String) = {
+          val takeRes1 = args(3).asInstanceOf[Int]
+          val takeRes2 = args(4).asInstanceOf[Int]
+          val nocreation = (x: Int) => List(1, 2, 3).contains(x)
+          if (!nocreation(takeRes1))
+            return (false, s"'Thread 4: take' returned $takeRes1 but should return a value in {1, 2, 3}")
+          if (!nocreation(takeRes2))
+            return (false, s"'Thread 5: take' returned $takeRes2 but should return a value in {1, 2, 3}")
+
+          val noduplication = takeRes1 != takeRes2
+          if (!noduplication)
+            return (false, s"'Thread 4 and 5' returned the same value: $takeRes1")
+          else (true, "")
+        }
+        m()
+      })
+    })
+  }
+
+  test("BlockingQueue should work when Thread 1: 'put(1); put(2); take', Thread 2: 'put(3)', Thread 3: 'put(4)' (10pts)") {
+    testManySchedules(3, sched => {
+      val queue = new SchedulableBlockingQueue[Int](sched)
+      (List(
+        () => { queue.put(1); queue.put(2); queue.take() },
+        () => queue.put(3),
+        () => queue.put(4)
+      ), args => {
+        val takeRes = args(0).asInstanceOf[Int]
+        val nocreation = List(1, 2, 3, 4).contains
+        if (!nocreation(takeRes))
+          (false, s"'Thread 1: take' returned $takeRes, but should return a value in {1, 2, 3, 4}")
+        else if (takeRes == 1)
+          (false, s"'Thread 1' returned 2 before returning 1 (got $takeRes)")
+        else
+          (true, "")
+      })
+    })
+  }
+}
diff --git a/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/MockedMonitor.scala b/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/MockedMonitor.scala
new file mode 100644
index 0000000..64aa205
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/MockedMonitor.scala
@@ -0,0 +1,73 @@
+package m14
+package instrumentation
+
+trait MockedMonitor extends Monitor {
+  def scheduler: Scheduler
+
+  // Can be overriden.
+  override def waitDefault() = {
+    scheduler.log("wait")
+    scheduler updateThreadState Wait(this, scheduler.threadLocks.tail)
+  }
+  override def synchronizedDefault[T](toExecute: =>T): T = {
+    scheduler.log("synchronized check")
+    val prevLocks = scheduler.threadLocks
+    scheduler updateThreadState Sync(this, prevLocks) // If this belongs to prevLocks, should just continue.
+    scheduler.log("synchronized -> enter")
+    try {
+      toExecute
+    } finally {
+      scheduler updateThreadState Running(prevLocks)
+      scheduler.log("synchronized -> out")
+    }
+  }
+  override def notifyDefault() = {
+    scheduler mapOtherStates {
+      state => state match {
+        case Wait(lockToAquire, locks) if lockToAquire == this => SyncUnique(this, state.locks)
+        case e => e
+      }
+    }
+    scheduler.log("notify")
+  }
+  override def notifyAllDefault() = {
+    scheduler mapOtherStates {
+      state => state match {
+        case Wait(lockToAquire, locks) if lockToAquire == this => Sync(this, state.locks)
+        case SyncUnique(lockToAquire, locks) if lockToAquire == this => Sync(this, state.locks)
+        case e => e
+      }
+    }
+    scheduler.log("notifyAll")
+  }
+}
+
+trait LockFreeMonitor extends Monitor {
+  override def waitDefault() = {
+    throw new Exception("Please use lock-free structures and do not use wait()")
+  }
+  override def synchronizedDefault[T](toExecute: =>T): T = {
+    throw new Exception("Please use lock-free structures and do not use synchronized()")
+  }
+  override def notifyDefault() = {
+    throw new Exception("Please use lock-free structures and do not use notify()")
+  }
+  override def notifyAllDefault() = {
+    throw new Exception("Please use lock-free structures and do not use notifyAll()")
+  }
+}
+
+
+abstract class ThreadState {
+  def locks: Seq[AnyRef]
+}
+trait CanContinueIfAcquiresLock extends ThreadState {
+  def lockToAquire: AnyRef
+}
+case object Start extends ThreadState { def locks: Seq[AnyRef] = Seq.empty }
+case object End extends ThreadState { def locks: Seq[AnyRef] = Seq.empty }
+case class Wait(lockToAquire: AnyRef, locks: Seq[AnyRef]) extends ThreadState
+case class SyncUnique(lockToAquire: AnyRef, locks: Seq[AnyRef]) extends ThreadState with CanContinueIfAcquiresLock
+case class Sync(lockToAquire: AnyRef, locks: Seq[AnyRef]) extends ThreadState with CanContinueIfAcquiresLock
+case class Running(locks: Seq[AnyRef]) extends ThreadState
+case class VariableReadWrite(locks: Seq[AnyRef]) extends ThreadState
diff --git a/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/SchedulableBlockingQueue.scala b/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/SchedulableBlockingQueue.scala
new file mode 100644
index 0000000..16e68fa
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/SchedulableBlockingQueue.scala
@@ -0,0 +1,17 @@
+package m14
+package instrumentation
+
+class SchedulableBlockingQueue[T](val scheduler: Scheduler)
+  extends m14.M14.BlockingQueue[T] with MockedMonitor {
+    private var underlying: List[T] = Nil
+
+    override def getUnderlying(): List[T] =
+      scheduler.exec {
+        underlying
+      }(s"Get $underlying")
+
+    override def setUnderlying(newValue: List[T]): Unit =
+      scheduler.exec {
+        underlying = newValue
+      }(s"Set $newValue")
+}
diff --git a/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/Scheduler.scala b/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/Scheduler.scala
new file mode 100644
index 0000000..448a809
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/Scheduler.scala
@@ -0,0 +1,305 @@
+package m14
+package instrumentation
+
+import java.util.concurrent._;
+import scala.concurrent.duration._
+import scala.collection.mutable._
+import Stats._
+
+import java.util.concurrent.atomic.AtomicInteger
+
+sealed abstract class Result
+case class RetVal(rets: List[Any]) extends Result
+case class Except(msg: String, stackTrace: Array[StackTraceElement]) extends Result
+case class Timeout(msg: String) extends Result
+
+/**
+ * A class that maintains schedule and a set of thread ids.
+ * The schedules are advanced after an operation of a SchedulableBuffer is performed.
+ * Note: the real schedule that is executed may deviate from the input schedule
+ * due to the adjustments that had to be made for locks
+ */
+class Scheduler(sched: List[Int]) {
+  val maxOps = 500 // a limit on the maximum number of operations the code is allowed to perform
+
+  private var schedule = sched
+  private var numThreads = 0
+  private val realToFakeThreadId = Map[Long, Int]()
+  private val opLog = ListBuffer[String]() // a mutable list (used for efficient concat)
+  private val threadStates = Map[Int, ThreadState]()
+
+  /**
+   * Runs a set of operations in parallel as per the schedule.
+   * Each operation may consist of many primitive operations like reads or writes
+   * to shared data structure each of which should be executed using the function `exec`.
+   * @timeout in milliseconds
+   * @return true - all threads completed on time,  false -some tests timed out.
+   */
+  def runInParallel(timeout: Long, ops: List[() => Any]): Result = {
+    numThreads = ops.length
+    val threadRes = Array.fill(numThreads) { None: Any }
+    var exception: Option[Except] = None
+    val syncObject = new Object()
+    var completed = new AtomicInteger(0)
+    // create threads
+    val threads = ops.zipWithIndex.map {
+      case (op, i) =>
+        new Thread(new Runnable() {
+          def run(): Unit = {
+            val fakeId = i + 1
+            setThreadId(fakeId)
+            try {
+              updateThreadState(Start)
+              val res = op()
+              updateThreadState(End)
+              threadRes(i) = res
+              // notify the master thread if all threads have completed
+              if (completed.incrementAndGet() == ops.length) {
+                syncObject.synchronized { syncObject.notifyAll() }
+              }
+            } catch {
+              case e: Throwable if exception != None => // do nothing here and silently fail
+              case e: Throwable =>
+                log(s"throw ${e.toString}")
+                exception = Some(Except(s"Thread $fakeId crashed on the following schedule: \n" + opLog.mkString("\n"),
+                    e.getStackTrace))
+                syncObject.synchronized { syncObject.notifyAll() }
+              //println(s"$fakeId: ${e.toString}")
+              //Runtime.getRuntime().halt(0) //exit the JVM and all running threads (no other way to kill other threads)
+            }
+          }
+        })
+    }
+    // start all threads
+    threads.foreach(_.start())
+    // wait for all threads to complete, or for an exception to be thrown, or for the time out to expire
+    var remTime = timeout
+    syncObject.synchronized {
+      timed { if(completed.get() != ops.length) syncObject.wait(timeout) } { time => remTime -= time }
+    }
+    if (exception.isDefined) {
+      exception.get
+    } else if (remTime <= 1) { // timeout ? using 1 instead of zero to allow for some errors
+      Timeout(opLog.mkString("\n"))
+    } else {
+      // every thing executed normally
+      RetVal(threadRes.toList)
+    }
+  }
+
+  // Updates the state of the current thread
+  def updateThreadState(state: ThreadState): Unit = {
+    val tid = threadId
+    synchronized {
+      threadStates(tid) = state
+    }
+    state match {
+      case Sync(lockToAquire, locks) =>
+        if (locks.indexOf(lockToAquire) < 0) waitForTurn else {
+          // Re-aqcuiring the same lock
+          updateThreadState(Running(lockToAquire +: locks))
+        }
+      case Start      => waitStart()
+      case End        => removeFromSchedule(tid)
+      case Running(_) =>
+      case _          => waitForTurn // Wait, SyncUnique, VariableReadWrite
+    }
+  }
+
+  def waitStart(): Unit = {
+    //while (threadStates.size < numThreads) {
+    //Thread.sleep(1)
+    //}
+    synchronized {
+      if (threadStates.size < numThreads) {
+        wait()
+      } else {
+        notifyAll()
+      }
+    }
+  }
+
+  def threadLocks = {
+    synchronized {
+      threadStates(threadId).locks
+    }
+  }
+
+  def threadState = {
+    synchronized {
+      threadStates(threadId)
+    }
+  }
+
+  def mapOtherStates(f: ThreadState => ThreadState) = {
+    val exception = threadId
+    synchronized {
+      for (k <- threadStates.keys if k != exception) {
+        threadStates(k) = f(threadStates(k))
+      }
+    }
+  }
+
+  def log(str: String) = {
+    if((realToFakeThreadId contains Thread.currentThread().getId())) {
+      val space = (" " * ((threadId - 1) * 2))
+      val s = space + threadId + ":" + "\n".r.replaceAllIn(str, "\n" + space + "  ")
+      opLog += s
+    }
+  }
+
+  /**
+   * Executes a read or write operation to a global data structure as per the given schedule
+   * @param msg a message corresponding to the operation that will be logged
+   */
+  def exec[T](primop: => T)(msg: => String, postMsg: => Option[T => String] = None): T = {
+    if(! (realToFakeThreadId contains Thread.currentThread().getId())) {
+      primop
+    } else {
+      updateThreadState(VariableReadWrite(threadLocks))
+      val m = msg
+      if(m != "") log(m)
+      if (opLog.size > maxOps)
+        throw new Exception(s"Total number of reads/writes performed by threads exceed $maxOps. A possible deadlock!")
+      val res = primop
+      postMsg match {
+        case Some(m) => log(m(res))
+        case None =>
+      }
+      res
+    }
+  }
+
+  private def setThreadId(fakeId: Int) = synchronized {
+    realToFakeThreadId(Thread.currentThread.getId) = fakeId
+  }
+
+  def threadId =
+    try {
+      realToFakeThreadId(Thread.currentThread().getId())
+    } catch {
+    case e: NoSuchElementException =>
+      throw new Exception("You are accessing shared variables in the constructor. This is not allowed. The variables are already initialized!")
+    }
+
+  private def isTurn(tid: Int) = synchronized {
+    (!schedule.isEmpty && schedule.head != tid)
+  }
+
+  def canProceed(): Boolean = {
+    val tid = threadId
+    canContinue match {
+      case Some((i, state)) if i == tid =>
+        //println(s"$tid: Runs ! Was in state $state")
+        canContinue = None
+        state match {
+          case Sync(lockToAquire, locks) => updateThreadState(Running(lockToAquire +: locks))
+          case SyncUnique(lockToAquire, locks) =>
+            mapOtherStates {
+              _ match {
+                case SyncUnique(lockToAquire2, locks2) if lockToAquire2 == lockToAquire => Wait(lockToAquire2, locks2)
+                case e => e
+              }
+            }
+            updateThreadState(Running(lockToAquire +: locks))
+          case VariableReadWrite(locks) => updateThreadState(Running(locks))
+        }
+        true
+      case Some((i, state)) =>
+        //println(s"$tid: not my turn but $i !")
+        false
+      case None =>
+        false
+    }
+  }
+
+  var threadPreference = 0 // In the case the schedule is over, which thread should have the preference to execute.
+
+  /** returns true if the thread can continue to execute, and false otherwise */
+  def decide(): Option[(Int, ThreadState)] = {
+    if (!threadStates.isEmpty) { // The last thread who enters the decision loop takes the decision.
+      //println(s"$threadId: I'm taking a decision")
+      if (threadStates.values.forall { case e: Wait => true case _ => false }) {
+        val waiting = threadStates.keys.map(_.toString).mkString(", ")
+        val s = if (threadStates.size > 1) "s" else ""
+        val are = if (threadStates.size > 1) "are" else "is"
+        throw new Exception(s"Deadlock: Thread$s $waiting $are waiting but all others have ended and cannot notify them.")
+      } else {
+        // Threads can be in Wait, Sync, SyncUnique, and VariableReadWrite mode.
+        // Let's determine which ones can continue.
+        val notFree = threadStates.collect { case (id, state) => state.locks }.flatten.toSet
+        val threadsNotBlocked = threadStates.toSeq.filter {
+          case (id, v: VariableReadWrite)         => true
+          case (id, v: CanContinueIfAcquiresLock) => !notFree(v.lockToAquire) || (v.locks contains v.lockToAquire)
+          case _                                  => false
+        }
+        if (threadsNotBlocked.isEmpty) {
+          val waiting = threadStates.keys.map(_.toString).mkString(", ")
+          val s = if (threadStates.size > 1) "s" else ""
+          val are = if (threadStates.size > 1) "are" else "is"
+          val whoHasLock = threadStates.toSeq.flatMap { case (id, state) => state.locks.map(lock => (lock, id)) }.toMap
+          val reason = threadStates.collect {
+            case (id, state: CanContinueIfAcquiresLock) if !notFree(state.lockToAquire) =>
+              s"Thread $id is waiting on lock ${state.lockToAquire} held by thread ${whoHasLock(state.lockToAquire)}"
+          }.mkString("\n")
+          throw new Exception(s"Deadlock: Thread$s $waiting are interlocked. Indeed:\n$reason")
+        } else if (threadsNotBlocked.size == 1) { // Do not consume the schedule if only one thread can execute.
+          Some(threadsNotBlocked(0))
+        } else {
+          val next = schedule.indexWhere(t => threadsNotBlocked.exists { case (id, state) => id == t })
+          if (next != -1) {
+            //println(s"$threadId: schedule is $schedule, next chosen is ${schedule(next)}")
+            val chosenOne = schedule(next) // TODO: Make schedule a mutable list.
+            schedule = schedule.take(next) ++ schedule.drop(next + 1)
+            Some((chosenOne, threadStates(chosenOne)))
+          } else {
+            threadPreference = (threadPreference + 1) % threadsNotBlocked.size
+            val chosenOne = threadsNotBlocked(threadPreference) // Maybe another strategy
+            Some(chosenOne)
+            //threadsNotBlocked.indexOf(threadId) >= 0
+            /*
+            val tnb = threadsNotBlocked.map(_._1).mkString(",")
+            val s = if (schedule.isEmpty) "empty" else schedule.mkString(",")
+            val only = if (schedule.isEmpty) "" else " only"
+            throw new Exception(s"The schedule is $s but$only threads ${tnb} can continue")*/
+          }
+        }
+      }
+    } else canContinue
+  }
+
+  /**
+   * This will be called before a schedulable operation begins.
+   * This should not use synchronized
+   */
+  var numThreadsWaiting = new AtomicInteger(0)
+  //var waitingForDecision = Map[Int, Option[Int]]() // Mapping from thread ids to a number indicating who is going to make the choice.
+  var canContinue: Option[(Int, ThreadState)] = None // The result of the decision thread Id of the thread authorized to continue.
+  private def waitForTurn = {
+    synchronized {
+      if (numThreadsWaiting.incrementAndGet() == threadStates.size) {
+        canContinue = decide()
+        notifyAll()
+      }
+      //waitingForDecision(threadId) = Some(numThreadsWaiting)
+      //println(s"$threadId Entering waiting with ticket number $numThreadsWaiting/${waitingForDecision.size}")
+      while (!canProceed()) wait()
+    }
+    numThreadsWaiting.decrementAndGet()
+  }
+
+  /**
+   * To be invoked when a thread is about to complete
+   */
+  private def removeFromSchedule(fakeid: Int) = synchronized {
+    //println(s"$fakeid: I'm taking a decision because I finished")
+    schedule = schedule.filterNot(_ == fakeid)
+    threadStates -= fakeid
+    if (numThreadsWaiting.get() == threadStates.size) {
+      canContinue = decide()
+      notifyAll()
+    }
+  }
+
+  def getOperationLog() = opLog
+}
diff --git a/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/Stats.scala b/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/Stats.scala
new file mode 100644
index 0000000..bc1241c
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/Stats.scala
@@ -0,0 +1,23 @@
+package m14
+package instrumentation
+
+import java.lang.management._
+
+/**
+ * A collection of methods that can be used to collect run-time statistics about Leon programs.
+ * This is mostly used to test the resources properties of Leon programs
+ */
+object Stats {
+  def timed[T](code: => T)(cont: Long => Unit): T = {
+    var t1 = System.currentTimeMillis()
+    val r = code
+    cont((System.currentTimeMillis() - t1))
+    r
+  }
+
+  def withTime[T](code: => T): (T, Long) = {
+    var t1 = System.currentTimeMillis()
+    val r = code
+    (r, (System.currentTimeMillis() - t1))
+  }
+}
diff --git a/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/TestHelper.scala b/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/TestHelper.scala
new file mode 100644
index 0000000..faa3505
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/TestHelper.scala
@@ -0,0 +1,125 @@
+package m14
+package instrumentation
+
+import scala.util.Random
+import scala.collection.mutable.{Map => MutableMap}
+
+import Stats._
+
+object TestHelper {
+  val noOfSchedules = 10000 // set this to 100k during deployment
+  val readWritesPerThread = 20 // maximum number of read/writes possible in one thread
+  val contextSwitchBound = 10
+  val testTimeout = 240 // the total time out for a test in seconds
+  val schedTimeout = 15 // the total time out for execution of a schedule in secs
+
+  // Helpers
+  /*def testManySchedules(op1: => Any): Unit = testManySchedules(List(() => op1))
+  def testManySchedules(op1: => Any, op2: => Any): Unit = testManySchedules(List(() => op1, () => op2))
+  def testManySchedules(op1: => Any, op2: => Any, op3: => Any): Unit = testManySchedules(List(() => op1, () => op2, () => op3))
+  def testManySchedules(op1: => Any, op2: => Any, op3: => Any, op4: => Any): Unit = testManySchedules(List(() => op1, () => op2, () => op3, () => op4))*/
+
+  def testSequential[T](ops: Scheduler => Any)(assertions: T => (Boolean, String)) =
+    testManySchedules(1,
+      (sched: Scheduler) => {
+        (List(() => ops(sched)),
+         (res: List[Any]) => assertions(res.head.asInstanceOf[T]))
+      })
+
+  /**
+   * @numThreads number of threads
+   * @ops operations to be executed, one per thread
+   * @assertion as condition that will executed after all threads have completed (without exceptions)
+   * 					 the arguments are the results of the threads
+   */
+  def testManySchedules(numThreads: Int,
+      ops: Scheduler =>
+        (List[() => Any], // Threads
+         List[Any] => (Boolean, String)) // Assertion
+      ) = {
+    var timeout = testTimeout * 1000L
+    val threadIds = (1 to numThreads)
+    //(1 to scheduleLength).flatMap(_ => threadIds).toList.permutations.take(noOfSchedules).foreach {
+    val schedules = (new ScheduleGenerator(numThreads)).schedules()
+    var schedsExplored = 0
+    schedules.takeWhile(_ => schedsExplored <= noOfSchedules && timeout > 0).foreach {
+      //case _ if timeout <= 0 => // break
+      case schedule =>
+        schedsExplored += 1
+        val schedr = new Scheduler(schedule)
+        //println("Exploring Sched: "+schedule)
+        val (threadOps, assertion) = ops(schedr)
+        if (threadOps.size != numThreads)
+          throw new IllegalStateException(s"Number of threads: $numThreads, do not match operations of threads: $threadOps")
+        timed { schedr.runInParallel(schedTimeout * 1000, threadOps) } { t => timeout -= t } match {
+          case Timeout(msg) =>
+            throw new java.lang.AssertionError("assertion failed\n"+"The schedule took too long to complete. A possible deadlock! \n"+msg)
+          case Except(msg, stkTrace) =>
+            val traceStr = "Thread Stack trace: \n"+stkTrace.map(" at "+_.toString).mkString("\n")
+            throw new java.lang.AssertionError("assertion failed\n"+msg+"\n"+traceStr)
+          case RetVal(threadRes) =>
+            // check the assertion
+            val (success, custom_msg) = assertion(threadRes)
+            if (!success) {
+              val msg = "The following schedule resulted in wrong results: \n" + custom_msg + "\n" + schedr.getOperationLog().mkString("\n")
+              throw new java.lang.AssertionError("Assertion failed: "+msg)
+            }
+        }
+    }
+    if (timeout <= 0) {
+      throw new java.lang.AssertionError("Test took too long to complete! Cannot check all schedules as your code is too slow!")
+    }
+  }
+
+  /**
+   * A schedule generator that is based on the context bound
+   */
+  class ScheduleGenerator(numThreads: Int) {
+    val scheduleLength = readWritesPerThread * numThreads
+    val rands = (1 to scheduleLength).map(i => new Random(0xcafe * i)) // random numbers for choosing a thread at each position
+    def schedules(): LazyList[List[Int]] = {
+      var contextSwitches = 0
+      var contexts = List[Int]() // a stack of thread ids in the order of context-switches
+      val remainingOps = MutableMap[Int, Int]()
+      remainingOps ++= (1 to numThreads).map(i => (i, readWritesPerThread)) // num ops remaining in each thread
+      val liveThreads = (1 to numThreads).toSeq.toBuffer
+
+      /**
+       * Updates remainingOps and liveThreads once a thread is chosen for a position in the schedule
+       */
+      def updateState(tid: Int): Unit = {
+        val remOps = remainingOps(tid)
+        if (remOps == 0) {
+          liveThreads -= tid
+        } else {
+          remainingOps += (tid -> (remOps - 1))
+        }
+      }
+      val schedule = rands.foldLeft(List[Int]()) {
+        case (acc, r) if contextSwitches < contextSwitchBound =>
+          val tid = liveThreads(r.nextInt(liveThreads.size))
+          contexts match {
+            case prev :: tail if prev != tid => // we have a new context switch here
+              contexts +:= tid
+              contextSwitches += 1
+            case prev :: tail =>
+            case _ => // init case
+              contexts +:= tid
+          }
+          updateState(tid)
+          acc :+ tid
+        case (acc, _) => // here context-bound has been reached so complete the schedule without any more context switches
+          if (!contexts.isEmpty) {
+            contexts = contexts.dropWhile(remainingOps(_) == 0)
+          }
+          val tid = contexts match {
+            case top :: tail => top
+            case _ => liveThreads(0)  // here, there has to be threads that have not even started
+          }
+          updateState(tid)
+          acc :+ tid
+      }
+      schedule #:: schedules()
+    }
+  }
+}
diff --git a/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/TestUtils.scala b/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/TestUtils.scala
new file mode 100644
index 0000000..f980f99
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/src/test/scala/m14/instrumentation/TestUtils.scala
@@ -0,0 +1,20 @@
+package m14
+package instrumentation
+
+import scala.concurrent._
+import scala.concurrent.duration._
+import scala.concurrent.ExecutionContext.Implicits.global
+
+object TestUtils {
+  def failsOrTimesOut[T](action: => T): Boolean = {
+    val asyncAction = Future {
+      action
+    }
+    try {
+      Await.result(asyncAction, 2000.millisecond)
+    } catch {
+      case _: Throwable => return true
+    }
+    return false
+  }
+}
diff --git a/previous-exams/2021-midterm/m15.md b/previous-exams/2021-midterm/m15.md
new file mode 100644
index 0000000..781e05a
--- /dev/null
+++ b/previous-exams/2021-midterm/m15.md
@@ -0,0 +1,42 @@
+Use the following commands to make a fresh clone of your repository:
+
+```
+git clone -b m15 git@gitlab.epfl.ch:lamp/student-repositories-s21/cs206-GASPAR.git m15
+```
+
+## Useful links
+
+  * [A guide to the Scala parallel collections](https://docs.scala-lang.org/overviews/parallel-collections/overview.html)
+  * [The API documentation of the Scala parallel collections](https://www.javadoc.io/doc/org.scala-lang.modules/scala-parallel-collections_2.13/latest/scala/collection/index.html)
+  * [The API documentation of the Scala standard library](https://www.scala-lang.org/files/archive/api/2.13.4)
+  * [The API documentation of the Java standard library](https://docs.oracle.com/en/java/javase/15/docs/api/index.html)
+
+**If you have issues with the IDE, try [reimporting the
+build](https://gitlab.epfl.ch/lamp/cs206/-/blob/master/labs/example-lab.md#ide-features-like-type-on-hover-or-go-to-definition-do-not-work),
+if you still have problems, use `compile` in sbt instead.**
+
+## Exercise
+
+In this question, you will implement a simple thread pool executor.
+Thread pool executors provide a way to execute tasks in parallel using one of several pooled threads.
+Using a pool of threads provides improved performance compared to creating a new thread for every operation since threads in the pool are reused throughout the executor's lifetime.
+
+Thread pool executors are one of the core primitive used to implement parallel programs. For example, they are the underlying mechanism used in the implementation of `Future`-s.
+
+Your task is to complete the implementation of the `ThreadPoolExecutor` class. This class' constructor takes the number of threads of the pool as argument and exposes two life-cycle methods (`start` and `shutdown`), and an `execute` method to run tasks on the thread pool. The `execute` method takes as argument `Unit => Unit` functions. These functions can be constructed anonymously using the following syntax: `val func = (x: Unit) => println("hello")`. Furthermore, given a `func` function of type `Unit => Unit`, one can invoke that function using `func(())`.
+For the purpose of this exercise, you can assume that the tasks submitted to the thread pool via the `execute` method do not throw exceptions.
+
+The thread pool implementation uses two additional classes:
+- `BlockingQueue`, used by the `ThreadPoolExecutor` to store pending tasks,
+- `Worker`-s, which each run in a separate thread, consume tasks from the queue and execute those tasks.
+
+The `BlockingQueue` implements two methods:
+- `put` to insert an element in the queue
+- `take` to retrieve and remove an element from the queue, in a first in first out order.
+
+The `put` operation always succeeds and is non-blocking (the queue is unbounded).
+The `take` operation is a potentially blocking operation that waits for new elements when called on an empty queue.
+
+Given that `Worker`-s run on separate threads, the `take` operation must be thread-safe. Furthermore, since the thread pool executor could also be used from multiple threads, the `put` operation should also be thread-safe.
+Your implementation should use a single lock to achieve this thread safety, specifically using the `[wait](http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#wait())`/`[notify](http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#notify())`/`[notifyAll](http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#notifyAll())`/`synchronized` primitives.
+Remember that `wait`, `notify` and `notifyAll` should only be invoked inside a synchronized block.
diff --git a/previous-exams/2021-midterm/m15/.gitignore b/previous-exams/2021-midterm/m15/.gitignore
new file mode 100644
index 0000000..40937dc
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/.gitignore
@@ -0,0 +1,22 @@
+# General
+*.DS_Store
+*.swp
+*~
+
+# Dotty
+*.class
+*.tasty
+*.hasTasty
+
+# sbt
+target/
+
+# IDE
+.bsp
+.bloop
+.metals
+.vscode
+
+# datasets
+stackoverflow-grading.csv
+wikipedia-grading.dat
diff --git a/previous-exams/2021-midterm/m15/assignment.sbt b/previous-exams/2021-midterm/m15/assignment.sbt
new file mode 100644
index 0000000..da7eb3c
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/assignment.sbt
@@ -0,0 +1,2 @@
+// Student tasks (i.e. submit, packageSubmission)
+enablePlugins(StudentTasks)
diff --git a/previous-exams/2021-midterm/m15/build.sbt b/previous-exams/2021-midterm/m15/build.sbt
new file mode 100644
index 0000000..3b7539d
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/build.sbt
@@ -0,0 +1,12 @@
+course := "midterm"
+assignment := "m15"
+scalaVersion := "3.0.0-RC1"
+scalacOptions ++= Seq("-language:implicitConversions", "-deprecation")
+
+libraryDependencies += "org.scalameta" %% "munit" % "0.7.22"
+
+val MUnitFramework = new TestFramework("munit.Framework")
+testFrameworks += MUnitFramework
+// Decode Scala names
+testOptions += Tests.Argument(MUnitFramework, "-s")
+testSuite := "m15.M15Suite"
diff --git a/previous-exams/2021-midterm/m15/grading-tests.jar b/previous-exams/2021-midterm/m15/grading-tests.jar
new file mode 100644
index 0000000000000000000000000000000000000000..3243be21fe08c74418f052ef9b4f521129bd62f0
GIT binary patch
literal 126110
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

literal 0
HcmV?d00001

diff --git a/previous-exams/2021-midterm/m15/project/FilteringReporterPlugin.scala b/previous-exams/2021-midterm/m15/project/FilteringReporterPlugin.scala
new file mode 100644
index 0000000..2e4fd9a
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/project/FilteringReporterPlugin.scala
@@ -0,0 +1,31 @@
+package sbt // To access the private[sbt] compilerReporter key
+package filteringReporterPlugin
+
+import Keys._
+import ch.epfl.lamp._
+
+object FilteringReporterPlugin extends AutoPlugin {
+  override lazy val projectSettings = Seq(
+    // Turn off warning coming from scalameter that we cannot fix without changing scalameter
+    compilerReporter in (Compile, compile) ~= { reporter => new FilteringReporter(reporter) }
+  )
+}
+
+class FilteringReporter(reporter: xsbti.Reporter) extends xsbti.Reporter {
+
+  def reset(): Unit = reporter.reset()
+  def hasErrors: Boolean = reporter.hasErrors
+  def hasWarnings: Boolean = reporter.hasWarnings
+  def printSummary(): Unit = reporter.printSummary()
+  def problems: Array[xsbti.Problem] = reporter.problems
+
+  def log(problem: xsbti.Problem): Unit = {
+    if (!problem.message.contains("An existential type that came from a Scala-2 classfile cannot be"))
+      reporter.log(problem)
+  }
+
+  def comment(pos: xsbti.Position, msg: String): Unit =
+    reporter.comment(pos, msg)
+
+  override def toString = s"CollectingReporter($reporter)"
+}
diff --git a/previous-exams/2021-midterm/m15/project/MOOCSettings.scala b/previous-exams/2021-midterm/m15/project/MOOCSettings.scala
new file mode 100644
index 0000000..1c40443
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/project/MOOCSettings.scala
@@ -0,0 +1,49 @@
+package ch.epfl.lamp
+
+import sbt._
+import sbt.Keys._
+
+/**
+ * Coursera uses two versions of each assignment. They both have the same assignment key and part id but have
+ * different item ids.
+ *
+ * @param key Assignment key
+ * @param partId Assignment partId
+ * @param itemId Item id of the non premium version
+ * @param premiumItemId Item id of the premium version (`None` if the assignment is optional)
+ */
+case class CourseraId(key: String, partId: String, itemId: String, premiumItemId: Option[String])
+
+/**
+  * Settings shared by all assignments, reused in various tasks.
+  */
+object MOOCSettings extends AutoPlugin {
+
+  override def requires = super.requires && filteringReporterPlugin.FilteringReporterPlugin
+
+  object autoImport {
+    val course = SettingKey[String]("course")
+    val assignment = SettingKey[String]("assignment")
+    val options = SettingKey[Map[String, Map[String, String]]]("options")
+    val courseraId = settingKey[CourseraId]("Coursera-specific information identifying the assignment")
+    val testSuite = settingKey[String]("Fully qualified name of the test suite of this assignment")
+      .withRank(KeyRanks.Invisible)
+    // Convenient alias
+    type CourseraId = ch.epfl.lamp.CourseraId
+    val CourseraId = ch.epfl.lamp.CourseraId
+  }
+
+  import autoImport._
+
+  override val globalSettings: Seq[Def.Setting[_]] = Seq(
+    // supershell is verbose, buggy and useless.
+    useSuperShell := false
+  )
+
+  override val projectSettings: Seq[Def.Setting[_]] = Seq(
+    parallelExecution in Test := false,
+    // Report test result after each test instead of waiting for every test to finish
+    logBuffered in Test := false,
+    name := s"${course.value}-${assignment.value}"
+  )
+}
diff --git a/previous-exams/2021-midterm/m15/project/StudentTasks.scala b/previous-exams/2021-midterm/m15/project/StudentTasks.scala
new file mode 100644
index 0000000..c4669af
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/project/StudentTasks.scala
@@ -0,0 +1,303 @@
+package ch.epfl.lamp
+
+import sbt._
+import Keys._
+
+// import scalaj.http._
+import java.io.{File, FileInputStream, IOException}
+import org.apache.commons.codec.binary.Base64
+// import play.api.libs.json.{Json, JsObject, JsPath}
+import scala.util.{Failure, Success, Try}
+
+/**
+  * Provides tasks for submitting the assignment
+  */
+object StudentTasks extends AutoPlugin {
+
+  override def requires = super.requires && MOOCSettings
+
+  object autoImport {
+    val packageSourcesOnly = TaskKey[File]("packageSourcesOnly", "Package the sources of the project")
+    val packageBinWithoutResources = TaskKey[File]("packageBinWithoutResources", "Like packageBin, but without the resources")
+    val packageSubmissionZip = TaskKey[File]("packageSubmissionZip")
+    val packageSubmission = inputKey[Unit]("package solution as an archive file")
+
+    lazy val Grading = config("grading") extend(Runtime)
+  }
+
+
+  import autoImport._
+  import MOOCSettings.autoImport._
+
+  override lazy val projectSettings = Seq(
+    packageSubmissionSetting,
+    fork := true,
+    connectInput in run := true,
+    outputStrategy := Some(StdoutOutput),
+  ) ++
+    packageSubmissionZipSettings ++
+    inConfig(Grading)(Defaults.testSettings ++ Seq(
+      unmanagedJars += file("grading-tests.jar"),
+
+      definedTests := (definedTests in Test).value,
+      internalDependencyClasspath := (internalDependencyClasspath in Test).value
+    ))
+
+
+  /** **********************************************************
+    * SUBMITTING A SOLUTION TO COURSERA
+    */
+
+  val packageSubmissionZipSettings = Seq(
+    packageSubmissionZip := {
+      val submission = crossTarget.value / "submission.zip"
+      val sources = (packageSourcesOnly in Compile).value
+      val binaries = (packageBinWithoutResources in Compile).value
+      IO.zip(Seq(sources -> "sources.zip", binaries -> "binaries.jar"), submission, None)
+      submission
+    },
+    artifactClassifier in packageSourcesOnly := Some("sources"),
+    artifact in (Compile, packageBinWithoutResources) ~= (art => art.withName(art.name + "-without-resources"))
+  ) ++
+  inConfig(Compile)(
+    Defaults.packageTaskSettings(packageSourcesOnly, Defaults.sourceMappings) ++
+    Defaults.packageTaskSettings(packageBinWithoutResources, Def.task {
+      val relativePaths =
+        (unmanagedResources in Compile).value.flatMap(Path.relativeTo((unmanagedResourceDirectories in Compile).value)(_))
+      (mappings in (Compile, packageBin)).value.filterNot { case (_, path) => relativePaths.contains(path) }
+    })
+  )
+
+  val maxSubmitFileSize = {
+    val mb = 1024 * 1024
+    10 * mb
+  }
+
+  /** Check that the jar exists, isn't empty, isn't crazy big, and can be read
+    * If so, encode jar as base64 so we can send it to Coursera
+    */
+  def prepareJar(jar: File, s: TaskStreams): String = {
+    val errPrefix = "Error submitting assignment jar: "
+    val fileLength = jar.length()
+    if (!jar.exists()) {
+      s.log.error(errPrefix + "jar archive does not exist\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength == 0L) {
+      s.log.error(errPrefix + "jar archive is empty\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength > maxSubmitFileSize) {
+      s.log.error(errPrefix + "jar archive is too big. Allowed size: " +
+        maxSubmitFileSize + " bytes, found " + fileLength + " bytes.\n" +
+        jar.getAbsolutePath)
+      failSubmit()
+    } else {
+      val bytes = new Array[Byte](fileLength.toInt)
+      val sizeRead = try {
+        val is = new FileInputStream(jar)
+        val read = is.read(bytes)
+        is.close()
+        read
+      } catch {
+        case ex: IOException =>
+          s.log.error(errPrefix + "failed to read sources jar archive\n" + ex.toString)
+          failSubmit()
+      }
+      if (sizeRead != bytes.length) {
+        s.log.error(errPrefix + "failed to read the sources jar archive, size read: " + sizeRead)
+        failSubmit()
+      } else encodeBase64(bytes)
+    }
+  }
+
+  /** Task to package solution to a given file path */
+  lazy val packageSubmissionSetting = packageSubmission := {
+    val args: Seq[String] = Def.spaceDelimited("[path]").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val base64Jar = prepareJar(jar, s)
+
+    val path = args.headOption.getOrElse((baseDirectory.value / "submission.jar").absolutePath)
+    scala.tools.nsc.io.File(path).writeAll(base64Jar)
+  }
+
+/*
+  /** Task to submit a solution to coursera */
+  val submit = inputKey[Unit]("submit solution to Coursera")
+  lazy val submitSetting = submit := {
+    // Fail if scalafix linting does not pass.
+    scalafixLinting.value
+
+    val args: Seq[String] = Def.spaceDelimited("<arg>").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val assignmentDetails =
+      courseraId.?.value.getOrElse(throw new MessageOnlyException("This assignment can not be submitted to Coursera because the `courseraId` setting is undefined"))
+    val assignmentKey = assignmentDetails.key
+    val courseName =
+      course.value match {
+        case "capstone" => "scala-capstone"
+        case "bigdata"  => "scala-spark-big-data"
+        case other      => other
+      }
+
+    val partId = assignmentDetails.partId
+    val itemId = assignmentDetails.itemId
+    val premiumItemId = assignmentDetails.premiumItemId
+
+    val (email, secret) = args match {
+      case email :: secret :: Nil =>
+        (email, secret)
+      case _ =>
+        val inputErr =
+          s"""|Invalid input to `submit`. The required syntax for `submit` is:
+              |submit <email-address> <submit-token>
+              |
+              |The submit token is NOT YOUR LOGIN PASSWORD.
+              |It can be obtained from the assignment page:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId
+              |${
+                premiumItemId.fold("") { id =>
+                  s"""or (for premium learners):
+                     |https://www.coursera.org/learn/$courseName/programming/$id
+                   """.stripMargin
+                }
+              }
+          """.stripMargin
+        s.log.error(inputErr)
+        failSubmit()
+    }
+
+    val base64Jar = prepareJar(jar, s)
+    val json =
+      s"""|{
+          |   "assignmentKey":"$assignmentKey",
+          |   "submitterEmail":"$email",
+          |   "secret":"$secret",
+          |   "parts":{
+          |      "$partId":{
+          |         "output":"$base64Jar"
+          |      }
+          |   }
+          |}""".stripMargin
+
+    def postSubmission[T](data: String): Try[HttpResponse[String]] = {
+      val http = Http("https://www.coursera.org/api/onDemandProgrammingScriptSubmissions.v1")
+      val hs = List(
+        ("Cache-Control", "no-cache"),
+        ("Content-Type", "application/json")
+      )
+      s.log.info("Connecting to Coursera...")
+      val response = Try(http.postData(data)
+                         .headers(hs)
+                         .option(HttpOptions.connTimeout(10000)) // scalaj default timeout is only 100ms, changing that to 10s
+                         .asString) // kick off HTTP POST
+      response
+    }
+
+    val connectMsg =
+      s"""|Attempting to submit "${assignment.value}" assignment in "$courseName" course
+          |Using:
+          |- email: $email
+          |- submit token: $secret""".stripMargin
+    s.log.info(connectMsg)
+
+    def reportCourseraResponse(response: HttpResponse[String]): Unit = {
+      val code = response.code
+      val respBody = response.body
+
+       /* Sample JSON response from Coursera
+      {
+        "message": "Invalid email or token.",
+        "details": {
+          "learnerMessage": "Invalid email or token."
+        }
+      }
+      */
+
+      // Success, Coursera responds with 2xx HTTP status code
+      if (response.is2xx) {
+        val successfulSubmitMsg =
+          s"""|Successfully connected to Coursera. (Status $code)
+              |
+                |Assignment submitted successfully!
+              |
+                |You can see how you scored by going to:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId/
+              |${
+            premiumItemId.fold("") { id =>
+              s"""or (for premium learners):
+                 |https://www.coursera.org/learn/$courseName/programming/$id
+                       """.stripMargin
+            }
+          }
+              |and clicking on "My Submission".""".stripMargin
+        s.log.info(successfulSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 4xx HTTP status code (client-side failure)
+      else if (response.is4xx) {
+        val result = Try(Json.parse(respBody)).toOption
+        val learnerMsg = result match {
+          case Some(resp: JsObject) =>
+            (JsPath \ "details" \ "learnerMessage").read[String].reads(resp).get
+          case Some(x) => // shouldn't happen
+            "Could not parse Coursera's response:\n" + x
+          case None =>
+            "Could not parse Coursera's response:\n" + respBody
+        }
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |There was something wrong while attempting to submit.
+              |Coursera says:
+              |$learnerMsg (Status $code)""".stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 5xx HTTP status code (server-side failure)
+      else if (response.is5xx) {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera seems to be unavailable at the moment (Status $code)
+              |Check https://status.coursera.org/ and try again in a few minutes.
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera repsonds with an unexpected status code
+      else {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera replied with an unexpected code (Status $code)
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+    }
+
+    // kick it all off, actually make request
+    postSubmission(json) match {
+      case Success(resp) => reportCourseraResponse(resp)
+      case Failure(e) =>
+        val failedConnectMsg =
+          s"""|Connection to Coursera failed.
+              |There was something wrong while attempting to connect to Coursera.
+              |Check your internet connection.
+              |${e.toString}""".stripMargin
+        s.log.error(failedConnectMsg)
+    }
+
+   }
+*/
+
+  def failSubmit(): Nothing = {
+    sys.error("Submission failed")
+  }
+
+  /**
+    * *****************
+    * DEALING WITH JARS
+    */
+  def encodeBase64(bytes: Array[Byte]): String =
+    new String(Base64.encodeBase64(bytes))
+}
diff --git a/previous-exams/2021-midterm/m15/project/build.properties b/previous-exams/2021-midterm/m15/project/build.properties
new file mode 100644
index 0000000..0b2e09c
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/project/build.properties
@@ -0,0 +1 @@
+sbt.version=1.4.7
diff --git a/previous-exams/2021-midterm/m15/project/buildSettings.sbt b/previous-exams/2021-midterm/m15/project/buildSettings.sbt
new file mode 100644
index 0000000..8fac702
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/project/buildSettings.sbt
@@ -0,0 +1,5 @@
+// Used for Coursera submission (StudentPlugin)
+// libraryDependencies += "org.scalaj" %% "scalaj-http" % "2.4.2"
+// libraryDependencies += "com.typesafe.play" %% "play-json" % "2.7.4"
+// Used for Base64 (StudentPlugin)
+libraryDependencies += "commons-codec" % "commons-codec" % "1.10"
diff --git a/previous-exams/2021-midterm/m15/project/plugins.sbt b/previous-exams/2021-midterm/m15/project/plugins.sbt
new file mode 100644
index 0000000..021c019
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/project/plugins.sbt
@@ -0,0 +1,2 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.5.3")
diff --git a/previous-exams/2021-midterm/m15/src/main/scala/m15/AbstractBlockingQueue.scala b/previous-exams/2021-midterm/m15/src/main/scala/m15/AbstractBlockingQueue.scala
new file mode 100644
index 0000000..85a28b2
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/src/main/scala/m15/AbstractBlockingQueue.scala
@@ -0,0 +1,14 @@
+package m15
+
+abstract class AbstractBlockingQueue[T] extends Monitor {
+  private var underlying: List[T] = Nil
+
+  def getUnderlying(): List[T] =
+    underlying
+
+  def setUnderlying(newValue: List[T]): Unit =
+    underlying = newValue
+
+  def put(elem: T): Unit
+  def take(): T
+}
diff --git a/previous-exams/2021-midterm/m15/src/main/scala/m15/AbstractThreadPoolExecutor.scala b/previous-exams/2021-midterm/m15/src/main/scala/m15/AbstractThreadPoolExecutor.scala
new file mode 100644
index 0000000..5e663e8
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/src/main/scala/m15/AbstractThreadPoolExecutor.scala
@@ -0,0 +1,7 @@
+package m15
+
+abstract class AbstractThreadPoolExecutor {
+  def execute(task: Unit => Unit): Unit
+  def start(): Unit
+  def shutdown(): Unit
+}
diff --git a/previous-exams/2021-midterm/m15/src/main/scala/m15/M15.scala b/previous-exams/2021-midterm/m15/src/main/scala/m15/M15.scala
new file mode 100644
index 0000000..27bb83d
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/src/main/scala/m15/M15.scala
@@ -0,0 +1,79 @@
+package m15
+
+object M15 {
+  /** A thread pool that executes submitted task using one of several threads */
+  class ThreadPoolExecutor(taskQueue: BlockingQueue[Unit => Unit], poolSize: Int)
+      extends AbstractThreadPoolExecutor {
+
+    private class Worker extends Thread {
+      override def run(): Unit = {
+        try {
+          while (true) {
+
+            val task = taskQueue.take()
+            task(())
+          }
+        } catch {
+          case e: InterruptedException =>
+            // Nothing to do here, we are shutting down gracefully.
+        }
+      }
+    }
+    private val workers: List[Worker] = List.fill(poolSize)(new Worker())
+
+    /** Executes the given task, passed by name. */
+    def execute(task: Unit => Unit): Unit =
+
+      taskQueue.put(task)
+
+    /** Starts the thread pool. */
+    def start(): Unit =
+      workers.foreach(_.start())
+
+    /** Instantly shuts down all actively executing tasks using an interrupt. */
+    def shutdown(): Unit =
+      workers.foreach(_.interrupt())
+  }
+
+  /**
+   * A queue whose take operations blocks until the queue become non-empty.
+   * Elements must be retrived from this queue in a first in, first out order.
+   * All methods of this class are thread safe, that is, they can safely
+   * be used from multiple thread without any particular synchronization.
+   */
+  class BlockingQueue[T] extends AbstractBlockingQueue[T] {
+
+    // The state of this queue is stored in an underlying List[T] defined in
+    // the AbstractBlockingQueue class. Your implementation should access and
+    // update this list using the following setter and getter methods:
+    // - def getUnderlying(): List[T]
+    // - def setUnderlying(newValue: List[T]): Unit
+    // Using these methods is required for testing purposes.
+
+    /** Inserts the specified element into this queue (non-blocking) */
+    def put(elem: T): Unit =
+
+      this.synchronized {
+        val underlying = getUnderlying()
+        setUnderlying(elem :: underlying)
+        this.notifyAll()
+      }
+
+
+    /**
+     * Retrieves and removes the head of this queue, waiting if necessary
+     * until an element becomes available (blocking).
+     * This queue operates in a first in, first out order.
+     */
+    def take(): T =
+
+      this.synchronized {
+        while (getUnderlying().isEmpty)
+          this.wait()
+        val underlying = getUnderlying()
+        val last = underlying.last
+        setUnderlying(underlying.init)
+        last
+      }
+  }
+}
diff --git a/previous-exams/2021-midterm/m15/src/main/scala/m15/Monitor.scala b/previous-exams/2021-midterm/m15/src/main/scala/m15/Monitor.scala
new file mode 100644
index 0000000..b64e697
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/src/main/scala/m15/Monitor.scala
@@ -0,0 +1,23 @@
+package m15
+
+class Dummy
+
+trait Monitor {
+  implicit val dummy: Dummy = new Dummy
+
+  def wait()(implicit i: Dummy) = waitDefault()
+
+  def synchronized[T](e: => T)(implicit i: Dummy) = synchronizedDefault(e)
+
+  def notify()(implicit i: Dummy) = notifyDefault()
+
+  def notifyAll()(implicit i: Dummy) = notifyAllDefault()
+
+  private val lock = new AnyRef
+
+  // Can be overriden.
+  def waitDefault(): Unit = lock.wait()
+  def synchronizedDefault[T](toExecute: => T): T = lock.synchronized(toExecute)
+  def notifyDefault(): Unit = lock.notify()
+  def notifyAllDefault(): Unit = lock.notifyAll()
+}
diff --git a/previous-exams/2021-midterm/m15/src/test/scala/m15/M15Suite.scala b/previous-exams/2021-midterm/m15/src/test/scala/m15/M15Suite.scala
new file mode 100644
index 0000000..e0f2243
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/src/test/scala/m15/M15Suite.scala
@@ -0,0 +1,281 @@
+package m15
+
+import instrumentation.SchedulableBlockingQueue
+import instrumentation.TestHelper._
+import instrumentation.TestUtils._
+
+class M15Suite extends munit.FunSuite {
+  import M15._
+
+  test("ThreadPool should put jobs in the queue, Workers should execute jobs from the queue (10pts)") {
+    case class PutE(e: Unit => Unit) extends Exception
+    val nThreads = 3
+    var taken = false
+    class TestBlockingQueue extends BlockingQueue[Unit => Unit] {
+      override def put(e: Unit => Unit): Unit =
+        throw new PutE(e)
+
+      override def take(): Unit => Unit =
+        x => {
+          taken = true
+          Thread.sleep(10 * 1000)
+        }
+    }
+
+    val tpe = new ThreadPoolExecutor(new TestBlockingQueue, nThreads)
+    val unit2unit: Unit => Unit = x => ()
+    try {
+      tpe.execute(unit2unit)
+      assert(false, "ThreadPoolExecutor does not put jobs in the queue")
+    } catch {
+      case PutE(e) =>
+        assert(e == unit2unit)
+    }
+    tpe.start()
+    Thread.sleep(1000)
+    assert(taken, s"ThreadPoolExecutor workers do no execute jobs from the queue")
+    tpe.shutdown()
+  }
+
+  test("BlockingQueue should work in a sequential setting (1pts)") {
+    testSequential[(Int, Int, Int, Int)]{ sched =>
+      val queue = new SchedulableBlockingQueue[Int](sched)
+      queue.put(1)
+      queue.put(2)
+      queue.put(3)
+      queue.put(4)
+      (queue.take(),
+      queue.take(),
+      queue.take(),
+      queue.take())
+    }{ tuple =>
+      (tuple == (1, 2, 3, 4), s"Expected (1, 2, 3, 4) got $tuple")
+    }
+  }
+
+  test("BlockingQueue should work when Thread 1: 'put(1)', Thread 2: 'take' (3pts)") {
+    testManySchedules(2, sched => {
+      val queue = new SchedulableBlockingQueue[Int](sched)
+      (List(() => queue.put(1), () => queue.take()),
+       args => (args(1) == 1, s"Expected 1, got ${args(1)}"))
+    })
+  }
+
+  test("BlockingQueue should not be able to take from an empty queue (3pts)") {
+    testSequential[Boolean]{ sched =>
+      val queue = new SchedulableBlockingQueue[Int](sched);
+      queue.put(1)
+      queue.put(2)
+      queue.take()
+      queue.take()
+      failsOrTimesOut(queue.take())
+    }{ res =>
+      (res, "Was able to retrieve an element from an empty queue")
+    }
+  }
+
+  test("Should work when Thread 1: 'put(1)', Thread 2: 'put(2)', Thread 3: 'take', and a buffer of size 1") {
+    testManySchedules(3, sched => {
+      val prodCons = new SchedulableBlockingQueue[Int](sched)
+      (List(() => prodCons.put(1), () => prodCons.put(2), () => prodCons.take())
+      , args => {
+        val takeRes = args(2).asInstanceOf[Int]
+        val nocreation = (takeRes == 1 || takeRes == 2)
+        if (!nocreation)
+          (false, s"'take' should return either 1 or 2")
+        else (true, "")
+      })
+    })
+  }
+
+  // testing no duplication
+  test("Should work when Thread 1: 'put(1)', Thread 2: 'put(2)', Thread 3: 'take', Thread 4: 'take', and a buffer of size 3") {
+    testManySchedules(4, sched => {
+      val prodCons = new SchedulableBlockingQueue[Int](sched)
+      (List(() => prodCons.put(1), () => prodCons.put(2), () => prodCons.take(), () => prodCons.take())
+      , args => {
+        def m(): (Boolean, String) = {
+          val takeRes1 = args(2).asInstanceOf[Int]
+          val takeRes2 = args(3).asInstanceOf[Int]
+          val nocreation = (x: Int) => List(1, 2).contains(x)
+          if (!nocreation(takeRes1))
+            return (false, s"'Thread 3: take' returned $takeRes1 but should return a value in {1, 2, 3}")
+          if (!nocreation(takeRes2))
+            return (false, s"'Thread 4: take' returned $takeRes2 but should return a value in {1, 2, 3}")
+
+          val noduplication = takeRes1 != takeRes2
+          if (!noduplication)
+            (false, s"'Thread 3 and 4' returned the same value: $takeRes1")
+          else (true, "")
+        }
+        m()
+      })
+    })
+  }
+
+  // testing no duplication with 5 threads
+  test("Should work when Thread 1: 'put(1)', Thread 2: 'put(2)', Thread 3: 'put(3)', Thread 4: 'take', Thread 5: 'take', and a buffer of size 1") {
+    testManySchedules(5, sched => {
+      val prodCons = new SchedulableBlockingQueue[Int](sched)
+      (List(() => prodCons.put(1), () => prodCons.put(2), () => prodCons.put(3),
+        () => prodCons.take(), () => prodCons.take())
+      , args => {
+        def m(): (Boolean, String) = {
+          val takeRes1 = args(3).asInstanceOf[Int]
+          val takeRes2 = args(4).asInstanceOf[Int]
+          val nocreation = (x: Int) => List(1, 2, 3).contains(x)
+          if (!nocreation(takeRes1))
+            return (false, s"'Thread 4: take' returned $takeRes1 but should return a value in {1, 2, 3}")
+          if (!nocreation(takeRes2))
+            return (false, s"'Thread 5: take' returned $takeRes2 but should return a value in {1, 2, 3}")
+
+          val noduplication = takeRes1 != takeRes2
+          if (!noduplication)
+            return (false, s"'Thread 4 and 5' returned the same value: $takeRes1")
+          else (true, "")
+        }
+        m()
+      })
+    })
+  }
+
+  // testing fifo buffer size 1
+  test("Should work when Thread 1: 'put(1); put(2)', Thread 2: 'take', Thread 3: 'put(3)', Thread 4: 'put(4)', and a buffer of size 3") {
+    testManySchedules(4, sched => {
+      val prodCons = new SchedulableBlockingQueue[Int](sched)
+      (List(() => { prodCons.put(1); prodCons.put(2) }, () => prodCons.take(),
+        () => prodCons.put(3), () => prodCons.put(4))
+      , args => {
+        def m(): (Boolean, String) = {
+          val takeRes = args(1).asInstanceOf[Int]
+          // no creation
+          val nocreation = (x: Int) => List(1, 2, 3, 4).contains(x)
+          if (!nocreation(takeRes))
+            return (false, s"'Thread 2: take' returned $takeRes, but should return a value in {1, 2, 3, 4}")
+          // fifo (cannot have 2 without 1)
+          if (takeRes == 2)
+            (false, s"'Thread 2' returned 2 before returning 1")
+          else
+            (true, "")
+        }
+        m()
+      })
+    })
+  }
+
+  // testing fifo buffer size 5
+  test("Should work when Thread 1: 'put(1); put(2)', Thread 2: 'take', Thread 3: 'put(11)', Thread 4: 'put(10)', and a buffer of size 5") {
+    testManySchedules(4, sched => {
+      val prodCons = new SchedulableBlockingQueue[Int](sched)
+      (List(() => { prodCons.put(1); prodCons.put(2) }, () => prodCons.take(),
+        () => prodCons.put(11), () => prodCons.put(10))
+      , args => {
+        def m(): (Boolean, String) = {
+          val takeRes = args(1).asInstanceOf[Int]
+          // no creation
+          val nocreation = (x: Int) => List(1, 2, 10, 11).contains(x)
+          if (!nocreation(takeRes))
+            return (false, s"'Thread 2: take' returned $takeRes, but should return a value in {1, 2, 10, 11}")
+          // fifo (cannot have 2 without 1)
+          if (takeRes == 2)
+            (false, s"'Thread 2' returned 2 before returning 1")
+          else
+            (true, "")
+        }
+        m()
+      })
+    })
+  }
+
+  // testing fifo on more complicated case
+  test("Should work when Thread 1: 'put(1); put(3)', Thread 2: 'put(2)', Thread 3: 'put(4)', Thread 4: 'take', Thread 5: 'take', and a buffer of size 10") {
+    testManySchedules(5, sched => {
+      val prodCons = new SchedulableBlockingQueue[Int](sched)
+      (List(() => { prodCons.put(1); prodCons.put(3) }, () => prodCons.put(2),
+        () => prodCons.put(4), () => prodCons.take(), () => prodCons.take())
+      , args => {
+        def m(): (Boolean, String) = {
+          val takeRes1 = args(3).asInstanceOf[Int]
+          val takeRes2 = args(4).asInstanceOf[Int]
+          // no creation
+          val nocreation = (x: Int) => List(1, 2, 3, 4).contains(x)
+          if (!nocreation(takeRes1))
+            return (false, s"'Thread 4: take' returned $takeRes1 but should return a value in {1, 2, 3, 4}")
+          if (!nocreation(takeRes2))
+            return (false, s"'Thread 5: take' returned $takeRes2 but should return a value in {1, 2, 3, 4}")
+          // no duplication
+          if (takeRes1 == takeRes2)
+            return (false, s"'Thread 4 and 5' returned the same value: $takeRes1")
+          // fifo (cannot have 3 without 1)
+          val takes = List(takeRes1, takeRes2)
+          if (takes.contains(3) && !takes.contains(1))
+            (false, s"'Thread 4 or 5' returned 3 before returning 1")
+          else
+            (true, "")
+        }
+        m()
+      })
+    })
+  }
+
+  // combining put and take in one thread
+  test("Should work when Thread 1: 'put(21); put(22)', Thread 2: 'take', Thread 3: 'put(23); take', Thread 4: 'put(24); take', and a buffer of size 2") {
+    testManySchedules(4, sched => {
+      val prodCons = new SchedulableBlockingQueue[Int](sched)
+      (List(() => { prodCons.put(21); prodCons.put(22) }, () => prodCons.take(),
+        () => { prodCons.put(23); prodCons.take() }, () => { prodCons.put(24); prodCons.take() })
+      , args => {
+        def m(): (Boolean, String) = {
+          val takes = List(args(1).asInstanceOf[Int], args(2).asInstanceOf[Int], args(3).asInstanceOf[Int])
+          // no creation
+          val vals = List(21, 22, 23, 24)
+
+          var i = 0
+          while (i < takes.length) {
+            val x = takes(i)
+            if (!vals.contains(x))
+              return (false, s"'Thread $i: take' returned $x but should return a value in $vals")
+            i += 1
+          }
+
+          // no duplication
+          if (takes.distinct.size != takes.size)
+            return (false, s"Takes did not return unique values: $takes")
+          // fifo (cannot have 22 without 21)
+          if (takes.contains(22) && !takes.contains(21))
+            (false, s"`Takes returned 22 before returning 21")
+          else
+            (true, "")
+        }
+        m()
+      })
+    })
+  }
+
+  // completely hidden hard to crack test
+  test("[Black box test] Values should be taken in the order they are put") {
+    testManySchedules(4, sched => {
+      val prodCons = new SchedulableBlockingQueue[(Char, Int)](sched)
+      val n = 2
+      (List(
+        () => for (i <- 1 to n) { prodCons.put(('a', i)) },
+        () => for (i <- 1 to n) { prodCons.put(('b', i)) },
+        () => for (i <- 1 to n) { prodCons.put(('c', i)) },
+        () => {
+          import scala.collection.mutable
+          var counts = mutable.HashMap.empty[Char, Int]
+          counts('a') = 0
+          counts('b') = 0
+          counts('c') = 0
+          for (i <- 1 to (3 * n)) {
+            val (c, n) = prodCons.take()
+            counts(c) += 1
+            assert(counts(c) == n)
+          }
+        })
+      , _ =>
+        (true, "")
+      )
+    })
+  }
+}
diff --git a/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/MockedMonitor.scala b/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/MockedMonitor.scala
new file mode 100644
index 0000000..c0591e3
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/MockedMonitor.scala
@@ -0,0 +1,73 @@
+package m15
+package instrumentation
+
+trait MockedMonitor extends Monitor {
+  def scheduler: Scheduler
+
+  // Can be overriden.
+  override def waitDefault() = {
+    scheduler.log("wait")
+    scheduler updateThreadState Wait(this, scheduler.threadLocks.tail)
+  }
+  override def synchronizedDefault[T](toExecute: =>T): T = {
+    scheduler.log("synchronized check")
+    val prevLocks = scheduler.threadLocks
+    scheduler updateThreadState Sync(this, prevLocks) // If this belongs to prevLocks, should just continue.
+    scheduler.log("synchronized -> enter")
+    try {
+      toExecute
+    } finally {
+      scheduler updateThreadState Running(prevLocks)
+      scheduler.log("synchronized -> out")
+    }
+  }
+  override def notifyDefault() = {
+    scheduler mapOtherStates {
+      state => state match {
+        case Wait(lockToAquire, locks) if lockToAquire == this => SyncUnique(this, state.locks)
+        case e => e
+      }
+    }
+    scheduler.log("notify")
+  }
+  override def notifyAllDefault() = {
+    scheduler mapOtherStates {
+      state => state match {
+        case Wait(lockToAquire, locks) if lockToAquire == this => Sync(this, state.locks)
+        case SyncUnique(lockToAquire, locks) if lockToAquire == this => Sync(this, state.locks)
+        case e => e
+      }
+    }
+    scheduler.log("notifyAll")
+  }
+}
+
+trait LockFreeMonitor extends Monitor {
+  override def waitDefault() = {
+    throw new Exception("Please use lock-free structures and do not use wait()")
+  }
+  override def synchronizedDefault[T](toExecute: =>T): T = {
+    throw new Exception("Please use lock-free structures and do not use synchronized()")
+  }
+  override def notifyDefault() = {
+    throw new Exception("Please use lock-free structures and do not use notify()")
+  }
+  override def notifyAllDefault() = {
+    throw new Exception("Please use lock-free structures and do not use notifyAll()")
+  }
+}
+
+
+abstract class ThreadState {
+  def locks: Seq[AnyRef]
+}
+trait CanContinueIfAcquiresLock extends ThreadState {
+  def lockToAquire: AnyRef
+}
+case object Start extends ThreadState { def locks: Seq[AnyRef] = Seq.empty }
+case object End extends ThreadState { def locks: Seq[AnyRef] = Seq.empty }
+case class Wait(lockToAquire: AnyRef, locks: Seq[AnyRef]) extends ThreadState
+case class SyncUnique(lockToAquire: AnyRef, locks: Seq[AnyRef]) extends ThreadState with CanContinueIfAcquiresLock
+case class Sync(lockToAquire: AnyRef, locks: Seq[AnyRef]) extends ThreadState with CanContinueIfAcquiresLock
+case class Running(locks: Seq[AnyRef]) extends ThreadState
+case class VariableReadWrite(locks: Seq[AnyRef]) extends ThreadState
diff --git a/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/SchedulableBlockingQueue.scala b/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/SchedulableBlockingQueue.scala
new file mode 100644
index 0000000..31b09be
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/SchedulableBlockingQueue.scala
@@ -0,0 +1,17 @@
+package m15
+package instrumentation
+
+class SchedulableBlockingQueue[T](val scheduler: Scheduler)
+  extends m15.M15.BlockingQueue[T] with MockedMonitor {
+    private var underlying: List[T] = Nil
+
+    override def getUnderlying(): List[T] =
+      scheduler.exec {
+        underlying
+      }(s"Get $underlying")
+
+    override def setUnderlying(newValue: List[T]): Unit =
+      scheduler.exec {
+        underlying = newValue
+      }(s"Set $newValue")
+}
diff --git a/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/Scheduler.scala b/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/Scheduler.scala
new file mode 100644
index 0000000..fd5f427
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/Scheduler.scala
@@ -0,0 +1,305 @@
+package m15
+package instrumentation
+
+import java.util.concurrent._;
+import scala.concurrent.duration._
+import scala.collection.mutable._
+import Stats._
+
+import java.util.concurrent.atomic.AtomicInteger
+
+sealed abstract class Result
+case class RetVal(rets: List[Any]) extends Result
+case class Except(msg: String, stackTrace: Array[StackTraceElement]) extends Result
+case class Timeout(msg: String) extends Result
+
+/**
+ * A class that maintains schedule and a set of thread ids.
+ * The schedules are advanced after an operation of a SchedulableBuffer is performed.
+ * Note: the real schedule that is executed may deviate from the input schedule
+ * due to the adjustments that had to be made for locks
+ */
+class Scheduler(sched: List[Int]) {
+  val maxOps = 500 // a limit on the maximum number of operations the code is allowed to perform
+
+  private var schedule = sched
+  private var numThreads = 0
+  private val realToFakeThreadId = Map[Long, Int]()
+  private val opLog = ListBuffer[String]() // a mutable list (used for efficient concat)
+  private val threadStates = Map[Int, ThreadState]()
+
+  /**
+   * Runs a set of operations in parallel as per the schedule.
+   * Each operation may consist of many primitive operations like reads or writes
+   * to shared data structure each of which should be executed using the function `exec`.
+   * @timeout in milliseconds
+   * @return true - all threads completed on time,  false -some tests timed out.
+   */
+  def runInParallel(timeout: Long, ops: List[() => Any]): Result = {
+    numThreads = ops.length
+    val threadRes = Array.fill(numThreads) { None: Any }
+    var exception: Option[Except] = None
+    val syncObject = new Object()
+    var completed = new AtomicInteger(0)
+    // create threads
+    val threads = ops.zipWithIndex.map {
+      case (op, i) =>
+        new Thread(new Runnable() {
+          def run(): Unit = {
+            val fakeId = i + 1
+            setThreadId(fakeId)
+            try {
+              updateThreadState(Start)
+              val res = op()
+              updateThreadState(End)
+              threadRes(i) = res
+              // notify the master thread if all threads have completed
+              if (completed.incrementAndGet() == ops.length) {
+                syncObject.synchronized { syncObject.notifyAll() }
+              }
+            } catch {
+              case e: Throwable if exception != None => // do nothing here and silently fail
+              case e: Throwable =>
+                log(s"throw ${e.toString}")
+                exception = Some(Except(s"Thread $fakeId crashed on the following schedule: \n" + opLog.mkString("\n"),
+                    e.getStackTrace))
+                syncObject.synchronized { syncObject.notifyAll() }
+              //println(s"$fakeId: ${e.toString}")
+              //Runtime.getRuntime().halt(0) //exit the JVM and all running threads (no other way to kill other threads)
+            }
+          }
+        })
+    }
+    // start all threads
+    threads.foreach(_.start())
+    // wait for all threads to complete, or for an exception to be thrown, or for the time out to expire
+    var remTime = timeout
+    syncObject.synchronized {
+      timed { if(completed.get() != ops.length) syncObject.wait(timeout) } { time => remTime -= time }
+    }
+    if (exception.isDefined) {
+      exception.get
+    } else if (remTime <= 1) { // timeout ? using 1 instead of zero to allow for some errors
+      Timeout(opLog.mkString("\n"))
+    } else {
+      // every thing executed normally
+      RetVal(threadRes.toList)
+    }
+  }
+
+  // Updates the state of the current thread
+  def updateThreadState(state: ThreadState): Unit = {
+    val tid = threadId
+    synchronized {
+      threadStates(tid) = state
+    }
+    state match {
+      case Sync(lockToAquire, locks) =>
+        if (locks.indexOf(lockToAquire) < 0) waitForTurn else {
+          // Re-aqcuiring the same lock
+          updateThreadState(Running(lockToAquire +: locks))
+        }
+      case Start      => waitStart()
+      case End        => removeFromSchedule(tid)
+      case Running(_) =>
+      case _          => waitForTurn // Wait, SyncUnique, VariableReadWrite
+    }
+  }
+
+  def waitStart(): Unit = {
+    //while (threadStates.size < numThreads) {
+    //Thread.sleep(1)
+    //}
+    synchronized {
+      if (threadStates.size < numThreads) {
+        wait()
+      } else {
+        notifyAll()
+      }
+    }
+  }
+
+  def threadLocks = {
+    synchronized {
+      threadStates(threadId).locks
+    }
+  }
+
+  def threadState = {
+    synchronized {
+      threadStates(threadId)
+    }
+  }
+
+  def mapOtherStates(f: ThreadState => ThreadState) = {
+    val exception = threadId
+    synchronized {
+      for (k <- threadStates.keys if k != exception) {
+        threadStates(k) = f(threadStates(k))
+      }
+    }
+  }
+
+  def log(str: String) = {
+    if((realToFakeThreadId contains Thread.currentThread().getId())) {
+      val space = (" " * ((threadId - 1) * 2))
+      val s = space + threadId + ":" + "\n".r.replaceAllIn(str, "\n" + space + "  ")
+      opLog += s
+    }
+  }
+
+  /**
+   * Executes a read or write operation to a global data structure as per the given schedule
+   * @param msg a message corresponding to the operation that will be logged
+   */
+  def exec[T](primop: => T)(msg: => String, postMsg: => Option[T => String] = None): T = {
+    if(! (realToFakeThreadId contains Thread.currentThread().getId())) {
+      primop
+    } else {
+      updateThreadState(VariableReadWrite(threadLocks))
+      val m = msg
+      if(m != "") log(m)
+      if (opLog.size > maxOps)
+        throw new Exception(s"Total number of reads/writes performed by threads exceed $maxOps. A possible deadlock!")
+      val res = primop
+      postMsg match {
+        case Some(m) => log(m(res))
+        case None =>
+      }
+      res
+    }
+  }
+
+  private def setThreadId(fakeId: Int) = synchronized {
+    realToFakeThreadId(Thread.currentThread.getId) = fakeId
+  }
+
+  def threadId =
+    try {
+      realToFakeThreadId(Thread.currentThread().getId())
+    } catch {
+    case e: NoSuchElementException =>
+      throw new Exception("You are accessing shared variables in the constructor. This is not allowed. The variables are already initialized!")
+    }
+
+  private def isTurn(tid: Int) = synchronized {
+    (!schedule.isEmpty && schedule.head != tid)
+  }
+
+  def canProceed(): Boolean = {
+    val tid = threadId
+    canContinue match {
+      case Some((i, state)) if i == tid =>
+        //println(s"$tid: Runs ! Was in state $state")
+        canContinue = None
+        state match {
+          case Sync(lockToAquire, locks) => updateThreadState(Running(lockToAquire +: locks))
+          case SyncUnique(lockToAquire, locks) =>
+            mapOtherStates {
+              _ match {
+                case SyncUnique(lockToAquire2, locks2) if lockToAquire2 == lockToAquire => Wait(lockToAquire2, locks2)
+                case e => e
+              }
+            }
+            updateThreadState(Running(lockToAquire +: locks))
+          case VariableReadWrite(locks) => updateThreadState(Running(locks))
+        }
+        true
+      case Some((i, state)) =>
+        //println(s"$tid: not my turn but $i !")
+        false
+      case None =>
+        false
+    }
+  }
+
+  var threadPreference = 0 // In the case the schedule is over, which thread should have the preference to execute.
+
+  /** returns true if the thread can continue to execute, and false otherwise */
+  def decide(): Option[(Int, ThreadState)] = {
+    if (!threadStates.isEmpty) { // The last thread who enters the decision loop takes the decision.
+      //println(s"$threadId: I'm taking a decision")
+      if (threadStates.values.forall { case e: Wait => true case _ => false }) {
+        val waiting = threadStates.keys.map(_.toString).mkString(", ")
+        val s = if (threadStates.size > 1) "s" else ""
+        val are = if (threadStates.size > 1) "are" else "is"
+        throw new Exception(s"Deadlock: Thread$s $waiting $are waiting but all others have ended and cannot notify them.")
+      } else {
+        // Threads can be in Wait, Sync, SyncUnique, and VariableReadWrite mode.
+        // Let's determine which ones can continue.
+        val notFree = threadStates.collect { case (id, state) => state.locks }.flatten.toSet
+        val threadsNotBlocked = threadStates.toSeq.filter {
+          case (id, v: VariableReadWrite)         => true
+          case (id, v: CanContinueIfAcquiresLock) => !notFree(v.lockToAquire) || (v.locks contains v.lockToAquire)
+          case _                                  => false
+        }
+        if (threadsNotBlocked.isEmpty) {
+          val waiting = threadStates.keys.map(_.toString).mkString(", ")
+          val s = if (threadStates.size > 1) "s" else ""
+          val are = if (threadStates.size > 1) "are" else "is"
+          val whoHasLock = threadStates.toSeq.flatMap { case (id, state) => state.locks.map(lock => (lock, id)) }.toMap
+          val reason = threadStates.collect {
+            case (id, state: CanContinueIfAcquiresLock) if !notFree(state.lockToAquire) =>
+              s"Thread $id is waiting on lock ${state.lockToAquire} held by thread ${whoHasLock(state.lockToAquire)}"
+          }.mkString("\n")
+          throw new Exception(s"Deadlock: Thread$s $waiting are interlocked. Indeed:\n$reason")
+        } else if (threadsNotBlocked.size == 1) { // Do not consume the schedule if only one thread can execute.
+          Some(threadsNotBlocked(0))
+        } else {
+          val next = schedule.indexWhere(t => threadsNotBlocked.exists { case (id, state) => id == t })
+          if (next != -1) {
+            //println(s"$threadId: schedule is $schedule, next chosen is ${schedule(next)}")
+            val chosenOne = schedule(next) // TODO: Make schedule a mutable list.
+            schedule = schedule.take(next) ++ schedule.drop(next + 1)
+            Some((chosenOne, threadStates(chosenOne)))
+          } else {
+            threadPreference = (threadPreference + 1) % threadsNotBlocked.size
+            val chosenOne = threadsNotBlocked(threadPreference) // Maybe another strategy
+            Some(chosenOne)
+            //threadsNotBlocked.indexOf(threadId) >= 0
+            /*
+            val tnb = threadsNotBlocked.map(_._1).mkString(",")
+            val s = if (schedule.isEmpty) "empty" else schedule.mkString(",")
+            val only = if (schedule.isEmpty) "" else " only"
+            throw new Exception(s"The schedule is $s but$only threads ${tnb} can continue")*/
+          }
+        }
+      }
+    } else canContinue
+  }
+
+  /**
+   * This will be called before a schedulable operation begins.
+   * This should not use synchronized
+   */
+  var numThreadsWaiting = new AtomicInteger(0)
+  //var waitingForDecision = Map[Int, Option[Int]]() // Mapping from thread ids to a number indicating who is going to make the choice.
+  var canContinue: Option[(Int, ThreadState)] = None // The result of the decision thread Id of the thread authorized to continue.
+  private def waitForTurn = {
+    synchronized {
+      if (numThreadsWaiting.incrementAndGet() == threadStates.size) {
+        canContinue = decide()
+        notifyAll()
+      }
+      //waitingForDecision(threadId) = Some(numThreadsWaiting)
+      //println(s"$threadId Entering waiting with ticket number $numThreadsWaiting/${waitingForDecision.size}")
+      while (!canProceed()) wait()
+    }
+    numThreadsWaiting.decrementAndGet()
+  }
+
+  /**
+   * To be invoked when a thread is about to complete
+   */
+  private def removeFromSchedule(fakeid: Int) = synchronized {
+    //println(s"$fakeid: I'm taking a decision because I finished")
+    schedule = schedule.filterNot(_ == fakeid)
+    threadStates -= fakeid
+    if (numThreadsWaiting.get() == threadStates.size) {
+      canContinue = decide()
+      notifyAll()
+    }
+  }
+
+  def getOperationLog() = opLog
+}
diff --git a/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/Stats.scala b/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/Stats.scala
new file mode 100644
index 0000000..e82c098
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/Stats.scala
@@ -0,0 +1,23 @@
+package m15
+package instrumentation
+
+import java.lang.management._
+
+/**
+ * A collection of methods that can be used to collect run-time statistics about Leon programs.
+ * This is mostly used to test the resources properties of Leon programs
+ */
+object Stats {
+  def timed[T](code: => T)(cont: Long => Unit): T = {
+    var t1 = System.currentTimeMillis()
+    val r = code
+    cont((System.currentTimeMillis() - t1))
+    r
+  }
+
+  def withTime[T](code: => T): (T, Long) = {
+    var t1 = System.currentTimeMillis()
+    val r = code
+    (r, (System.currentTimeMillis() - t1))
+  }
+}
diff --git a/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/TestHelper.scala b/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/TestHelper.scala
new file mode 100644
index 0000000..5f86338
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/TestHelper.scala
@@ -0,0 +1,125 @@
+package m15
+package instrumentation
+
+import scala.util.Random
+import scala.collection.mutable.{Map => MutableMap}
+
+import Stats._
+
+object TestHelper {
+  val noOfSchedules = 10000 // set this to 100k during deployment
+  val readWritesPerThread = 20 // maximum number of read/writes possible in one thread
+  val contextSwitchBound = 10
+  val testTimeout = 240 // the total time out for a test in seconds
+  val schedTimeout = 15 // the total time out for execution of a schedule in secs
+
+  // Helpers
+  /*def testManySchedules(op1: => Any): Unit = testManySchedules(List(() => op1))
+  def testManySchedules(op1: => Any, op2: => Any): Unit = testManySchedules(List(() => op1, () => op2))
+  def testManySchedules(op1: => Any, op2: => Any, op3: => Any): Unit = testManySchedules(List(() => op1, () => op2, () => op3))
+  def testManySchedules(op1: => Any, op2: => Any, op3: => Any, op4: => Any): Unit = testManySchedules(List(() => op1, () => op2, () => op3, () => op4))*/
+
+  def testSequential[T](ops: Scheduler => Any)(assertions: T => (Boolean, String)) =
+    testManySchedules(1,
+      (sched: Scheduler) => {
+        (List(() => ops(sched)),
+         (res: List[Any]) => assertions(res.head.asInstanceOf[T]))
+      })
+
+  /**
+   * @numThreads number of threads
+   * @ops operations to be executed, one per thread
+   * @assertion as condition that will executed after all threads have completed (without exceptions)
+   * 					 the arguments are the results of the threads
+   */
+  def testManySchedules(numThreads: Int,
+      ops: Scheduler =>
+        (List[() => Any], // Threads
+         List[Any] => (Boolean, String)) // Assertion
+      ) = {
+    var timeout = testTimeout * 1000L
+    val threadIds = (1 to numThreads)
+    //(1 to scheduleLength).flatMap(_ => threadIds).toList.permutations.take(noOfSchedules).foreach {
+    val schedules = (new ScheduleGenerator(numThreads)).schedules()
+    var schedsExplored = 0
+    schedules.takeWhile(_ => schedsExplored <= noOfSchedules && timeout > 0).foreach {
+      //case _ if timeout <= 0 => // break
+      case schedule =>
+        schedsExplored += 1
+        val schedr = new Scheduler(schedule)
+        //println("Exploring Sched: "+schedule)
+        val (threadOps, assertion) = ops(schedr)
+        if (threadOps.size != numThreads)
+          throw new IllegalStateException(s"Number of threads: $numThreads, do not match operations of threads: $threadOps")
+        timed { schedr.runInParallel(schedTimeout * 1000, threadOps) } { t => timeout -= t } match {
+          case Timeout(msg) =>
+            throw new java.lang.AssertionError("assertion failed\n"+"The schedule took too long to complete. A possible deadlock! \n"+msg)
+          case Except(msg, stkTrace) =>
+            val traceStr = "Thread Stack trace: \n"+stkTrace.map(" at "+_.toString).mkString("\n")
+            throw new java.lang.AssertionError("assertion failed\n"+msg+"\n"+traceStr)
+          case RetVal(threadRes) =>
+            // check the assertion
+            val (success, custom_msg) = assertion(threadRes)
+            if (!success) {
+              val msg = "The following schedule resulted in wrong results: \n" + custom_msg + "\n" + schedr.getOperationLog().mkString("\n")
+              throw new java.lang.AssertionError("Assertion failed: "+msg)
+            }
+        }
+    }
+    if (timeout <= 0) {
+      throw new java.lang.AssertionError("Test took too long to complete! Cannot check all schedules as your code is too slow!")
+    }
+  }
+
+  /**
+   * A schedule generator that is based on the context bound
+   */
+  class ScheduleGenerator(numThreads: Int) {
+    val scheduleLength = readWritesPerThread * numThreads
+    val rands = (1 to scheduleLength).map(i => new Random(0xcafe * i)) // random numbers for choosing a thread at each position
+    def schedules(): LazyList[List[Int]] = {
+      var contextSwitches = 0
+      var contexts = List[Int]() // a stack of thread ids in the order of context-switches
+      val remainingOps = MutableMap[Int, Int]()
+      remainingOps ++= (1 to numThreads).map(i => (i, readWritesPerThread)) // num ops remaining in each thread
+      val liveThreads = (1 to numThreads).toSeq.toBuffer
+
+      /**
+       * Updates remainingOps and liveThreads once a thread is chosen for a position in the schedule
+       */
+      def updateState(tid: Int): Unit = {
+        val remOps = remainingOps(tid)
+        if (remOps == 0) {
+          liveThreads -= tid
+        } else {
+          remainingOps += (tid -> (remOps - 1))
+        }
+      }
+      val schedule = rands.foldLeft(List[Int]()) {
+        case (acc, r) if contextSwitches < contextSwitchBound =>
+          val tid = liveThreads(r.nextInt(liveThreads.size))
+          contexts match {
+            case prev :: tail if prev != tid => // we have a new context switch here
+              contexts +:= tid
+              contextSwitches += 1
+            case prev :: tail =>
+            case _ => // init case
+              contexts +:= tid
+          }
+          updateState(tid)
+          acc :+ tid
+        case (acc, _) => // here context-bound has been reached so complete the schedule without any more context switches
+          if (!contexts.isEmpty) {
+            contexts = contexts.dropWhile(remainingOps(_) == 0)
+          }
+          val tid = contexts match {
+            case top :: tail => top
+            case _ => liveThreads(0)  // here, there has to be threads that have not even started
+          }
+          updateState(tid)
+          acc :+ tid
+      }
+      schedule #:: schedules()
+    }
+  }
+}
diff --git a/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/TestUtils.scala b/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/TestUtils.scala
new file mode 100644
index 0000000..3f4afe8
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/src/test/scala/m15/instrumentation/TestUtils.scala
@@ -0,0 +1,20 @@
+package m15
+package instrumentation
+
+import scala.concurrent._
+import scala.concurrent.duration._
+import scala.concurrent.ExecutionContext.Implicits.global
+
+object TestUtils {
+  def failsOrTimesOut[T](action: => T): Boolean = {
+    val asyncAction = Future {
+      action
+    }
+    try {
+      Await.result(asyncAction, 2000.millisecond)
+    } catch {
+      case _: Throwable => return true
+    }
+    return false
+  }
+}
diff --git a/previous-exams/2021-midterm/m2.md b/previous-exams/2021-midterm/m2.md
new file mode 100644
index 0000000..47b0976
--- /dev/null
+++ b/previous-exams/2021-midterm/m2.md
@@ -0,0 +1,61 @@
+Use the following commands to make a fresh clone of your repository:
+
+```
+git clone -b m2 git@gitlab.epfl.ch:lamp/student-repositories-s21/cs206-GASPAR.git m2
+```
+
+## Useful links
+
+  * [A guide to the Scala parallel collections](https://docs.scala-lang.org/overviews/parallel-collections/overview.html)
+  * [The API documentation of the Scala parallel collections](https://www.javadoc.io/doc/org.scala-lang.modules/scala-parallel-collections_2.13/latest/scala/collection/index.html)
+  * [The API documentation of the Scala standard library](https://www.scala-lang.org/files/archive/api/2.13.4)
+  * [The API documentation of the Java standard library](https://docs.oracle.com/en/java/javase/15/docs/api/index.html)
+
+**If you have issues with the IDE, try [reimporting the
+build](https://gitlab.epfl.ch/lamp/cs206/-/blob/master/labs/example-lab.md#ide-features-like-type-on-hover-or-go-to-definition-do-not-work),
+if you still have problems, use `compile` in sbt instead.**
+
+## Exercise
+
+Given the following sequential implementation of a function that computes the sequence of rolling geometric means, your task will be to complete and optimize a parallel version of this code.
+
+```scala
+/** Compute the rolling geometric mean of an array.
+  *
+  *  For an array `arr = Arr(x1, x2, x3, ..., xn)` the result is
+  *  `Arr(math.pow(x1, 1), math.pow((x1 + x2), 1.0/2), math.pow((x1 + x2 + x3), 1.0/3), ..., math.pow((x1 + x2 + x3 + ... + xn), 1.0/n))`
+  */
+def rollingGeoMeanParallel(arr: Arr[Int]): Arr[Double] = {
+  // Transform all numbers to roots with degree 1
+  val arr1 = arr.map(x => Root(x, 1))
+  // Compute the rolling geometric mean keeping the root structured
+  val arr2 = arr1.scan(Root(1, 0))((acc, x) => Root(acc.radicand * x.radicand, acc.degree + x.degree))
+  // Transform the roots to Doubles
+  arr2.map(root => root.toDouble)
+  // Drop the extra initial element that was added by the scan
+  arr3.tail
+```
+
+ This implementation has some issues:
+ - It does not use parallelism
+ - Creates two intermediate arrays by calling `map`
+ - Creates an extra intermediate arrays by calling `tail`
+ - Scan returns an extra element we do not need
+
+ We want to parallelize and avoid the creation of the extra arrays.
+ As we are calling a `scan` the natural operations we need are `upsweep` and `downsweep`.
+ It is possible specialize those operations for our problem by letting those operations do the mapping.
+ It is also possible to change those operations to not generate the first element.
+
+We give you a version of `rollingGeoMeanSequential` that partially implements the parallelization using `upsweep` and `downsweep`.
+
+ Your tasks in the exercise will be to:
+ - TASK 1: Implement the parallelization of `upsweep` and `downsweep`
+ - TASK 2: Remove the calls to the `map`
+ - TASK 3: Remove the call to `tail`
+
+ You can get partial points for solving part of the tasks.
+ The order of the tasks is a suggestion, you may do them in any order if that is simpler for you.
+
+Look at the `Lib` trait to find the definitions of functions and classes you can use (or already used).
+In this question we use a `Arr` array class instead of the normal `Array`. You may assume that this class has the same performance characteristics as the normal array. `Arr` provides only a limited set of operations.
diff --git a/previous-exams/2021-midterm/m2/.gitignore b/previous-exams/2021-midterm/m2/.gitignore
new file mode 100644
index 0000000..40937dc
--- /dev/null
+++ b/previous-exams/2021-midterm/m2/.gitignore
@@ -0,0 +1,22 @@
+# General
+*.DS_Store
+*.swp
+*~
+
+# Dotty
+*.class
+*.tasty
+*.hasTasty
+
+# sbt
+target/
+
+# IDE
+.bsp
+.bloop
+.metals
+.vscode
+
+# datasets
+stackoverflow-grading.csv
+wikipedia-grading.dat
diff --git a/previous-exams/2021-midterm/m2/assignment.sbt b/previous-exams/2021-midterm/m2/assignment.sbt
new file mode 100644
index 0000000..da7eb3c
--- /dev/null
+++ b/previous-exams/2021-midterm/m2/assignment.sbt
@@ -0,0 +1,2 @@
+// Student tasks (i.e. submit, packageSubmission)
+enablePlugins(StudentTasks)
diff --git a/previous-exams/2021-midterm/m2/build.sbt b/previous-exams/2021-midterm/m2/build.sbt
new file mode 100644
index 0000000..4a68d9e
--- /dev/null
+++ b/previous-exams/2021-midterm/m2/build.sbt
@@ -0,0 +1,12 @@
+course := "midterm"
+assignment := "m2"
+scalaVersion := "3.0.0-RC1"
+scalacOptions ++= Seq("-language:implicitConversions", "-deprecation")
+
+libraryDependencies += "org.scalameta" %% "munit" % "0.7.22"
+
+val MUnitFramework = new TestFramework("munit.Framework")
+testFrameworks += MUnitFramework
+// Decode Scala names
+testOptions += Tests.Argument(MUnitFramework, "-s")
+testSuite := "m2.M2Suite"
diff --git a/previous-exams/2021-midterm/m2/grading-tests.jar b/previous-exams/2021-midterm/m2/grading-tests.jar
new file mode 100644
index 0000000000000000000000000000000000000000..66ce3fdf704542bc3d07a5b92687caf1fd2b3cf1
GIT binary patch
literal 34633
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

literal 0
HcmV?d00001

diff --git a/previous-exams/2021-midterm/m2/project/FilteringReporterPlugin.scala b/previous-exams/2021-midterm/m2/project/FilteringReporterPlugin.scala
new file mode 100644
index 0000000..2e4fd9a
--- /dev/null
+++ b/previous-exams/2021-midterm/m2/project/FilteringReporterPlugin.scala
@@ -0,0 +1,31 @@
+package sbt // To access the private[sbt] compilerReporter key
+package filteringReporterPlugin
+
+import Keys._
+import ch.epfl.lamp._
+
+object FilteringReporterPlugin extends AutoPlugin {
+  override lazy val projectSettings = Seq(
+    // Turn off warning coming from scalameter that we cannot fix without changing scalameter
+    compilerReporter in (Compile, compile) ~= { reporter => new FilteringReporter(reporter) }
+  )
+}
+
+class FilteringReporter(reporter: xsbti.Reporter) extends xsbti.Reporter {
+
+  def reset(): Unit = reporter.reset()
+  def hasErrors: Boolean = reporter.hasErrors
+  def hasWarnings: Boolean = reporter.hasWarnings
+  def printSummary(): Unit = reporter.printSummary()
+  def problems: Array[xsbti.Problem] = reporter.problems
+
+  def log(problem: xsbti.Problem): Unit = {
+    if (!problem.message.contains("An existential type that came from a Scala-2 classfile cannot be"))
+      reporter.log(problem)
+  }
+
+  def comment(pos: xsbti.Position, msg: String): Unit =
+    reporter.comment(pos, msg)
+
+  override def toString = s"CollectingReporter($reporter)"
+}
diff --git a/previous-exams/2021-midterm/m2/project/MOOCSettings.scala b/previous-exams/2021-midterm/m2/project/MOOCSettings.scala
new file mode 100644
index 0000000..1c40443
--- /dev/null
+++ b/previous-exams/2021-midterm/m2/project/MOOCSettings.scala
@@ -0,0 +1,49 @@
+package ch.epfl.lamp
+
+import sbt._
+import sbt.Keys._
+
+/**
+ * Coursera uses two versions of each assignment. They both have the same assignment key and part id but have
+ * different item ids.
+ *
+ * @param key Assignment key
+ * @param partId Assignment partId
+ * @param itemId Item id of the non premium version
+ * @param premiumItemId Item id of the premium version (`None` if the assignment is optional)
+ */
+case class CourseraId(key: String, partId: String, itemId: String, premiumItemId: Option[String])
+
+/**
+  * Settings shared by all assignments, reused in various tasks.
+  */
+object MOOCSettings extends AutoPlugin {
+
+  override def requires = super.requires && filteringReporterPlugin.FilteringReporterPlugin
+
+  object autoImport {
+    val course = SettingKey[String]("course")
+    val assignment = SettingKey[String]("assignment")
+    val options = SettingKey[Map[String, Map[String, String]]]("options")
+    val courseraId = settingKey[CourseraId]("Coursera-specific information identifying the assignment")
+    val testSuite = settingKey[String]("Fully qualified name of the test suite of this assignment")
+      .withRank(KeyRanks.Invisible)
+    // Convenient alias
+    type CourseraId = ch.epfl.lamp.CourseraId
+    val CourseraId = ch.epfl.lamp.CourseraId
+  }
+
+  import autoImport._
+
+  override val globalSettings: Seq[Def.Setting[_]] = Seq(
+    // supershell is verbose, buggy and useless.
+    useSuperShell := false
+  )
+
+  override val projectSettings: Seq[Def.Setting[_]] = Seq(
+    parallelExecution in Test := false,
+    // Report test result after each test instead of waiting for every test to finish
+    logBuffered in Test := false,
+    name := s"${course.value}-${assignment.value}"
+  )
+}
diff --git a/previous-exams/2021-midterm/m2/project/StudentTasks.scala b/previous-exams/2021-midterm/m2/project/StudentTasks.scala
new file mode 100644
index 0000000..c4669af
--- /dev/null
+++ b/previous-exams/2021-midterm/m2/project/StudentTasks.scala
@@ -0,0 +1,303 @@
+package ch.epfl.lamp
+
+import sbt._
+import Keys._
+
+// import scalaj.http._
+import java.io.{File, FileInputStream, IOException}
+import org.apache.commons.codec.binary.Base64
+// import play.api.libs.json.{Json, JsObject, JsPath}
+import scala.util.{Failure, Success, Try}
+
+/**
+  * Provides tasks for submitting the assignment
+  */
+object StudentTasks extends AutoPlugin {
+
+  override def requires = super.requires && MOOCSettings
+
+  object autoImport {
+    val packageSourcesOnly = TaskKey[File]("packageSourcesOnly", "Package the sources of the project")
+    val packageBinWithoutResources = TaskKey[File]("packageBinWithoutResources", "Like packageBin, but without the resources")
+    val packageSubmissionZip = TaskKey[File]("packageSubmissionZip")
+    val packageSubmission = inputKey[Unit]("package solution as an archive file")
+
+    lazy val Grading = config("grading") extend(Runtime)
+  }
+
+
+  import autoImport._
+  import MOOCSettings.autoImport._
+
+  override lazy val projectSettings = Seq(
+    packageSubmissionSetting,
+    fork := true,
+    connectInput in run := true,
+    outputStrategy := Some(StdoutOutput),
+  ) ++
+    packageSubmissionZipSettings ++
+    inConfig(Grading)(Defaults.testSettings ++ Seq(
+      unmanagedJars += file("grading-tests.jar"),
+
+      definedTests := (definedTests in Test).value,
+      internalDependencyClasspath := (internalDependencyClasspath in Test).value
+    ))
+
+
+  /** **********************************************************
+    * SUBMITTING A SOLUTION TO COURSERA
+    */
+
+  val packageSubmissionZipSettings = Seq(
+    packageSubmissionZip := {
+      val submission = crossTarget.value / "submission.zip"
+      val sources = (packageSourcesOnly in Compile).value
+      val binaries = (packageBinWithoutResources in Compile).value
+      IO.zip(Seq(sources -> "sources.zip", binaries -> "binaries.jar"), submission, None)
+      submission
+    },
+    artifactClassifier in packageSourcesOnly := Some("sources"),
+    artifact in (Compile, packageBinWithoutResources) ~= (art => art.withName(art.name + "-without-resources"))
+  ) ++
+  inConfig(Compile)(
+    Defaults.packageTaskSettings(packageSourcesOnly, Defaults.sourceMappings) ++
+    Defaults.packageTaskSettings(packageBinWithoutResources, Def.task {
+      val relativePaths =
+        (unmanagedResources in Compile).value.flatMap(Path.relativeTo((unmanagedResourceDirectories in Compile).value)(_))
+      (mappings in (Compile, packageBin)).value.filterNot { case (_, path) => relativePaths.contains(path) }
+    })
+  )
+
+  val maxSubmitFileSize = {
+    val mb = 1024 * 1024
+    10 * mb
+  }
+
+  /** Check that the jar exists, isn't empty, isn't crazy big, and can be read
+    * If so, encode jar as base64 so we can send it to Coursera
+    */
+  def prepareJar(jar: File, s: TaskStreams): String = {
+    val errPrefix = "Error submitting assignment jar: "
+    val fileLength = jar.length()
+    if (!jar.exists()) {
+      s.log.error(errPrefix + "jar archive does not exist\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength == 0L) {
+      s.log.error(errPrefix + "jar archive is empty\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength > maxSubmitFileSize) {
+      s.log.error(errPrefix + "jar archive is too big. Allowed size: " +
+        maxSubmitFileSize + " bytes, found " + fileLength + " bytes.\n" +
+        jar.getAbsolutePath)
+      failSubmit()
+    } else {
+      val bytes = new Array[Byte](fileLength.toInt)
+      val sizeRead = try {
+        val is = new FileInputStream(jar)
+        val read = is.read(bytes)
+        is.close()
+        read
+      } catch {
+        case ex: IOException =>
+          s.log.error(errPrefix + "failed to read sources jar archive\n" + ex.toString)
+          failSubmit()
+      }
+      if (sizeRead != bytes.length) {
+        s.log.error(errPrefix + "failed to read the sources jar archive, size read: " + sizeRead)
+        failSubmit()
+      } else encodeBase64(bytes)
+    }
+  }
+
+  /** Task to package solution to a given file path */
+  lazy val packageSubmissionSetting = packageSubmission := {
+    val args: Seq[String] = Def.spaceDelimited("[path]").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val base64Jar = prepareJar(jar, s)
+
+    val path = args.headOption.getOrElse((baseDirectory.value / "submission.jar").absolutePath)
+    scala.tools.nsc.io.File(path).writeAll(base64Jar)
+  }
+
+/*
+  /** Task to submit a solution to coursera */
+  val submit = inputKey[Unit]("submit solution to Coursera")
+  lazy val submitSetting = submit := {
+    // Fail if scalafix linting does not pass.
+    scalafixLinting.value
+
+    val args: Seq[String] = Def.spaceDelimited("<arg>").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val assignmentDetails =
+      courseraId.?.value.getOrElse(throw new MessageOnlyException("This assignment can not be submitted to Coursera because the `courseraId` setting is undefined"))
+    val assignmentKey = assignmentDetails.key
+    val courseName =
+      course.value match {
+        case "capstone" => "scala-capstone"
+        case "bigdata"  => "scala-spark-big-data"
+        case other      => other
+      }
+
+    val partId = assignmentDetails.partId
+    val itemId = assignmentDetails.itemId
+    val premiumItemId = assignmentDetails.premiumItemId
+
+    val (email, secret) = args match {
+      case email :: secret :: Nil =>
+        (email, secret)
+      case _ =>
+        val inputErr =
+          s"""|Invalid input to `submit`. The required syntax for `submit` is:
+              |submit <email-address> <submit-token>
+              |
+              |The submit token is NOT YOUR LOGIN PASSWORD.
+              |It can be obtained from the assignment page:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId
+              |${
+                premiumItemId.fold("") { id =>
+                  s"""or (for premium learners):
+                     |https://www.coursera.org/learn/$courseName/programming/$id
+                   """.stripMargin
+                }
+              }
+          """.stripMargin
+        s.log.error(inputErr)
+        failSubmit()
+    }
+
+    val base64Jar = prepareJar(jar, s)
+    val json =
+      s"""|{
+          |   "assignmentKey":"$assignmentKey",
+          |   "submitterEmail":"$email",
+          |   "secret":"$secret",
+          |   "parts":{
+          |      "$partId":{
+          |         "output":"$base64Jar"
+          |      }
+          |   }
+          |}""".stripMargin
+
+    def postSubmission[T](data: String): Try[HttpResponse[String]] = {
+      val http = Http("https://www.coursera.org/api/onDemandProgrammingScriptSubmissions.v1")
+      val hs = List(
+        ("Cache-Control", "no-cache"),
+        ("Content-Type", "application/json")
+      )
+      s.log.info("Connecting to Coursera...")
+      val response = Try(http.postData(data)
+                         .headers(hs)
+                         .option(HttpOptions.connTimeout(10000)) // scalaj default timeout is only 100ms, changing that to 10s
+                         .asString) // kick off HTTP POST
+      response
+    }
+
+    val connectMsg =
+      s"""|Attempting to submit "${assignment.value}" assignment in "$courseName" course
+          |Using:
+          |- email: $email
+          |- submit token: $secret""".stripMargin
+    s.log.info(connectMsg)
+
+    def reportCourseraResponse(response: HttpResponse[String]): Unit = {
+      val code = response.code
+      val respBody = response.body
+
+       /* Sample JSON response from Coursera
+      {
+        "message": "Invalid email or token.",
+        "details": {
+          "learnerMessage": "Invalid email or token."
+        }
+      }
+      */
+
+      // Success, Coursera responds with 2xx HTTP status code
+      if (response.is2xx) {
+        val successfulSubmitMsg =
+          s"""|Successfully connected to Coursera. (Status $code)
+              |
+                |Assignment submitted successfully!
+              |
+                |You can see how you scored by going to:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId/
+              |${
+            premiumItemId.fold("") { id =>
+              s"""or (for premium learners):
+                 |https://www.coursera.org/learn/$courseName/programming/$id
+                       """.stripMargin
+            }
+          }
+              |and clicking on "My Submission".""".stripMargin
+        s.log.info(successfulSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 4xx HTTP status code (client-side failure)
+      else if (response.is4xx) {
+        val result = Try(Json.parse(respBody)).toOption
+        val learnerMsg = result match {
+          case Some(resp: JsObject) =>
+            (JsPath \ "details" \ "learnerMessage").read[String].reads(resp).get
+          case Some(x) => // shouldn't happen
+            "Could not parse Coursera's response:\n" + x
+          case None =>
+            "Could not parse Coursera's response:\n" + respBody
+        }
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |There was something wrong while attempting to submit.
+              |Coursera says:
+              |$learnerMsg (Status $code)""".stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 5xx HTTP status code (server-side failure)
+      else if (response.is5xx) {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera seems to be unavailable at the moment (Status $code)
+              |Check https://status.coursera.org/ and try again in a few minutes.
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera repsonds with an unexpected status code
+      else {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera replied with an unexpected code (Status $code)
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+    }
+
+    // kick it all off, actually make request
+    postSubmission(json) match {
+      case Success(resp) => reportCourseraResponse(resp)
+      case Failure(e) =>
+        val failedConnectMsg =
+          s"""|Connection to Coursera failed.
+              |There was something wrong while attempting to connect to Coursera.
+              |Check your internet connection.
+              |${e.toString}""".stripMargin
+        s.log.error(failedConnectMsg)
+    }
+
+   }
+*/
+
+  def failSubmit(): Nothing = {
+    sys.error("Submission failed")
+  }
+
+  /**
+    * *****************
+    * DEALING WITH JARS
+    */
+  def encodeBase64(bytes: Array[Byte]): String =
+    new String(Base64.encodeBase64(bytes))
+}
diff --git a/previous-exams/2021-midterm/m2/project/build.properties b/previous-exams/2021-midterm/m2/project/build.properties
new file mode 100644
index 0000000..0b2e09c
--- /dev/null
+++ b/previous-exams/2021-midterm/m2/project/build.properties
@@ -0,0 +1 @@
+sbt.version=1.4.7
diff --git a/previous-exams/2021-midterm/m2/project/buildSettings.sbt b/previous-exams/2021-midterm/m2/project/buildSettings.sbt
new file mode 100644
index 0000000..8fac702
--- /dev/null
+++ b/previous-exams/2021-midterm/m2/project/buildSettings.sbt
@@ -0,0 +1,5 @@
+// Used for Coursera submission (StudentPlugin)
+// libraryDependencies += "org.scalaj" %% "scalaj-http" % "2.4.2"
+// libraryDependencies += "com.typesafe.play" %% "play-json" % "2.7.4"
+// Used for Base64 (StudentPlugin)
+libraryDependencies += "commons-codec" % "commons-codec" % "1.10"
diff --git a/previous-exams/2021-midterm/m2/project/plugins.sbt b/previous-exams/2021-midterm/m2/project/plugins.sbt
new file mode 100644
index 0000000..021c019
--- /dev/null
+++ b/previous-exams/2021-midterm/m2/project/plugins.sbt
@@ -0,0 +1,2 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.5.3")
diff --git a/previous-exams/2021-midterm/m2/src/main/scala/m2/Lib.scala b/previous-exams/2021-midterm/m2/src/main/scala/m2/Lib.scala
new file mode 100644
index 0000000..9f1aff5
--- /dev/null
+++ b/previous-exams/2021-midterm/m2/src/main/scala/m2/Lib.scala
@@ -0,0 +1,60 @@
+package m2
+
+////////////////////////////////////////
+// NO NEED TO MODIFY THIS SOURCE FILE //
+////////////////////////////////////////
+
+trait Lib {
+
+  /** If an array has `n` elements and `n < THRESHOLD`, then it should be processed sequentially */
+  final val THRESHOLD: Int = 33
+
+  /** Compute the two values in parallel
+   *
+   *  Note: Most tests just compute those two sequentially to make any bug simpler to debug
+   */
+  def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2)
+
+  /** A limited array. It only contains the required operations for this exercise. */
+  trait Arr[T] {
+    /** Get the i-th element of the array (0-based) */
+    def apply(i: Int): T
+    /** Update the i-th element of the array with the given value (0-based) */
+    def update(i: Int, x: T): Unit
+    /** Number of elements in this array */
+    def length: Int
+    /** Create a copy of this array without the first element */
+    def tail: Arr[T]
+    /** Create a copy of this array by mapping all the elements with the given function */
+    def map[U](f: T => U): Arr[U]
+  }
+
+  object Arr {
+    /** Create an array with the given elements */
+    def apply[T](xs: T*): Arr[T] = {
+      val arr: Arr[T] = Arr.ofLength(xs.length)
+      for i <- 0 until xs.length do arr(i) = xs(i)
+      arr
+    }
+
+    /** Create an array with the given length. All elements are initialized to `null`. */
+    def ofLength[T](n: Int): Arr[T] =
+      newArrOfLength(n)
+
+  }
+
+  /** Create an array with the given length. All elements are initialized to `null`. */
+  def newArrOfLength[T](n: Int): Arr[T]
+
+  /** A number representing `radicand^(1.0/degree)` */
+  case class Root(radicand: Int, degree: Int) {
+    def toDouble: Double = scala.math.pow(radicand, 1.0/degree)
+  }
+
+  /** Tree result of an upsweep operation. Specialized for `Root` results. */
+  trait TreeRes { val res: Root }
+  /** Leaf result of an upsweep operation. Specialized for `Root` results. */
+  case class Leaf(from: Int, to: Int, res: Root) extends TreeRes
+  /** Tree node result of an upsweep operation. Specialized for `Root` results. */
+  case class Node(left: TreeRes, res: Root, right: TreeRes) extends TreeRes
+}
diff --git a/previous-exams/2021-midterm/m2/src/main/scala/m2/M2.scala b/previous-exams/2021-midterm/m2/src/main/scala/m2/M2.scala
new file mode 100644
index 0000000..1710998
--- /dev/null
+++ b/previous-exams/2021-midterm/m2/src/main/scala/m2/M2.scala
@@ -0,0 +1,75 @@
+package m2
+
+
+trait M2 extends Lib {
+  // Functions and classes of Lib can be used in here
+
+  /** Compute the rolling geometric mean of an array.
+   *
+   *  For an array `arr = Arr(x1, x2, x3, ..., xn)` the result is
+   *  `Arr(math.pow(x1, 1), math.pow((x1 + x2), 1.0/2), math.pow((x1 + x2 + x3), 1.0/3), ..., math.pow((x1 + x2 + x3 + ... + xn), 1.0/n))`
+   */
+  def rollingGeoMeanParallel(arr: Arr[Int]): Arr[Double] = {
+    if (arr.length == 0) return Arr.ofLength(0)
+
+    val out: Arr[Double] = Arr.ofLength(arr.length)
+    val tree = upsweep(arr, 0, arr.length)
+    downsweep(arr, Root(1, 0), tree, out)
+    out
+  }
+
+  // No need to modify this
+  def scanOp(acc: Root, x: Root) =
+    Root(acc.radicand * x.radicand, acc.degree + x.degree)
+
+
+  def upsweep(input: Arr[Int], from: Int, to: Int): TreeRes = {
+    if (to - from < THRESHOLD)
+      Leaf(from, to, reduceSequential(input, from + 1, to, Root(input(from), 1)))
+    else {
+      val mid = from + (to - from)/2
+      val (tL, tR) = parallel(
+        upsweep(input, from, mid),
+        upsweep(input, mid, to)
+      )
+      Node(tL, scanOp(tL.res, tR.res), tR)
+    }
+  }
+
+
+  def downsweep(input: Arr[Int], a0: Root, tree: TreeRes, output: Arr[Double]): Unit = {
+    tree match {
+      case Node(left, _, right) =>
+        parallel(
+          downsweep(input, a0, left, output),
+          downsweep(input, scanOp(a0, left.res), right, output)
+        )
+      case Leaf(from, to, _) =>
+        downsweepSequential(input, from, to, a0, output)
+    }
+  }
+
+
+  def downsweepSequential(input: Arr[Int], from: Int, to: Int, a0: Root, output: Arr[Double]): Unit = {
+    if (from < to) {
+      var i = from
+      var a = a0
+      while (i < to) {
+        a = scanOp(a, Root(input(i), 1))
+        output(i) = a.toDouble
+        i = i + 1
+      }
+    }
+  }
+
+
+  def reduceSequential(input: Arr[Int], from: Int, to: Int, a0: Root): Root = {
+    var a = a0
+    var i = from
+    while (i < to) {
+      a = scanOp(a, Root(input(i), 1))
+      i = i + 1
+    }
+    a
+  }
+}
diff --git a/previous-exams/2021-midterm/m2/src/test/scala/m2/M2Suite.scala b/previous-exams/2021-midterm/m2/src/test/scala/m2/M2Suite.scala
new file mode 100644
index 0000000..a5b3a44
--- /dev/null
+++ b/previous-exams/2021-midterm/m2/src/test/scala/m2/M2Suite.scala
@@ -0,0 +1,175 @@
+package m2
+
+class M2Suite extends munit.FunSuite {
+
+  test("Rolling geometric mean result test (5pts)") {
+    RollingGeoMeanBasicLogicTest.basicTests()
+    RollingGeoMeanBasicLogicTest.normalTests()
+    RollingGeoMeanBasicLogicTest.largeTests()
+  }
+
+  test("[TASK 1] Rolling geometric mean parallelism test (30pts)") {
+    RollingGeoMeanCallsToParallel.parallelismTest()
+    RollingGeoMeanParallel.basicTests()
+    RollingGeoMeanParallel.normalTests()
+    RollingGeoMeanParallel.largeTests()
+  }
+
+  test("[TASK 2] Rolling geometric mean no `map` test (35pts)") {
+    RollingGeoMeanNoMap.basicTests()
+    RollingGeoMeanNoMap.normalTests()
+    RollingGeoMeanNoMap.largeTests()
+  }
+
+  test("[TASK 3] Rolling geometric mean no `tail` test (30pts)") {
+    RollingGeoMeanNoTail.basicTests()
+    RollingGeoMeanNoTail.normalTests()
+    RollingGeoMeanNoTail.largeTests()
+  }
+
+
+  object RollingGeoMeanBasicLogicTest extends M2 with LibImpl with RollingGeoMeanTest {
+    def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2) = (op1, op2)
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T] = new ArrImpl(arr)
+  }
+
+  object RollingGeoMeanCallsToParallel extends M2 with LibImpl with RollingGeoMeanTest {
+    private var count = 0
+    def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2) =
+      count += 1
+      (op1, op2)
+
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T] = new ArrImpl(arr)
+
+    def parallelismTest() = {
+      assertParallelCount(Arr(), 0)
+      assertParallelCount(Arr(1), 0)
+      assertParallelCount(Arr(1, 2, 3, 4), 0)
+      assertParallelCount(Arr(Array.tabulate(16)(identity): _*), 0)
+      assertParallelCount(Arr(Array.tabulate(32)(identity): _*), 0)
+
+      assertParallelCount(Arr(Array.tabulate(33)(identity): _*), 2)
+      assertParallelCount(Arr(Array.tabulate(64)(identity): _*), 2)
+      assertParallelCount(Arr(Array.tabulate(128)(identity): _*), 6)
+      assertParallelCount(Arr(Array.tabulate(256)(identity): _*), 14)
+      assertParallelCount(Arr(Array.tabulate(1000)(identity): _*), 62)
+      assertParallelCount(Arr(Array.tabulate(1024)(identity): _*), 62)
+    }
+
+    def assertParallelCount(arr: Arr[Int], expected: Int): Unit = {
+      try {
+        count = 0
+        rollingGeoMeanParallel(arr)
+        assert(count == expected, {
+          val extra = if (expected == 0) "" else s" ${expected/2} for the `upsweep` and ${expected/2} for the `downsweep`"
+          s"\n$arr\n\nERROR: Expected $expected instead of $count calls to `parallel(...)` for an array of ${arr.length} elements. Current parallel threshold is $THRESHOLD.$extra"
+        })
+      } finally {
+        count = 0
+      }
+    }
+
+  }
+
+  object RollingGeoMeanNoMap extends M2 with LibImpl with RollingGeoMeanTest {
+    def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2) = (op1, op2)
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T] = new ArrImpl[T](arr) {
+      override def map[U](f: T => U): Arr[U] = throw Exception("Should not call Arr.map")
+    }
+  }
+
+  object RollingGeoMeanNoTail extends M2 with LibImpl with RollingGeoMeanTest {
+    def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2) = (op1, op2)
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T] = new ArrImpl[T](arr) {
+      override def tail: Arr[T] = throw Exception("Should not call Arr.tail")
+    }
+  }
+
+  object RollingGeoMeanParallel extends M2 with LibImpl with RollingGeoMeanTest {
+    import scala.concurrent.duration._
+    val TIMEOUT = Duration(10, SECONDS)
+    def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2) = {
+      import concurrent.ExecutionContext.Implicits.global
+      import scala.concurrent._
+      Await.result(Future(op1).zip(Future(op2)), TIMEOUT) // FIXME not timing-out
+    }
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T] = new ArrImpl(arr)
+  }
+
+  trait LibImpl extends Lib {
+
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T]
+
+    def newArrOfLength[T](n: Int): Arr[T] =
+      newArrFrom(new Array(n))
+
+    class ArrImpl[T](val arr: Array[AnyRef]) extends Arr[T]:
+      def apply(i: Int): T =
+        arr(i).asInstanceOf[T]
+      def update(i: Int, x: T): Unit =
+        arr(i) = x.asInstanceOf[AnyRef]
+      def length: Int =
+        arr.length
+      def map[U](f: T => U): Arr[U] =
+        newArrFrom(arr.map(f.asInstanceOf[AnyRef => AnyRef]))
+      def tail: Arr[T] =
+        newArrFrom(arr.tail)
+      override def toString: String =
+        arr.mkString("Arr(", ", ", ")")
+      override def equals(that: Any): Boolean =
+        that match
+          case that: ArrImpl[_] => Array.equals(arr, that.arr)
+          case _ => false
+  }
+
+  trait RollingGeoMeanTest extends M2 {
+
+    def tabulate[T](n: Int)(f: Int => T): Arr[T] =
+      val arr = Arr.ofLength[T](n)
+      for i <- 0 until n do
+        arr(i) = f(i)
+      arr
+
+    def asSeq(arr: Arr[Double]) =
+      val array = new Array[Double](arr.length)
+      for i <- 0 to (arr.length - 1) do
+        array(i) = arr(i)
+      array.toSeq
+
+    def scanOp_(acc: Root, x: Root) =
+      Root(acc.radicand * x.radicand, acc.degree + x.degree)
+
+    def result(ds: Seq[Int]): Arr[Double] =
+      Arr(ds.map(x => Root(x, 1)).scan(Root(1, 0))(scanOp_).tail.map(_.toDouble): _*)
+
+    def check(input: Seq[Int]) =
+      assertEquals(
+        // .toString calls are a terrible kludge so that NaNs compare equal to eachother...
+        asSeq(rollingGeoMeanParallel(Arr(input: _*))).map(_.toString),
+        asSeq(result(input)).map(_.toString)
+      )
+
+    def basicTests() = {
+      check(Seq())
+      check(Seq(1))
+      check(Seq(1, 2, 3, 4))
+      check(Seq(4, 4, 4, 4))
+    }
+
+    def normalTests() = {
+      check(Seq.tabulate(64)(identity))
+      check(Seq(4, 4, 4, 4))
+      check(Seq(4, 8, 6, 4))
+      check(Seq(4, 3, 2, 1))
+      check(Seq.tabulate(64)(identity).reverse)
+      check(Seq.tabulate(128)(i => 128 - 2*i).reverse)
+    }
+
+    def largeTests() = {
+      check(Seq.tabulate(500)(identity))
+      check(Seq.tabulate(512)(identity))
+      check(Seq.tabulate(1_000)(identity))
+      check(Seq.tabulate(10_000)(identity))
+    }
+  }
+}
diff --git a/previous-exams/2021-midterm/m20.md b/previous-exams/2021-midterm/m20.md
new file mode 100644
index 0000000..59f6c09
--- /dev/null
+++ b/previous-exams/2021-midterm/m20.md
@@ -0,0 +1,97 @@
+Use the following commands to make a fresh clone of your repository:
+
+```
+git clone -b m20 git@gitlab.epfl.ch:lamp/student-repositories-s21/cs206-GASPAR.git m20
+```
+
+## Useful links
+
+  * [A guide to the Scala parallel collections](https://docs.scala-lang.org/overviews/parallel-collections/overview.html)
+  * [The API documentation of the Scala parallel collections](https://www.javadoc.io/doc/org.scala-lang.modules/scala-parallel-collections_2.13/latest/scala/collection/index.html)
+  * [The API documentation of the Scala standard library](https://www.scala-lang.org/files/archive/api/2.13.4)
+  * [The API documentation of the Java standard library](https://docs.oracle.com/en/java/javase/15/docs/api/index.html)
+
+**If you have issues with the IDE, try [reimporting the
+build](https://gitlab.epfl.ch/lamp/cs206/-/blob/master/labs/example-lab.md#ide-features-like-type-on-hover-or-go-to-definition-do-not-work),
+if you still have problems, use `compile` in sbt instead.**
+
+## Exercise
+
+In this question, you will complete the definition of two concurrent data
+structures **without using `synchronized`**: `SeqCount` and `MultiWriterSeqCount`.
+
+## Part 1: SeqCount (defined in `SeqCount.scala`)
+
+An instance of this class stores two integers (initially set to 0), the stored
+values can be updated using `write` and retrieved using `copy`. Only one thread
+at a time is allowed to call `write` but multiple threads can call `copy` at
+once.
+
+Your task in this part is to implement `copy` such that this method never
+returns _partially updated values_, for example given two threads operating
+concurrently on a `SeqCount` `sc`:
+```scala
+// Thread 1
+sc.write(1, 2)
+```
+```scala
+// Thread 2
+val result = sc.copy()
+```
+`result` must either be `(0, 0)` (since the initial values are 0) or `(1, 2)`,
+but it must not be `(1, 0)`, `(0, 2)` or any other value.
+
+To successfully implement this method you will need to use `generation`: this
+method returns the current value of a volatile variable which is initially set
+to 0, gets incremented by one at the beginning of `write`, and incremented by
+one again at the end of `write`.
+
+**You are not allowed to use `synchronized` or directly call any of
+`myGeneration`, `myX` or `myY` (use the pre-defined getters and setters
+instead).**
+
+Hints:
+- Remember that a write to a volatile field _happens-before_ every subsequent
+  read of that field.
+- `generation` will always be even when a write has completed and always
+odd when a write is in progress.
+- `copy` can be implemented as a tail-recursive method.
+
+## Part 2: MultiWriterSeqCount (defined in `MultiWriterSeqCount.scala`)
+
+Like `SeqCount`, this class stores two integers updated using `write` and
+retrieved using `copy`, but unlike `SeqCount` multiple threads are allowed to
+call `write` at the same time: these writes will all succeed but they are
+allowed to complete in any order, for example given three threads operating
+concurrently on a `MultiWriterSeqCount` `msc`:
+```scala
+// Thread 1
+msc.write(1, 2)
+```
+```scala
+// Thread 2
+msc.write(10, 20)
+```
+```scala
+// Thread 3
+val result = msc.copy()
+```
+`result` must either be `(0, 0)`, `(1, 2)` or `(10, 20)`.
+
+In this class, the generation is stored in an atomic variable instead of a
+volatible field therefore it's important to note that:
+- a `set` on an atomic variable _happens-before_ every subsequent `get` of that
+  variable.
+- A call to `compareAndSet` both gets and set an atomic variable.
+
+Your task in this part is to implement both `copy` and `write`.
+
+**You are not allowed to use `synchronized` or directly call any of
+`myGeneration`, `myX` or `myY` (use the pre-defined getters and setters
+instead).**
+
+Hints:
+- you should be able to just copy-paste the implementation of `copy` you
+  implemented in Part 1
+- you will need to make use of `compareAndSetGeneration` in `write`
+- `write` can be implemented as a tail-recursive method.
diff --git a/previous-exams/2021-midterm/m20/.gitignore b/previous-exams/2021-midterm/m20/.gitignore
new file mode 100644
index 0000000..40937dc
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/.gitignore
@@ -0,0 +1,22 @@
+# General
+*.DS_Store
+*.swp
+*~
+
+# Dotty
+*.class
+*.tasty
+*.hasTasty
+
+# sbt
+target/
+
+# IDE
+.bsp
+.bloop
+.metals
+.vscode
+
+# datasets
+stackoverflow-grading.csv
+wikipedia-grading.dat
diff --git a/previous-exams/2021-midterm/m20/assignment.sbt b/previous-exams/2021-midterm/m20/assignment.sbt
new file mode 100644
index 0000000..da7eb3c
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/assignment.sbt
@@ -0,0 +1,2 @@
+// Student tasks (i.e. submit, packageSubmission)
+enablePlugins(StudentTasks)
diff --git a/previous-exams/2021-midterm/m20/build.sbt b/previous-exams/2021-midterm/m20/build.sbt
new file mode 100644
index 0000000..8cd8c7a
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/build.sbt
@@ -0,0 +1,12 @@
+course := "midterm"
+assignment := "m20"
+scalaVersion := "3.0.0-RC1"
+scalacOptions ++= Seq("-language:implicitConversions", "-deprecation")
+
+libraryDependencies += "org.scalameta" %% "munit" % "0.7.22"
+
+val MUnitFramework = new TestFramework("munit.Framework")
+testFrameworks += MUnitFramework
+// Decode Scala names
+testOptions += Tests.Argument(MUnitFramework, "-s")
+testSuite := "m20.M20Suite"
diff --git a/previous-exams/2021-midterm/m20/grading-tests.jar b/previous-exams/2021-midterm/m20/grading-tests.jar
new file mode 100644
index 0000000000000000000000000000000000000000..b6bb8fe06564ac4c2bec2396c5dfe7caa3b51e44
GIT binary patch
literal 131660
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
z%0A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
PJ(3Izt6nfNFfafB9K_Nb

literal 0
HcmV?d00001

diff --git a/previous-exams/2021-midterm/m20/project/FilteringReporterPlugin.scala b/previous-exams/2021-midterm/m20/project/FilteringReporterPlugin.scala
new file mode 100644
index 0000000..2e4fd9a
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/project/FilteringReporterPlugin.scala
@@ -0,0 +1,31 @@
+package sbt // To access the private[sbt] compilerReporter key
+package filteringReporterPlugin
+
+import Keys._
+import ch.epfl.lamp._
+
+object FilteringReporterPlugin extends AutoPlugin {
+  override lazy val projectSettings = Seq(
+    // Turn off warning coming from scalameter that we cannot fix without changing scalameter
+    compilerReporter in (Compile, compile) ~= { reporter => new FilteringReporter(reporter) }
+  )
+}
+
+class FilteringReporter(reporter: xsbti.Reporter) extends xsbti.Reporter {
+
+  def reset(): Unit = reporter.reset()
+  def hasErrors: Boolean = reporter.hasErrors
+  def hasWarnings: Boolean = reporter.hasWarnings
+  def printSummary(): Unit = reporter.printSummary()
+  def problems: Array[xsbti.Problem] = reporter.problems
+
+  def log(problem: xsbti.Problem): Unit = {
+    if (!problem.message.contains("An existential type that came from a Scala-2 classfile cannot be"))
+      reporter.log(problem)
+  }
+
+  def comment(pos: xsbti.Position, msg: String): Unit =
+    reporter.comment(pos, msg)
+
+  override def toString = s"CollectingReporter($reporter)"
+}
diff --git a/previous-exams/2021-midterm/m20/project/MOOCSettings.scala b/previous-exams/2021-midterm/m20/project/MOOCSettings.scala
new file mode 100644
index 0000000..1c40443
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/project/MOOCSettings.scala
@@ -0,0 +1,49 @@
+package ch.epfl.lamp
+
+import sbt._
+import sbt.Keys._
+
+/**
+ * Coursera uses two versions of each assignment. They both have the same assignment key and part id but have
+ * different item ids.
+ *
+ * @param key Assignment key
+ * @param partId Assignment partId
+ * @param itemId Item id of the non premium version
+ * @param premiumItemId Item id of the premium version (`None` if the assignment is optional)
+ */
+case class CourseraId(key: String, partId: String, itemId: String, premiumItemId: Option[String])
+
+/**
+  * Settings shared by all assignments, reused in various tasks.
+  */
+object MOOCSettings extends AutoPlugin {
+
+  override def requires = super.requires && filteringReporterPlugin.FilteringReporterPlugin
+
+  object autoImport {
+    val course = SettingKey[String]("course")
+    val assignment = SettingKey[String]("assignment")
+    val options = SettingKey[Map[String, Map[String, String]]]("options")
+    val courseraId = settingKey[CourseraId]("Coursera-specific information identifying the assignment")
+    val testSuite = settingKey[String]("Fully qualified name of the test suite of this assignment")
+      .withRank(KeyRanks.Invisible)
+    // Convenient alias
+    type CourseraId = ch.epfl.lamp.CourseraId
+    val CourseraId = ch.epfl.lamp.CourseraId
+  }
+
+  import autoImport._
+
+  override val globalSettings: Seq[Def.Setting[_]] = Seq(
+    // supershell is verbose, buggy and useless.
+    useSuperShell := false
+  )
+
+  override val projectSettings: Seq[Def.Setting[_]] = Seq(
+    parallelExecution in Test := false,
+    // Report test result after each test instead of waiting for every test to finish
+    logBuffered in Test := false,
+    name := s"${course.value}-${assignment.value}"
+  )
+}
diff --git a/previous-exams/2021-midterm/m20/project/StudentTasks.scala b/previous-exams/2021-midterm/m20/project/StudentTasks.scala
new file mode 100644
index 0000000..c4669af
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/project/StudentTasks.scala
@@ -0,0 +1,303 @@
+package ch.epfl.lamp
+
+import sbt._
+import Keys._
+
+// import scalaj.http._
+import java.io.{File, FileInputStream, IOException}
+import org.apache.commons.codec.binary.Base64
+// import play.api.libs.json.{Json, JsObject, JsPath}
+import scala.util.{Failure, Success, Try}
+
+/**
+  * Provides tasks for submitting the assignment
+  */
+object StudentTasks extends AutoPlugin {
+
+  override def requires = super.requires && MOOCSettings
+
+  object autoImport {
+    val packageSourcesOnly = TaskKey[File]("packageSourcesOnly", "Package the sources of the project")
+    val packageBinWithoutResources = TaskKey[File]("packageBinWithoutResources", "Like packageBin, but without the resources")
+    val packageSubmissionZip = TaskKey[File]("packageSubmissionZip")
+    val packageSubmission = inputKey[Unit]("package solution as an archive file")
+
+    lazy val Grading = config("grading") extend(Runtime)
+  }
+
+
+  import autoImport._
+  import MOOCSettings.autoImport._
+
+  override lazy val projectSettings = Seq(
+    packageSubmissionSetting,
+    fork := true,
+    connectInput in run := true,
+    outputStrategy := Some(StdoutOutput),
+  ) ++
+    packageSubmissionZipSettings ++
+    inConfig(Grading)(Defaults.testSettings ++ Seq(
+      unmanagedJars += file("grading-tests.jar"),
+
+      definedTests := (definedTests in Test).value,
+      internalDependencyClasspath := (internalDependencyClasspath in Test).value
+    ))
+
+
+  /** **********************************************************
+    * SUBMITTING A SOLUTION TO COURSERA
+    */
+
+  val packageSubmissionZipSettings = Seq(
+    packageSubmissionZip := {
+      val submission = crossTarget.value / "submission.zip"
+      val sources = (packageSourcesOnly in Compile).value
+      val binaries = (packageBinWithoutResources in Compile).value
+      IO.zip(Seq(sources -> "sources.zip", binaries -> "binaries.jar"), submission, None)
+      submission
+    },
+    artifactClassifier in packageSourcesOnly := Some("sources"),
+    artifact in (Compile, packageBinWithoutResources) ~= (art => art.withName(art.name + "-without-resources"))
+  ) ++
+  inConfig(Compile)(
+    Defaults.packageTaskSettings(packageSourcesOnly, Defaults.sourceMappings) ++
+    Defaults.packageTaskSettings(packageBinWithoutResources, Def.task {
+      val relativePaths =
+        (unmanagedResources in Compile).value.flatMap(Path.relativeTo((unmanagedResourceDirectories in Compile).value)(_))
+      (mappings in (Compile, packageBin)).value.filterNot { case (_, path) => relativePaths.contains(path) }
+    })
+  )
+
+  val maxSubmitFileSize = {
+    val mb = 1024 * 1024
+    10 * mb
+  }
+
+  /** Check that the jar exists, isn't empty, isn't crazy big, and can be read
+    * If so, encode jar as base64 so we can send it to Coursera
+    */
+  def prepareJar(jar: File, s: TaskStreams): String = {
+    val errPrefix = "Error submitting assignment jar: "
+    val fileLength = jar.length()
+    if (!jar.exists()) {
+      s.log.error(errPrefix + "jar archive does not exist\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength == 0L) {
+      s.log.error(errPrefix + "jar archive is empty\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength > maxSubmitFileSize) {
+      s.log.error(errPrefix + "jar archive is too big. Allowed size: " +
+        maxSubmitFileSize + " bytes, found " + fileLength + " bytes.\n" +
+        jar.getAbsolutePath)
+      failSubmit()
+    } else {
+      val bytes = new Array[Byte](fileLength.toInt)
+      val sizeRead = try {
+        val is = new FileInputStream(jar)
+        val read = is.read(bytes)
+        is.close()
+        read
+      } catch {
+        case ex: IOException =>
+          s.log.error(errPrefix + "failed to read sources jar archive\n" + ex.toString)
+          failSubmit()
+      }
+      if (sizeRead != bytes.length) {
+        s.log.error(errPrefix + "failed to read the sources jar archive, size read: " + sizeRead)
+        failSubmit()
+      } else encodeBase64(bytes)
+    }
+  }
+
+  /** Task to package solution to a given file path */
+  lazy val packageSubmissionSetting = packageSubmission := {
+    val args: Seq[String] = Def.spaceDelimited("[path]").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val base64Jar = prepareJar(jar, s)
+
+    val path = args.headOption.getOrElse((baseDirectory.value / "submission.jar").absolutePath)
+    scala.tools.nsc.io.File(path).writeAll(base64Jar)
+  }
+
+/*
+  /** Task to submit a solution to coursera */
+  val submit = inputKey[Unit]("submit solution to Coursera")
+  lazy val submitSetting = submit := {
+    // Fail if scalafix linting does not pass.
+    scalafixLinting.value
+
+    val args: Seq[String] = Def.spaceDelimited("<arg>").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val assignmentDetails =
+      courseraId.?.value.getOrElse(throw new MessageOnlyException("This assignment can not be submitted to Coursera because the `courseraId` setting is undefined"))
+    val assignmentKey = assignmentDetails.key
+    val courseName =
+      course.value match {
+        case "capstone" => "scala-capstone"
+        case "bigdata"  => "scala-spark-big-data"
+        case other      => other
+      }
+
+    val partId = assignmentDetails.partId
+    val itemId = assignmentDetails.itemId
+    val premiumItemId = assignmentDetails.premiumItemId
+
+    val (email, secret) = args match {
+      case email :: secret :: Nil =>
+        (email, secret)
+      case _ =>
+        val inputErr =
+          s"""|Invalid input to `submit`. The required syntax for `submit` is:
+              |submit <email-address> <submit-token>
+              |
+              |The submit token is NOT YOUR LOGIN PASSWORD.
+              |It can be obtained from the assignment page:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId
+              |${
+                premiumItemId.fold("") { id =>
+                  s"""or (for premium learners):
+                     |https://www.coursera.org/learn/$courseName/programming/$id
+                   """.stripMargin
+                }
+              }
+          """.stripMargin
+        s.log.error(inputErr)
+        failSubmit()
+    }
+
+    val base64Jar = prepareJar(jar, s)
+    val json =
+      s"""|{
+          |   "assignmentKey":"$assignmentKey",
+          |   "submitterEmail":"$email",
+          |   "secret":"$secret",
+          |   "parts":{
+          |      "$partId":{
+          |         "output":"$base64Jar"
+          |      }
+          |   }
+          |}""".stripMargin
+
+    def postSubmission[T](data: String): Try[HttpResponse[String]] = {
+      val http = Http("https://www.coursera.org/api/onDemandProgrammingScriptSubmissions.v1")
+      val hs = List(
+        ("Cache-Control", "no-cache"),
+        ("Content-Type", "application/json")
+      )
+      s.log.info("Connecting to Coursera...")
+      val response = Try(http.postData(data)
+                         .headers(hs)
+                         .option(HttpOptions.connTimeout(10000)) // scalaj default timeout is only 100ms, changing that to 10s
+                         .asString) // kick off HTTP POST
+      response
+    }
+
+    val connectMsg =
+      s"""|Attempting to submit "${assignment.value}" assignment in "$courseName" course
+          |Using:
+          |- email: $email
+          |- submit token: $secret""".stripMargin
+    s.log.info(connectMsg)
+
+    def reportCourseraResponse(response: HttpResponse[String]): Unit = {
+      val code = response.code
+      val respBody = response.body
+
+       /* Sample JSON response from Coursera
+      {
+        "message": "Invalid email or token.",
+        "details": {
+          "learnerMessage": "Invalid email or token."
+        }
+      }
+      */
+
+      // Success, Coursera responds with 2xx HTTP status code
+      if (response.is2xx) {
+        val successfulSubmitMsg =
+          s"""|Successfully connected to Coursera. (Status $code)
+              |
+                |Assignment submitted successfully!
+              |
+                |You can see how you scored by going to:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId/
+              |${
+            premiumItemId.fold("") { id =>
+              s"""or (for premium learners):
+                 |https://www.coursera.org/learn/$courseName/programming/$id
+                       """.stripMargin
+            }
+          }
+              |and clicking on "My Submission".""".stripMargin
+        s.log.info(successfulSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 4xx HTTP status code (client-side failure)
+      else if (response.is4xx) {
+        val result = Try(Json.parse(respBody)).toOption
+        val learnerMsg = result match {
+          case Some(resp: JsObject) =>
+            (JsPath \ "details" \ "learnerMessage").read[String].reads(resp).get
+          case Some(x) => // shouldn't happen
+            "Could not parse Coursera's response:\n" + x
+          case None =>
+            "Could not parse Coursera's response:\n" + respBody
+        }
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |There was something wrong while attempting to submit.
+              |Coursera says:
+              |$learnerMsg (Status $code)""".stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 5xx HTTP status code (server-side failure)
+      else if (response.is5xx) {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera seems to be unavailable at the moment (Status $code)
+              |Check https://status.coursera.org/ and try again in a few minutes.
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera repsonds with an unexpected status code
+      else {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera replied with an unexpected code (Status $code)
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+    }
+
+    // kick it all off, actually make request
+    postSubmission(json) match {
+      case Success(resp) => reportCourseraResponse(resp)
+      case Failure(e) =>
+        val failedConnectMsg =
+          s"""|Connection to Coursera failed.
+              |There was something wrong while attempting to connect to Coursera.
+              |Check your internet connection.
+              |${e.toString}""".stripMargin
+        s.log.error(failedConnectMsg)
+    }
+
+   }
+*/
+
+  def failSubmit(): Nothing = {
+    sys.error("Submission failed")
+  }
+
+  /**
+    * *****************
+    * DEALING WITH JARS
+    */
+  def encodeBase64(bytes: Array[Byte]): String =
+    new String(Base64.encodeBase64(bytes))
+}
diff --git a/previous-exams/2021-midterm/m20/project/build.properties b/previous-exams/2021-midterm/m20/project/build.properties
new file mode 100644
index 0000000..0b2e09c
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/project/build.properties
@@ -0,0 +1 @@
+sbt.version=1.4.7
diff --git a/previous-exams/2021-midterm/m20/project/buildSettings.sbt b/previous-exams/2021-midterm/m20/project/buildSettings.sbt
new file mode 100644
index 0000000..8fac702
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/project/buildSettings.sbt
@@ -0,0 +1,5 @@
+// Used for Coursera submission (StudentPlugin)
+// libraryDependencies += "org.scalaj" %% "scalaj-http" % "2.4.2"
+// libraryDependencies += "com.typesafe.play" %% "play-json" % "2.7.4"
+// Used for Base64 (StudentPlugin)
+libraryDependencies += "commons-codec" % "commons-codec" % "1.10"
diff --git a/previous-exams/2021-midterm/m20/project/plugins.sbt b/previous-exams/2021-midterm/m20/project/plugins.sbt
new file mode 100644
index 0000000..021c019
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/project/plugins.sbt
@@ -0,0 +1,2 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.5.3")
diff --git a/previous-exams/2021-midterm/m20/src/main/scala/m20/MultiWriterSeqCount.scala b/previous-exams/2021-midterm/m20/src/main/scala/m20/MultiWriterSeqCount.scala
new file mode 100644
index 0000000..89df220
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/src/main/scala/m20/MultiWriterSeqCount.scala
@@ -0,0 +1,66 @@
+package m20
+
+import instrumentation._
+
+import scala.annotation.tailrec
+
+/** Multi-writer, multi-reader data structure containing a pair of integers. */
+class MultiWriterSeqCount extends Monitor:
+  /** Do not directly use this variable, use `generation`, `setGeneration` and
+   *  `compareAndSetGeneration` instead.
+   */
+  protected val myGeneration: AbstractAtomicVariable[Int] = new AtomicVariable(0)
+  protected def generation: Int = myGeneration.get
+  protected def setGeneration(newGeneration: Int): Unit =
+    myGeneration.set(newGeneration)
+  protected def compareAndSetGeneration(expected: Int, newValue: Int): Boolean =
+    myGeneration.compareAndSet(expected, newValue)
+
+  /** Do not directly use this variable, use `x` and `setX` instead. */
+  protected var myX: Int = 0
+  protected def x: Int = myX
+  protected def setX(newX: Int): Unit =
+    myX = newX
+
+  /** Do not directly use this variable, use `y` and `setY` instead. */
+  protected var myY: Int = 0
+  protected def y: Int = myY
+  protected def setY(newY: Int): Unit =
+    myY = newY
+
+  /** Write new values into this data structure.
+   *  This method is always safe to call.
+   *  The implementation of this method is not allowed to call `synchronized`.
+   */
+
+  @tailrec
+  final def write(newX: Int, newY: Int): Unit =
+    val old = generation
+    if old % 2 != 0 then
+      write(newX, newY)
+    else
+      if !compareAndSetGeneration(old, old + 1) then
+        write(newX, newY)
+      else
+        setX(newX)
+        setY(newY)
+        setGeneration(old + 2)
+
+  /** Copy the values previously written into this data structure into a tuple.
+   *  This method is always safe to call.
+   *  The implementation of this method is not allowed to call `synchronized`.
+   */
+
+  @tailrec
+  final def copy(): (Int, Int) =
+    val old = generation
+    if old % 2 != 0 then
+      copy()
+    else
+      val result = (x, y)
+      if generation != old then
+        copy()
+      else
+        result
+
+end MultiWriterSeqCount
diff --git a/previous-exams/2021-midterm/m20/src/main/scala/m20/SeqCount.scala b/previous-exams/2021-midterm/m20/src/main/scala/m20/SeqCount.scala
new file mode 100644
index 0000000..ff95a2c
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/src/main/scala/m20/SeqCount.scala
@@ -0,0 +1,53 @@
+package m20
+
+import instrumentation._
+
+import scala.annotation.tailrec
+
+/** Single-writer, multi-reader data structure containing a pair of integers. */
+class SeqCount extends Monitor:
+  /** Do not directly use this variable, use `generation` and `setGeneration` instead. */
+  @volatile protected var myGeneration: Int = 0
+  protected def generation: Int = myGeneration
+  protected def setGeneration(newGeneration: Int): Unit =
+    myGeneration = newGeneration
+
+  /** Do not directly use this variable, use `x` and `setX` instead. */
+  protected var myX: Int = 0
+  protected def x: Int = myX
+  protected def setX(newX: Int): Unit =
+    myX = newX
+
+  /** Do not directly use this variable, use `y` and `setY` instead. */
+  protected var myY: Int = 0
+  protected def y: Int = myY
+  protected def setY(newY: Int): Unit =
+    myY = newY
+
+  /** Write new values into this data structure.
+   *  This method must only be called from one thread at a time.
+   */
+  final def write(newX: Int, newY: Int): Unit =
+    setGeneration(generation + 1)
+    setX(newX)
+    setY(newY)
+    setGeneration(generation + 1)
+
+  /** Copy the values previously written into this data structure into a tuple.
+   *  This method is always safe to call.
+   *  The implementation of this method is not allowed to call `synchronized`.
+   */
+
+  @tailrec
+  final def copy(): (Int, Int) =
+    val old = generation
+    if old % 2 != 0 then
+      copy()
+    else
+      val result = (x, y)
+      if generation != old then
+        copy()
+      else
+        result
+
+end SeqCount
diff --git a/previous-exams/2021-midterm/m20/src/main/scala/m20/instrumentation/AtomicVariable.scala b/previous-exams/2021-midterm/m20/src/main/scala/m20/instrumentation/AtomicVariable.scala
new file mode 100644
index 0000000..b966283
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/src/main/scala/m20/instrumentation/AtomicVariable.scala
@@ -0,0 +1,28 @@
+package m20.instrumentation
+
+import java.util.concurrent.atomic._
+
+abstract class AbstractAtomicVariable[T] {
+  def get: T
+  def set(value: T): Unit
+  def compareAndSet(expect: T, newval: T) : Boolean
+}
+
+class AtomicVariable[T](initial: T) extends AbstractAtomicVariable[T] {
+
+  private val atomic = new AtomicReference[T](initial)
+
+  override def get: T = atomic.get()
+
+  override def set(value: T): Unit = atomic.set(value)
+
+  override def compareAndSet(expected: T, newValue: T): Boolean = {
+    val current = atomic.get
+    if (current == expected) {
+      atomic.compareAndSet(current, newValue)
+    }
+    else {
+      false
+    }
+  }
+}
diff --git a/previous-exams/2021-midterm/m20/src/main/scala/m20/instrumentation/Monitor.scala b/previous-exams/2021-midterm/m20/src/main/scala/m20/instrumentation/Monitor.scala
new file mode 100644
index 0000000..bf844ac
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/src/main/scala/m20/instrumentation/Monitor.scala
@@ -0,0 +1,23 @@
+package m20.instrumentation
+
+class Dummy
+
+trait Monitor {
+  implicit val dummy: Dummy = new Dummy
+
+  def wait()(implicit i: Dummy) = waitDefault()
+
+  def synchronized[T](e: => T)(implicit i: Dummy) = synchronizedDefault(e)
+
+  def notify()(implicit i: Dummy) = notifyDefault()
+
+  def notifyAll()(implicit i: Dummy) = notifyAllDefault()
+
+  private val lock = new AnyRef
+
+  // Can be overriden.
+  def waitDefault(): Unit = lock.wait()
+  def synchronizedDefault[T](toExecute: =>T): T = lock.synchronized(toExecute)
+  def notifyDefault(): Unit = lock.notify()
+  def notifyAllDefault(): Unit = lock.notifyAll()
+}
diff --git a/previous-exams/2021-midterm/m20/src/test/scala/m20/TestSuite.scala b/previous-exams/2021-midterm/m20/src/test/scala/m20/TestSuite.scala
new file mode 100644
index 0000000..14e707c
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/src/test/scala/m20/TestSuite.scala
@@ -0,0 +1,122 @@
+package m20
+
+import scala.concurrent._
+import scala.concurrent.duration._
+import scala.collection.mutable.HashMap
+import scala.util.Random
+import instrumentation._
+import instrumentation.TestHelper._
+import instrumentation.TestUtils._
+
+enum ThreadResult:
+  case WriteError(error: String)
+  case WriteSuccess
+  case Read(result: (Int, Int))
+import ThreadResult._
+
+class M20Suite extends munit.FunSuite:
+  /** If at least one thread resulted in an error,
+   *  return `(false, errorMessage)` otherwise return `(true, "")`.
+   */
+  def processResults(results: List[ThreadResult]): (Boolean, String) =
+    val success = (true, "")
+    results.foldLeft(success) {
+      case (acc @ (false, _), _) =>
+        // Report the first error found
+        acc
+      case (_, WriteError(error)) =>
+        (false, error)
+      case (_, Read((x, y))) if x + 1 != y =>
+        (false, s"Read ($x, $y) but expected y to be ${x + 1}")
+      case (_, _: Read | WriteSuccess) =>
+        success
+    }
+
+  def randomList(length: Int): List[Int] =
+    List.fill(length)(Random.nextInt)
+
+  test("SeqCount: single-threaded write and copy (1 pts)") {
+    val sc = new SeqCount
+    randomList(100).lazyZip(randomList(100)).foreach { (x, y) =>
+      sc.write(x, y)
+      assertEquals(sc.copy(), (x, y))
+    }
+  }
+
+  test("SeqCount: one write thread, two copy threads (4 pts)") {
+    testManySchedules(3, sched =>
+      val sc = new SchedulableSeqCount(sched)
+      // Invariant in this test: y == x + 1
+      sc.write(0, 1)
+
+      val randomValues = randomList(length = 5)
+
+      def writeThread(): ThreadResult =
+        randomValues.foldLeft(WriteSuccess) {
+          case (res: WriteError, _) =>
+            // Report the first error found
+            res
+          case (_, i) =>
+            sc.write(i, i + 1)
+            val writtenValues = (i, i + 1)
+            val readBack = sc.copy()
+            if writtenValues != readBack then
+              WriteError(s"Wrote $writtenValues but read back $readBack")
+            else
+              WriteSuccess
+        }
+
+      def copyThread(): ThreadResult =
+        Read(sc.copy())
+
+      val threads = List(
+        () => writeThread(),
+        () => copyThread(),
+        () => copyThread()
+      )
+
+      (threads, results => processResults(results.asInstanceOf[List[ThreadResult]]))
+    )
+  }
+
+  test("MultiWriterSeqCount: single-threaded write and copy (1 pts)") {
+    val sc = new MultiWriterSeqCount
+    randomList(100).lazyZip(randomList(100)).foreach { (x, y) =>
+      sc.write(x, y)
+      assertEquals(sc.copy(), (x, y))
+    }
+  }
+
+  test("MultiWriterSeqCount: two write threads, two copy threads (4 pts)") {
+    testManySchedules(4, sched =>
+      val msc = new SchedulableMultiWriterSeqCount(sched)
+      // Invariant in this test: y == x + 1
+      msc.write(0, 1)
+
+      val randomValues = randomList(length = 5)
+
+      def writeThread(): ThreadResult =
+        randomValues.foreach(i => msc.write(i, i + 1))
+        // Unlke in the SeqCount test, we do not verify that we can read back
+        // the values we wrote, because the other writer thread might have
+        // overwritten them already.
+        WriteSuccess
+
+      def copyThread(): ThreadResult =
+        Read(msc.copy())
+
+      val threads = List(
+        () => writeThread(),
+        () => writeThread(),
+        () => copyThread(),
+        () => copyThread()
+      )
+
+      (threads, results => processResults(results.asInstanceOf[List[ThreadResult]]))
+    )
+  }
+
+  import scala.concurrent.duration._
+  override val munitTimeout = 200.seconds
+end M20Suite
+
diff --git a/previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/MockedMonitor.scala b/previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/MockedMonitor.scala
new file mode 100644
index 0000000..0b7e94f
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/MockedMonitor.scala
@@ -0,0 +1,72 @@
+package m20.instrumentation
+
+trait MockedMonitor extends Monitor {
+  def scheduler: Scheduler
+  
+  // Can be overriden.
+  override def waitDefault() = {
+    scheduler.log("wait")
+    scheduler updateThreadState Wait(this, scheduler.threadLocks.tail)
+  }
+  override def synchronizedDefault[T](toExecute: =>T): T = {
+    scheduler.log("synchronized check") 
+    val prevLocks = scheduler.threadLocks
+    scheduler updateThreadState Sync(this, prevLocks) // If this belongs to prevLocks, should just continue.
+    scheduler.log("synchronized -> enter")
+    try {
+      toExecute
+    } finally {
+      scheduler updateThreadState Running(prevLocks)
+      scheduler.log("synchronized -> out")
+    }    
+  }
+  override def notifyDefault() = {
+    scheduler mapOtherStates {
+      state => state match {
+        case Wait(lockToAquire, locks) if lockToAquire == this => SyncUnique(this, state.locks)
+        case e => e
+      }
+    }
+    scheduler.log("notify")
+  }
+  override def notifyAllDefault() = {
+    scheduler mapOtherStates {
+      state => state match {
+        case Wait(lockToAquire, locks) if lockToAquire == this => Sync(this, state.locks)
+        case SyncUnique(lockToAquire, locks) if lockToAquire == this => Sync(this, state.locks)
+        case e => e
+      }
+    }
+    scheduler.log("notifyAll")
+  }
+}
+
+trait LockFreeMonitor extends Monitor {
+  override def waitDefault() = {
+    throw new Exception("Please use lock-free structures and do not use wait()")
+  }
+  override def synchronizedDefault[T](toExecute: =>T): T = {
+    throw new Exception("Please use lock-free structures and do not use synchronized()")
+  }
+  override def notifyDefault() = {
+    throw new Exception("Please use lock-free structures and do not use notify()")
+  }
+  override def notifyAllDefault() = {
+    throw new Exception("Please use lock-free structures and do not use notifyAll()")
+  }
+}
+
+
+abstract class ThreadState {
+  def locks: Seq[AnyRef]
+}
+trait CanContinueIfAcquiresLock extends ThreadState {
+  def lockToAquire: AnyRef
+}
+case object Start extends ThreadState { def locks: Seq[AnyRef] = Seq.empty }
+case object End extends ThreadState { def locks: Seq[AnyRef] = Seq.empty }
+case class Wait(lockToAquire: AnyRef, locks: Seq[AnyRef]) extends ThreadState
+case class SyncUnique(lockToAquire: AnyRef, locks: Seq[AnyRef]) extends ThreadState with CanContinueIfAcquiresLock
+case class Sync(lockToAquire: AnyRef, locks: Seq[AnyRef]) extends ThreadState with CanContinueIfAcquiresLock
+case class Running(locks: Seq[AnyRef]) extends ThreadState
+case class VariableReadWrite(locks: Seq[AnyRef]) extends ThreadState
diff --git a/previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/Scheduler.scala b/previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/Scheduler.scala
new file mode 100644
index 0000000..bdc09b5
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/Scheduler.scala
@@ -0,0 +1,304 @@
+package m20.instrumentation
+
+import java.util.concurrent._;
+import scala.concurrent.duration._
+import scala.collection.mutable._
+import Stats._
+
+import java.util.concurrent.atomic.AtomicInteger
+
+sealed abstract class Result
+case class RetVal(rets: List[Any]) extends Result
+case class Except(msg: String, stackTrace: Array[StackTraceElement]) extends Result
+case class Timeout(msg: String) extends Result
+
+/**
+ * A class that maintains schedule and a set of thread ids.
+ * The schedules are advanced after an operation of a SchedulableBuffer is performed.
+ * Note: the real schedule that is executed may deviate from the input schedule
+ * due to the adjustments that had to be made for locks
+ */
+class Scheduler(sched: List[Int]) {
+  val maxOps = 500 // a limit on the maximum number of operations the code is allowed to perform
+
+  private var schedule = sched
+  private var numThreads = 0
+  private val realToFakeThreadId = Map[Long, Int]()
+  private val opLog = ListBuffer[String]() // a mutable list (used for efficient concat)
+  private val threadStates = Map[Int, ThreadState]()
+
+  /**
+   * Runs a set of operations in parallel as per the schedule.
+   * Each operation may consist of many primitive operations like reads or writes
+   * to shared data structure each of which should be executed using the function `exec`.
+   * @timeout in milliseconds
+   * @return true - all threads completed on time,  false -some tests timed out.
+   */
+  def runInParallel(timeout: Long, ops: List[() => Any]): Result = {
+    numThreads = ops.length
+    val threadRes = Array.fill(numThreads) { None: Any }
+    var exception: Option[Except] = None
+    val syncObject = new Object()
+    var completed = new AtomicInteger(0)
+    // create threads
+    val threads = ops.zipWithIndex.map {
+      case (op, i) =>
+        new Thread(new Runnable() {
+          def run(): Unit = {
+            val fakeId = i + 1
+            setThreadId(fakeId)
+            try {
+              updateThreadState(Start)
+              val res = op()
+              updateThreadState(End)
+              threadRes(i) = res
+              // notify the master thread if all threads have completed
+              if (completed.incrementAndGet() == ops.length) {
+                syncObject.synchronized { syncObject.notifyAll() }
+              }
+            } catch {
+              case e: Throwable if exception != None => // do nothing here and silently fail
+              case e: Throwable =>
+                log(s"throw ${e.toString}")
+                exception = Some(Except(s"Thread $fakeId crashed on the following schedule: \n" + opLog.mkString("\n"),
+                    e.getStackTrace))
+                syncObject.synchronized { syncObject.notifyAll() }
+              //println(s"$fakeId: ${e.toString}")
+              //Runtime.getRuntime().halt(0) //exit the JVM and all running threads (no other way to kill other threads)
+            }
+          }
+        })
+    }
+    // start all threads
+    threads.foreach(_.start())
+    // wait for all threads to complete, or for an exception to be thrown, or for the time out to expire
+    var remTime = timeout
+    syncObject.synchronized {
+      timed { if(completed.get() != ops.length) syncObject.wait(timeout) } { time => remTime -= time }
+    }
+    if (exception.isDefined) {
+      exception.get
+    } else if (remTime <= 1) { // timeout ? using 1 instead of zero to allow for some errors
+      Timeout(opLog.mkString("\n"))
+    } else {
+      // every thing executed normally
+      RetVal(threadRes.toList)
+    }
+  }
+
+  // Updates the state of the current thread
+  def updateThreadState(state: ThreadState): Unit = {
+    val tid = threadId
+    synchronized {
+      threadStates(tid) = state
+    }
+    state match {
+      case Sync(lockToAquire, locks) =>
+        if (locks.indexOf(lockToAquire) < 0) waitForTurn else {
+          // Re-aqcuiring the same lock
+          updateThreadState(Running(lockToAquire +: locks))
+        }
+      case Start      => waitStart()
+      case End        => removeFromSchedule(tid)
+      case Running(_) =>
+      case _          => waitForTurn // Wait, SyncUnique, VariableReadWrite
+    }
+  }
+
+  def waitStart(): Unit = {
+    //while (threadStates.size < numThreads) {
+    //Thread.sleep(1)
+    //}
+    synchronized {
+      if (threadStates.size < numThreads) {
+        wait()
+      } else {
+        notifyAll()
+      }
+    }
+  }
+
+  def threadLocks = {
+    synchronized {
+      threadStates(threadId).locks
+    }
+  }
+
+  def threadState = {
+    synchronized {
+      threadStates(threadId)
+    }
+  }
+
+  def mapOtherStates(f: ThreadState => ThreadState) = {
+    val exception = threadId
+    synchronized {
+      for (k <- threadStates.keys if k != exception) {
+        threadStates(k) = f(threadStates(k))
+      }
+    }
+  }
+
+  def log(str: String) = {
+    if((realToFakeThreadId contains Thread.currentThread().getId())) {
+      val space = (" " * ((threadId - 1) * 2))
+      val s = space + threadId + ":" + "\n".r.replaceAllIn(str, "\n" + space + "  ")
+      opLog += s
+    }
+  }
+
+  /**
+   * Executes a read or write operation to a global data structure as per the given schedule
+   * @param msg a message corresponding to the operation that will be logged
+   */
+  def exec[T](primop: => T)(msg: => String, postMsg: => Option[T => String] = None): T = {
+    if(! (realToFakeThreadId contains Thread.currentThread().getId())) {
+      primop
+    } else {
+      updateThreadState(VariableReadWrite(threadLocks))
+      val m = msg
+      if(m != "") log(m)
+      if (opLog.size > maxOps)
+        throw new Exception(s"Total number of reads/writes performed by threads exceed $maxOps. A possible deadlock!")
+      val res = primop
+      postMsg match {
+        case Some(m) => log(m(res))
+        case None =>
+      }
+      res
+    }
+  }
+
+  private def setThreadId(fakeId: Int) = synchronized {
+    realToFakeThreadId(Thread.currentThread.getId) = fakeId
+  }
+
+  def threadId =
+    try {
+      realToFakeThreadId(Thread.currentThread().getId())
+    } catch {
+    case e: NoSuchElementException =>
+      throw new Exception("You are accessing shared variables in the constructor. This is not allowed. The variables are already initialized!")
+    }
+
+  private def isTurn(tid: Int) = synchronized {
+    (!schedule.isEmpty && schedule.head != tid)
+  }
+
+  def canProceed(): Boolean = {
+    val tid = threadId
+    canContinue match {
+      case Some((i, state)) if i == tid =>
+        //println(s"$tid: Runs ! Was in state $state")
+        canContinue = None
+        state match {
+          case Sync(lockToAquire, locks) => updateThreadState(Running(lockToAquire +: locks))
+          case SyncUnique(lockToAquire, locks) =>
+            mapOtherStates {
+              _ match {
+                case SyncUnique(lockToAquire2, locks2) if lockToAquire2 == lockToAquire => Wait(lockToAquire2, locks2)
+                case e => e
+              }
+            }
+            updateThreadState(Running(lockToAquire +: locks))
+          case VariableReadWrite(locks) => updateThreadState(Running(locks))
+        }
+        true
+      case Some((i, state)) =>
+        //println(s"$tid: not my turn but $i !")
+        false
+      case None =>
+        false
+    }
+  }
+
+  var threadPreference = 0 // In the case the schedule is over, which thread should have the preference to execute.
+
+  /** returns true if the thread can continue to execute, and false otherwise */
+  def decide(): Option[(Int, ThreadState)] = {
+    if (!threadStates.isEmpty) { // The last thread who enters the decision loop takes the decision.
+      //println(s"$threadId: I'm taking a decision")
+      if (threadStates.values.forall { case e: Wait => true case _ => false }) {
+        val waiting = threadStates.keys.map(_.toString).mkString(", ")
+        val s = if (threadStates.size > 1) "s" else ""
+        val are = if (threadStates.size > 1) "are" else "is"
+        throw new Exception(s"Deadlock: Thread$s $waiting $are waiting but all others have ended and cannot notify them.")
+      } else {
+        // Threads can be in Wait, Sync, SyncUnique, and VariableReadWrite mode.
+        // Let's determine which ones can continue.
+        val notFree = threadStates.collect { case (id, state) => state.locks }.flatten.toSet
+        val threadsNotBlocked = threadStates.toSeq.filter {
+          case (id, v: VariableReadWrite)         => true
+          case (id, v: CanContinueIfAcquiresLock) => !notFree(v.lockToAquire) || (v.locks contains v.lockToAquire)
+          case _                                  => false
+        }
+        if (threadsNotBlocked.isEmpty) {
+          val waiting = threadStates.keys.map(_.toString).mkString(", ")
+          val s = if (threadStates.size > 1) "s" else ""
+          val are = if (threadStates.size > 1) "are" else "is"
+          val whoHasLock = threadStates.toSeq.flatMap { case (id, state) => state.locks.map(lock => (lock, id)) }.toMap
+          val reason = threadStates.collect {
+            case (id, state: CanContinueIfAcquiresLock) if !notFree(state.lockToAquire) =>
+              s"Thread $id is waiting on lock ${state.lockToAquire} held by thread ${whoHasLock(state.lockToAquire)}"
+          }.mkString("\n")
+          throw new Exception(s"Deadlock: Thread$s $waiting are interlocked. Indeed:\n$reason")
+        } else if (threadsNotBlocked.size == 1) { // Do not consume the schedule if only one thread can execute.
+          Some(threadsNotBlocked(0))
+        } else {
+          val next = schedule.indexWhere(t => threadsNotBlocked.exists { case (id, state) => id == t })
+          if (next != -1) {
+            //println(s"$threadId: schedule is $schedule, next chosen is ${schedule(next)}")
+            val chosenOne = schedule(next) // TODO: Make schedule a mutable list.
+            schedule = schedule.take(next) ++ schedule.drop(next + 1)
+            Some((chosenOne, threadStates(chosenOne)))
+          } else {
+            threadPreference = (threadPreference + 1) % threadsNotBlocked.size
+            val chosenOne = threadsNotBlocked(threadPreference) // Maybe another strategy
+            Some(chosenOne)
+            //threadsNotBlocked.indexOf(threadId) >= 0
+            /*
+            val tnb = threadsNotBlocked.map(_._1).mkString(",")
+            val s = if (schedule.isEmpty) "empty" else schedule.mkString(",")
+            val only = if (schedule.isEmpty) "" else " only"
+            throw new Exception(s"The schedule is $s but$only threads ${tnb} can continue")*/
+          }
+        }
+      }
+    } else canContinue
+  }
+
+  /**
+   * This will be called before a schedulable operation begins.
+   * This should not use synchronized
+   */
+  var numThreadsWaiting = new AtomicInteger(0)
+  //var waitingForDecision = Map[Int, Option[Int]]() // Mapping from thread ids to a number indicating who is going to make the choice.
+  var canContinue: Option[(Int, ThreadState)] = None // The result of the decision thread Id of the thread authorized to continue.
+  private def waitForTurn = {
+    synchronized {
+      if (numThreadsWaiting.incrementAndGet() == threadStates.size) {
+        canContinue = decide()
+        notifyAll()
+      }
+      //waitingForDecision(threadId) = Some(numThreadsWaiting)
+      //println(s"$threadId Entering waiting with ticket number $numThreadsWaiting/${waitingForDecision.size}")
+      while (!canProceed()) wait()
+    }
+    numThreadsWaiting.decrementAndGet()
+  }
+
+  /**
+   * To be invoked when a thread is about to complete
+   */
+  private def removeFromSchedule(fakeid: Int) = synchronized {
+    //println(s"$fakeid: I'm taking a decision because I finished")
+    schedule = schedule.filterNot(_ == fakeid)
+    threadStates -= fakeid
+    if (numThreadsWaiting.get() == threadStates.size) {
+      canContinue = decide()
+      notifyAll()
+    }
+  }
+
+  def getOperationLog() = opLog
+}
diff --git a/previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/Stats.scala b/previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/Stats.scala
new file mode 100644
index 0000000..e38dd2a
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/Stats.scala
@@ -0,0 +1,23 @@
+/* Copyright 2009-2015 EPFL, Lausanne */
+package m20.instrumentation
+
+import java.lang.management._
+
+/**
+ * A collection of methods that can be used to collect run-time statistics about Leon programs.
+ * This is mostly used to test the resources properties of Leon programs
+ */
+object Stats {
+  def timed[T](code: => T)(cont: Long => Unit): T = {
+    var t1 = System.currentTimeMillis()
+    val r = code
+    cont((System.currentTimeMillis() - t1))
+    r
+  }
+
+  def withTime[T](code: => T): (T, Long) = {
+    var t1 = System.currentTimeMillis()
+    val r = code
+    (r, (System.currentTimeMillis() - t1))
+  }
+}
diff --git a/previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/TestHelper.scala b/previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/TestHelper.scala
new file mode 100644
index 0000000..b361ded
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/TestHelper.scala
@@ -0,0 +1,124 @@
+package m20.instrumentation
+
+import scala.util.Random
+import scala.collection.mutable.{Map => MutableMap}
+
+import Stats._
+
+object TestHelper {
+  val noOfSchedules = 10000 // set this to 100k during deployment
+  val readWritesPerThread = 20 // maximum number of read/writes possible in one thread
+  val contextSwitchBound = 10
+  val testTimeout = 150 // the total time out for a test in seconds
+  val schedTimeout = 15 // the total time out for execution of a schedule in secs
+
+  // Helpers
+  /*def testManySchedules(op1: => Any): Unit = testManySchedules(List(() => op1))
+  def testManySchedules(op1: => Any, op2: => Any): Unit = testManySchedules(List(() => op1, () => op2))
+  def testManySchedules(op1: => Any, op2: => Any, op3: => Any): Unit = testManySchedules(List(() => op1, () => op2, () => op3))
+  def testManySchedules(op1: => Any, op2: => Any, op3: => Any, op4: => Any): Unit = testManySchedules(List(() => op1, () => op2, () => op3, () => op4))*/
+
+  def testSequential[T](ops: Scheduler => Any)(assertions: T => (Boolean, String)) =
+    testManySchedules(1,
+      (sched: Scheduler) => {
+        (List(() => ops(sched)),
+         (res: List[Any]) => assertions(res.head.asInstanceOf[T]))
+      })
+
+  /**
+   * @numThreads number of threads
+   * @ops operations to be executed, one per thread
+   * @assertion as condition that will executed after all threads have completed (without exceptions)
+   * 					 the arguments are the results of the threads
+   */
+  def testManySchedules(numThreads: Int,
+      ops: Scheduler =>
+        (List[() => Any], // Threads
+         List[Any] => (Boolean, String)) // Assertion
+      ) = {
+    var timeout = testTimeout * 1000L
+    val threadIds = (1 to numThreads)
+    //(1 to scheduleLength).flatMap(_ => threadIds).toList.permutations.take(noOfSchedules).foreach {
+    val schedules = (new ScheduleGenerator(numThreads)).schedules()
+    var schedsExplored = 0
+    schedules.takeWhile(_ => schedsExplored <= noOfSchedules && timeout > 0).foreach {
+      //case _ if timeout <= 0 => // break
+      case schedule =>
+        schedsExplored += 1
+        val schedr = new Scheduler(schedule)
+        //println("Exploring Sched: "+schedule)
+        val (threadOps, assertion) = ops(schedr)
+        if (threadOps.size != numThreads)
+          throw new IllegalStateException(s"Number of threads: $numThreads, do not match operations of threads: $threadOps")
+        timed { schedr.runInParallel(schedTimeout * 1000, threadOps) } { t => timeout -= t } match {
+          case Timeout(msg) =>
+            throw new java.lang.AssertionError("assertion failed\n"+"The schedule took too long to complete. A possible deadlock! \n"+msg)
+          case Except(msg, stkTrace) =>
+            val traceStr = "Thread Stack trace: \n"+stkTrace.map(" at "+_.toString).mkString("\n")
+            throw new java.lang.AssertionError("assertion failed\n"+msg+"\n"+traceStr)
+          case RetVal(threadRes) =>
+            // check the assertion
+            val (success, custom_msg) = assertion(threadRes)
+            if (!success) {
+              val msg = "The following schedule resulted in wrong results: \n" + custom_msg + "\n" + schedr.getOperationLog().mkString("\n")
+              throw new java.lang.AssertionError("Assertion failed: "+msg)
+            }
+        }
+    }
+    if (timeout <= 0) {
+      throw new java.lang.AssertionError("Test took too long to complete! Cannot check all schedules as your code is too slow!")
+    }
+  }
+
+  /**
+   * A schedule generator that is based on the context bound
+   */
+  class ScheduleGenerator(numThreads: Int) {
+    val scheduleLength = readWritesPerThread * numThreads
+    val rands = (1 to scheduleLength).map(i => new Random(0xcafe * i)) // random numbers for choosing a thread at each position
+    def schedules(): LazyList[List[Int]] = {
+      var contextSwitches = 0
+      var contexts = List[Int]() // a stack of thread ids in the order of context-switches
+      val remainingOps = MutableMap[Int, Int]()
+      remainingOps ++= (1 to numThreads).map(i => (i, readWritesPerThread)) // num ops remaining in each thread
+      val liveThreads = (1 to numThreads).toSeq.toBuffer
+
+      /**
+       * Updates remainingOps and liveThreads once a thread is chosen for a position in the schedule
+       */
+      def updateState(tid: Int): Unit = {
+        val remOps = remainingOps(tid)
+        if (remOps == 0) {
+          liveThreads -= tid
+        } else {
+          remainingOps += (tid -> (remOps - 1))
+        }
+      }
+      val schedule = rands.foldLeft(List[Int]()) {
+        case (acc, r) if contextSwitches < contextSwitchBound =>
+          val tid = liveThreads(r.nextInt(liveThreads.size))
+          contexts match {
+            case prev :: tail if prev != tid => // we have a new context switch here
+              contexts +:= tid
+              contextSwitches += 1
+            case prev :: tail =>
+            case _ => // init case
+              contexts +:= tid
+          }
+          updateState(tid)
+          acc :+ tid
+        case (acc, _) => // here context-bound has been reached so complete the schedule without any more context switches
+          if (!contexts.isEmpty) {
+            contexts = contexts.dropWhile(remainingOps(_) == 0)
+          }
+          val tid = contexts match {
+            case top :: tail => top
+            case _ => liveThreads(0)  // here, there has to be threads that have not even started
+          }
+          updateState(tid)
+          acc :+ tid
+      }
+      schedule #:: schedules()
+    }
+  }
+}
diff --git a/previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/TestUtils.scala b/previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/TestUtils.scala
new file mode 100644
index 0000000..a6a1cac
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/src/test/scala/m20/instrumentation/TestUtils.scala
@@ -0,0 +1,19 @@
+package m20.instrumentation
+
+import scala.concurrent._
+import scala.concurrent.duration._
+import scala.concurrent.ExecutionContext.Implicits.global
+
+object TestUtils {
+  def failsOrTimesOut[T](action: => T): Boolean = {
+    val asyncAction = Future {
+      action
+    }
+    try {
+      Await.result(asyncAction, 2000.millisecond)
+    } catch {
+      case _: Throwable => return true
+    }
+    return false
+  }
+}
diff --git a/previous-exams/2021-midterm/m20/src/test/scala/m20/overrides.scala b/previous-exams/2021-midterm/m20/src/test/scala/m20/overrides.scala
new file mode 100644
index 0000000..cffe5c5
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/src/test/scala/m20/overrides.scala
@@ -0,0 +1,68 @@
+package m20
+
+import instrumentation._
+
+import scala.annotation.tailrec
+import java.util.concurrent.atomic._
+
+class SchedulableAtomicVariable[T](initial: T, scheduler: Scheduler, name: String) extends AbstractAtomicVariable[T]:
+  private val proxied: AtomicVariable[T] = new AtomicVariable[T](initial)
+
+  override def get: T = scheduler.exec {
+    proxied.get
+  } (s"", Some(res => s"$name: get $res"))
+
+  override def set(value: T): Unit = scheduler.exec {
+    proxied.set(value)
+  } (s"$name: set $value", None)
+
+  override def compareAndSet(expected: T, newValue: T): Boolean = {
+    scheduler.exec {
+      proxied.compareAndSet(expected, newValue)
+    } (s"$name: compareAndSet(expected = $expected, newValue = $newValue)", Some(res => s"$name: Did it set? $res") )
+  }
+
+end SchedulableAtomicVariable
+
+class SchedulableSeqCount(val scheduler: Scheduler) extends SeqCount with LockFreeMonitor:
+  override def generation: Int = scheduler.exec {
+    super.generation
+  } ("", Some(res => s"generation is $res"))
+  override def setGeneration(newGeneration: Int): Unit = scheduler.exec {
+    super.setGeneration(newGeneration)
+  } ( s"setGeneration($newGeneration)", None )
+
+  override def x: Int = scheduler.exec {
+    super.x
+  } ("", Some(res => s"x is $res"))
+  override def setX(newX: Int): Unit = scheduler.exec {
+    super.setX(newX)
+  } (s"setX($newX)", None)
+
+  override def y: Int = scheduler.exec {
+    super.y
+  } ("", Some(res => s"y is $res"))
+  override def setY(newY: Int): Unit = scheduler.exec {
+    super.setY(newY)
+  } (s"setY($newY)", None)
+
+end SchedulableSeqCount
+
+class SchedulableMultiWriterSeqCount(val scheduler: Scheduler) extends MultiWriterSeqCount with LockFreeMonitor:
+  override protected val myGeneration: AbstractAtomicVariable[Int] = new SchedulableAtomicVariable(0, scheduler, "myGeneration")
+
+  override def x: Int = scheduler.exec {
+    super.x
+  } ("", Some(res => s"x is $res"))
+  override def setX(newX: Int): Unit = scheduler.exec {
+    super.setX(newX)
+  } (s"setX($newX)", None)
+
+  override def y: Int = scheduler.exec {
+    super.y
+  } ("", Some(res => s"y is $res"))
+  override def setY(newY: Int): Unit = scheduler.exec {
+    super.setY(newY)
+  } (s"setY($newY)", None)
+
+end SchedulableMultiWriterSeqCount
diff --git a/previous-exams/2021-midterm/m21.md b/previous-exams/2021-midterm/m21.md
new file mode 100644
index 0000000..fb11db8
--- /dev/null
+++ b/previous-exams/2021-midterm/m21.md
@@ -0,0 +1,97 @@
+Use the following commands to make a fresh clone of your repository:
+
+```
+git clone -b m21 git@gitlab.epfl.ch:lamp/student-repositories-s21/cs206-GASPAR.git m21
+```
+
+## Useful links
+
+  * [A guide to the Scala parallel collections](https://docs.scala-lang.org/overviews/parallel-collections/overview.html)
+  * [The API documentation of the Scala parallel collections](https://www.javadoc.io/doc/org.scala-lang.modules/scala-parallel-collections_2.13/latest/scala/collection/index.html)
+  * [The API documentation of the Scala standard library](https://www.scala-lang.org/files/archive/api/2.13.4)
+  * [The API documentation of the Java standard library](https://docs.oracle.com/en/java/javase/15/docs/api/index.html)
+
+**If you have issues with the IDE, try [reimporting the
+build](https://gitlab.epfl.ch/lamp/cs206/-/blob/master/labs/example-lab.md#ide-features-like-type-on-hover-or-go-to-definition-do-not-work),
+if you still have problems, use `compile` in sbt instead.**
+
+## Exercise
+
+In this question, you will complete the definition of two concurrent data
+structures **without using `synchronized`**: `SeqCount` and `MultiWriterSeqCount`.
+
+## Part 1: SeqCount (defined in `SeqCount.scala`)
+
+An instance of this class stores two integers (initially set to 1), the stored
+values can be updated using `write` and retrieved using `copy`. Only one thread
+at a time is allowed to call `write` but multiple threads can call `copy` at
+once.
+
+Your task in this part is to implement `copy` such that this method never
+returns _partially updated values_, for example given two threads operating
+concurrently on a `SeqCount` `sc`:
+```scala
+// Thread 1
+sc.write(1, 2)
+```
+```scala
+// Thread 2
+val result = sc.copy()
+```
+`result` must either be `(0, 0)` (since the initial values are 0) or `(1, 2)`,
+but it must not be `(1, 0)`, `(0, 2)` or any other value.
+
+To successfully implement this method you will need to use `generation`: this
+method returns the current value of a volatile variable which is initially set
+to 1, gets incremented by one at the beginning of `write`, and incremented by
+one again at the end of `write`.
+
+**You are not allowed to use `synchronized` or directly call any of
+`myGeneration`, `myX` or `myY` (use the pre-defined getters and setters
+instead).**
+
+Hints:
+- Remember that a write to a volatile field _happens-before_ every subsequent
+  read of that field.
+- `generation` will always be odd when a write has completed and always
+even when a write is in progress.
+- `copy` can be implemented as a tail-recursive method.
+
+## Part 2: MultiWriterSeqCount (defined in `MultiWriterSeqCount.scala`)
+
+Like `SeqCount`, this class stores two integers updated using `write` and
+retrieved using `copy`, but unlike `SeqCount` multiple threads are allowed to
+call `write` at the same time: these writes will all succeed but they are
+allowed to complete in any order, for example given three threads operating
+concurrently on a `MultiWriterSeqCount` `msc`:
+```scala
+// Thread 1
+msc.write(1, 2)
+```
+```scala
+// Thread 2
+msc.write(10, 20)
+```
+```scala
+// Thread 3
+val result = msc.copy()
+```
+`result` must either be `(0, 0)`, `(1, 2)` or `(10, 20)`.
+
+In this class, the generation is stored in an atomic variable instead of a
+volatible field therefore it's important to note that:
+- a `set` on an atomic variable _happens-before_ every subsequent `get` of that
+  variable.
+- A call to `compareAndSet` both gets and set an atomic variable.
+
+Your task in this part is to implement both `copy` and `write`.
+
+**You are not allowed to use `synchronized` or directly call any of
+`myGeneration`, `myX` or `myY` (use the pre-defined getters and setters
+instead).**
+
+Hints:
+- you should be able to just copy-paste the implementation of `copy` you
+  implemented in Part 1
+- you will need to make use of `compareAndSetGeneration` in `write`
+- `write` can be implemented as a tail-recursive method.
diff --git a/previous-exams/2021-midterm/m21/.gitignore b/previous-exams/2021-midterm/m21/.gitignore
new file mode 100644
index 0000000..40937dc
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/.gitignore
@@ -0,0 +1,22 @@
+# General
+*.DS_Store
+*.swp
+*~
+
+# Dotty
+*.class
+*.tasty
+*.hasTasty
+
+# sbt
+target/
+
+# IDE
+.bsp
+.bloop
+.metals
+.vscode
+
+# datasets
+stackoverflow-grading.csv
+wikipedia-grading.dat
diff --git a/previous-exams/2021-midterm/m21/assignment.sbt b/previous-exams/2021-midterm/m21/assignment.sbt
new file mode 100644
index 0000000..da7eb3c
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/assignment.sbt
@@ -0,0 +1,2 @@
+// Student tasks (i.e. submit, packageSubmission)
+enablePlugins(StudentTasks)
diff --git a/previous-exams/2021-midterm/m21/build.sbt b/previous-exams/2021-midterm/m21/build.sbt
new file mode 100644
index 0000000..15c6258
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/build.sbt
@@ -0,0 +1,12 @@
+course := "midterm"
+assignment := "m21"
+scalaVersion := "3.0.0-RC1"
+scalacOptions ++= Seq("-language:implicitConversions", "-deprecation")
+
+libraryDependencies += "org.scalameta" %% "munit" % "0.7.22"
+
+val MUnitFramework = new TestFramework("munit.Framework")
+testFrameworks += MUnitFramework
+// Decode Scala names
+testOptions += Tests.Argument(MUnitFramework, "-s")
+testSuite := "m21.M21Suite"
diff --git a/previous-exams/2021-midterm/m21/grading-tests.jar b/previous-exams/2021-midterm/m21/grading-tests.jar
new file mode 100644
index 0000000000000000000000000000000000000000..879793e5498e751321315fff68817cea677fc435
GIT binary patch
literal 131654
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
Hz`y_iDxhE-

literal 0
HcmV?d00001

diff --git a/previous-exams/2021-midterm/m21/project/FilteringReporterPlugin.scala b/previous-exams/2021-midterm/m21/project/FilteringReporterPlugin.scala
new file mode 100644
index 0000000..2e4fd9a
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/project/FilteringReporterPlugin.scala
@@ -0,0 +1,31 @@
+package sbt // To access the private[sbt] compilerReporter key
+package filteringReporterPlugin
+
+import Keys._
+import ch.epfl.lamp._
+
+object FilteringReporterPlugin extends AutoPlugin {
+  override lazy val projectSettings = Seq(
+    // Turn off warning coming from scalameter that we cannot fix without changing scalameter
+    compilerReporter in (Compile, compile) ~= { reporter => new FilteringReporter(reporter) }
+  )
+}
+
+class FilteringReporter(reporter: xsbti.Reporter) extends xsbti.Reporter {
+
+  def reset(): Unit = reporter.reset()
+  def hasErrors: Boolean = reporter.hasErrors
+  def hasWarnings: Boolean = reporter.hasWarnings
+  def printSummary(): Unit = reporter.printSummary()
+  def problems: Array[xsbti.Problem] = reporter.problems
+
+  def log(problem: xsbti.Problem): Unit = {
+    if (!problem.message.contains("An existential type that came from a Scala-2 classfile cannot be"))
+      reporter.log(problem)
+  }
+
+  def comment(pos: xsbti.Position, msg: String): Unit =
+    reporter.comment(pos, msg)
+
+  override def toString = s"CollectingReporter($reporter)"
+}
diff --git a/previous-exams/2021-midterm/m21/project/MOOCSettings.scala b/previous-exams/2021-midterm/m21/project/MOOCSettings.scala
new file mode 100644
index 0000000..1c40443
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/project/MOOCSettings.scala
@@ -0,0 +1,49 @@
+package ch.epfl.lamp
+
+import sbt._
+import sbt.Keys._
+
+/**
+ * Coursera uses two versions of each assignment. They both have the same assignment key and part id but have
+ * different item ids.
+ *
+ * @param key Assignment key
+ * @param partId Assignment partId
+ * @param itemId Item id of the non premium version
+ * @param premiumItemId Item id of the premium version (`None` if the assignment is optional)
+ */
+case class CourseraId(key: String, partId: String, itemId: String, premiumItemId: Option[String])
+
+/**
+  * Settings shared by all assignments, reused in various tasks.
+  */
+object MOOCSettings extends AutoPlugin {
+
+  override def requires = super.requires && filteringReporterPlugin.FilteringReporterPlugin
+
+  object autoImport {
+    val course = SettingKey[String]("course")
+    val assignment = SettingKey[String]("assignment")
+    val options = SettingKey[Map[String, Map[String, String]]]("options")
+    val courseraId = settingKey[CourseraId]("Coursera-specific information identifying the assignment")
+    val testSuite = settingKey[String]("Fully qualified name of the test suite of this assignment")
+      .withRank(KeyRanks.Invisible)
+    // Convenient alias
+    type CourseraId = ch.epfl.lamp.CourseraId
+    val CourseraId = ch.epfl.lamp.CourseraId
+  }
+
+  import autoImport._
+
+  override val globalSettings: Seq[Def.Setting[_]] = Seq(
+    // supershell is verbose, buggy and useless.
+    useSuperShell := false
+  )
+
+  override val projectSettings: Seq[Def.Setting[_]] = Seq(
+    parallelExecution in Test := false,
+    // Report test result after each test instead of waiting for every test to finish
+    logBuffered in Test := false,
+    name := s"${course.value}-${assignment.value}"
+  )
+}
diff --git a/previous-exams/2021-midterm/m21/project/StudentTasks.scala b/previous-exams/2021-midterm/m21/project/StudentTasks.scala
new file mode 100644
index 0000000..c4669af
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/project/StudentTasks.scala
@@ -0,0 +1,303 @@
+package ch.epfl.lamp
+
+import sbt._
+import Keys._
+
+// import scalaj.http._
+import java.io.{File, FileInputStream, IOException}
+import org.apache.commons.codec.binary.Base64
+// import play.api.libs.json.{Json, JsObject, JsPath}
+import scala.util.{Failure, Success, Try}
+
+/**
+  * Provides tasks for submitting the assignment
+  */
+object StudentTasks extends AutoPlugin {
+
+  override def requires = super.requires && MOOCSettings
+
+  object autoImport {
+    val packageSourcesOnly = TaskKey[File]("packageSourcesOnly", "Package the sources of the project")
+    val packageBinWithoutResources = TaskKey[File]("packageBinWithoutResources", "Like packageBin, but without the resources")
+    val packageSubmissionZip = TaskKey[File]("packageSubmissionZip")
+    val packageSubmission = inputKey[Unit]("package solution as an archive file")
+
+    lazy val Grading = config("grading") extend(Runtime)
+  }
+
+
+  import autoImport._
+  import MOOCSettings.autoImport._
+
+  override lazy val projectSettings = Seq(
+    packageSubmissionSetting,
+    fork := true,
+    connectInput in run := true,
+    outputStrategy := Some(StdoutOutput),
+  ) ++
+    packageSubmissionZipSettings ++
+    inConfig(Grading)(Defaults.testSettings ++ Seq(
+      unmanagedJars += file("grading-tests.jar"),
+
+      definedTests := (definedTests in Test).value,
+      internalDependencyClasspath := (internalDependencyClasspath in Test).value
+    ))
+
+
+  /** **********************************************************
+    * SUBMITTING A SOLUTION TO COURSERA
+    */
+
+  val packageSubmissionZipSettings = Seq(
+    packageSubmissionZip := {
+      val submission = crossTarget.value / "submission.zip"
+      val sources = (packageSourcesOnly in Compile).value
+      val binaries = (packageBinWithoutResources in Compile).value
+      IO.zip(Seq(sources -> "sources.zip", binaries -> "binaries.jar"), submission, None)
+      submission
+    },
+    artifactClassifier in packageSourcesOnly := Some("sources"),
+    artifact in (Compile, packageBinWithoutResources) ~= (art => art.withName(art.name + "-without-resources"))
+  ) ++
+  inConfig(Compile)(
+    Defaults.packageTaskSettings(packageSourcesOnly, Defaults.sourceMappings) ++
+    Defaults.packageTaskSettings(packageBinWithoutResources, Def.task {
+      val relativePaths =
+        (unmanagedResources in Compile).value.flatMap(Path.relativeTo((unmanagedResourceDirectories in Compile).value)(_))
+      (mappings in (Compile, packageBin)).value.filterNot { case (_, path) => relativePaths.contains(path) }
+    })
+  )
+
+  val maxSubmitFileSize = {
+    val mb = 1024 * 1024
+    10 * mb
+  }
+
+  /** Check that the jar exists, isn't empty, isn't crazy big, and can be read
+    * If so, encode jar as base64 so we can send it to Coursera
+    */
+  def prepareJar(jar: File, s: TaskStreams): String = {
+    val errPrefix = "Error submitting assignment jar: "
+    val fileLength = jar.length()
+    if (!jar.exists()) {
+      s.log.error(errPrefix + "jar archive does not exist\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength == 0L) {
+      s.log.error(errPrefix + "jar archive is empty\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength > maxSubmitFileSize) {
+      s.log.error(errPrefix + "jar archive is too big. Allowed size: " +
+        maxSubmitFileSize + " bytes, found " + fileLength + " bytes.\n" +
+        jar.getAbsolutePath)
+      failSubmit()
+    } else {
+      val bytes = new Array[Byte](fileLength.toInt)
+      val sizeRead = try {
+        val is = new FileInputStream(jar)
+        val read = is.read(bytes)
+        is.close()
+        read
+      } catch {
+        case ex: IOException =>
+          s.log.error(errPrefix + "failed to read sources jar archive\n" + ex.toString)
+          failSubmit()
+      }
+      if (sizeRead != bytes.length) {
+        s.log.error(errPrefix + "failed to read the sources jar archive, size read: " + sizeRead)
+        failSubmit()
+      } else encodeBase64(bytes)
+    }
+  }
+
+  /** Task to package solution to a given file path */
+  lazy val packageSubmissionSetting = packageSubmission := {
+    val args: Seq[String] = Def.spaceDelimited("[path]").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val base64Jar = prepareJar(jar, s)
+
+    val path = args.headOption.getOrElse((baseDirectory.value / "submission.jar").absolutePath)
+    scala.tools.nsc.io.File(path).writeAll(base64Jar)
+  }
+
+/*
+  /** Task to submit a solution to coursera */
+  val submit = inputKey[Unit]("submit solution to Coursera")
+  lazy val submitSetting = submit := {
+    // Fail if scalafix linting does not pass.
+    scalafixLinting.value
+
+    val args: Seq[String] = Def.spaceDelimited("<arg>").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val assignmentDetails =
+      courseraId.?.value.getOrElse(throw new MessageOnlyException("This assignment can not be submitted to Coursera because the `courseraId` setting is undefined"))
+    val assignmentKey = assignmentDetails.key
+    val courseName =
+      course.value match {
+        case "capstone" => "scala-capstone"
+        case "bigdata"  => "scala-spark-big-data"
+        case other      => other
+      }
+
+    val partId = assignmentDetails.partId
+    val itemId = assignmentDetails.itemId
+    val premiumItemId = assignmentDetails.premiumItemId
+
+    val (email, secret) = args match {
+      case email :: secret :: Nil =>
+        (email, secret)
+      case _ =>
+        val inputErr =
+          s"""|Invalid input to `submit`. The required syntax for `submit` is:
+              |submit <email-address> <submit-token>
+              |
+              |The submit token is NOT YOUR LOGIN PASSWORD.
+              |It can be obtained from the assignment page:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId
+              |${
+                premiumItemId.fold("") { id =>
+                  s"""or (for premium learners):
+                     |https://www.coursera.org/learn/$courseName/programming/$id
+                   """.stripMargin
+                }
+              }
+          """.stripMargin
+        s.log.error(inputErr)
+        failSubmit()
+    }
+
+    val base64Jar = prepareJar(jar, s)
+    val json =
+      s"""|{
+          |   "assignmentKey":"$assignmentKey",
+          |   "submitterEmail":"$email",
+          |   "secret":"$secret",
+          |   "parts":{
+          |      "$partId":{
+          |         "output":"$base64Jar"
+          |      }
+          |   }
+          |}""".stripMargin
+
+    def postSubmission[T](data: String): Try[HttpResponse[String]] = {
+      val http = Http("https://www.coursera.org/api/onDemandProgrammingScriptSubmissions.v1")
+      val hs = List(
+        ("Cache-Control", "no-cache"),
+        ("Content-Type", "application/json")
+      )
+      s.log.info("Connecting to Coursera...")
+      val response = Try(http.postData(data)
+                         .headers(hs)
+                         .option(HttpOptions.connTimeout(10000)) // scalaj default timeout is only 100ms, changing that to 10s
+                         .asString) // kick off HTTP POST
+      response
+    }
+
+    val connectMsg =
+      s"""|Attempting to submit "${assignment.value}" assignment in "$courseName" course
+          |Using:
+          |- email: $email
+          |- submit token: $secret""".stripMargin
+    s.log.info(connectMsg)
+
+    def reportCourseraResponse(response: HttpResponse[String]): Unit = {
+      val code = response.code
+      val respBody = response.body
+
+       /* Sample JSON response from Coursera
+      {
+        "message": "Invalid email or token.",
+        "details": {
+          "learnerMessage": "Invalid email or token."
+        }
+      }
+      */
+
+      // Success, Coursera responds with 2xx HTTP status code
+      if (response.is2xx) {
+        val successfulSubmitMsg =
+          s"""|Successfully connected to Coursera. (Status $code)
+              |
+                |Assignment submitted successfully!
+              |
+                |You can see how you scored by going to:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId/
+              |${
+            premiumItemId.fold("") { id =>
+              s"""or (for premium learners):
+                 |https://www.coursera.org/learn/$courseName/programming/$id
+                       """.stripMargin
+            }
+          }
+              |and clicking on "My Submission".""".stripMargin
+        s.log.info(successfulSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 4xx HTTP status code (client-side failure)
+      else if (response.is4xx) {
+        val result = Try(Json.parse(respBody)).toOption
+        val learnerMsg = result match {
+          case Some(resp: JsObject) =>
+            (JsPath \ "details" \ "learnerMessage").read[String].reads(resp).get
+          case Some(x) => // shouldn't happen
+            "Could not parse Coursera's response:\n" + x
+          case None =>
+            "Could not parse Coursera's response:\n" + respBody
+        }
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |There was something wrong while attempting to submit.
+              |Coursera says:
+              |$learnerMsg (Status $code)""".stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 5xx HTTP status code (server-side failure)
+      else if (response.is5xx) {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera seems to be unavailable at the moment (Status $code)
+              |Check https://status.coursera.org/ and try again in a few minutes.
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera repsonds with an unexpected status code
+      else {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera replied with an unexpected code (Status $code)
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+    }
+
+    // kick it all off, actually make request
+    postSubmission(json) match {
+      case Success(resp) => reportCourseraResponse(resp)
+      case Failure(e) =>
+        val failedConnectMsg =
+          s"""|Connection to Coursera failed.
+              |There was something wrong while attempting to connect to Coursera.
+              |Check your internet connection.
+              |${e.toString}""".stripMargin
+        s.log.error(failedConnectMsg)
+    }
+
+   }
+*/
+
+  def failSubmit(): Nothing = {
+    sys.error("Submission failed")
+  }
+
+  /**
+    * *****************
+    * DEALING WITH JARS
+    */
+  def encodeBase64(bytes: Array[Byte]): String =
+    new String(Base64.encodeBase64(bytes))
+}
diff --git a/previous-exams/2021-midterm/m21/project/build.properties b/previous-exams/2021-midterm/m21/project/build.properties
new file mode 100644
index 0000000..0b2e09c
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/project/build.properties
@@ -0,0 +1 @@
+sbt.version=1.4.7
diff --git a/previous-exams/2021-midterm/m21/project/buildSettings.sbt b/previous-exams/2021-midterm/m21/project/buildSettings.sbt
new file mode 100644
index 0000000..8fac702
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/project/buildSettings.sbt
@@ -0,0 +1,5 @@
+// Used for Coursera submission (StudentPlugin)
+// libraryDependencies += "org.scalaj" %% "scalaj-http" % "2.4.2"
+// libraryDependencies += "com.typesafe.play" %% "play-json" % "2.7.4"
+// Used for Base64 (StudentPlugin)
+libraryDependencies += "commons-codec" % "commons-codec" % "1.10"
diff --git a/previous-exams/2021-midterm/m21/project/plugins.sbt b/previous-exams/2021-midterm/m21/project/plugins.sbt
new file mode 100644
index 0000000..021c019
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/project/plugins.sbt
@@ -0,0 +1,2 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.5.3")
diff --git a/previous-exams/2021-midterm/m21/src/main/scala/m21/MultiWriterSeqCount.scala b/previous-exams/2021-midterm/m21/src/main/scala/m21/MultiWriterSeqCount.scala
new file mode 100644
index 0000000..73a81fb
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/src/main/scala/m21/MultiWriterSeqCount.scala
@@ -0,0 +1,66 @@
+package m21
+
+import instrumentation._
+
+import scala.annotation.tailrec
+
+/** Multi-writer, multi-reader data structure containing a pair of integers. */
+class MultiWriterSeqCount extends Monitor:
+  /** Do not directly use this variable, use `generation`, `setGeneration` and
+   *  `compareAndSetGeneration` instead.
+   */
+  protected val myGeneration: AbstractAtomicVariable[Int] = new AtomicVariable(1)
+  protected def generation: Int = myGeneration.get
+  protected def setGeneration(newGeneration: Int): Unit =
+    myGeneration.set(newGeneration)
+  protected def compareAndSetGeneration(expected: Int, newValue: Int): Boolean =
+    myGeneration.compareAndSet(expected, newValue)
+
+  /** Do not directly use this variable, use `x` and `setX` instead. */
+  protected var myX: Int = 0
+  protected def x: Int = myX
+  protected def setX(newX: Int): Unit =
+    myX = newX
+
+  /** Do not directly use this variable, use `y` and `setY` instead. */
+  protected var myY: Int = 0
+  protected def y: Int = myY
+  protected def setY(newY: Int): Unit =
+    myY = newY
+
+  /** Write new values into this data structure.
+   *  This method is always safe to call.
+   *  The implementation of this method is not allowed to call `synchronized`.
+   */
+
+  @tailrec
+  final def write(newX: Int, newY: Int): Unit =
+    val old = generation
+    if old % 2 != 1 then
+      write(newX, newY)
+    else
+      if !compareAndSetGeneration(old, old + 1) then
+        write(newX, newY)
+      else
+        setX(newX)
+        setY(newY)
+        setGeneration(old + 2)
+
+  /** Copy the values previously written into this data structure into a tuple.
+   *  This method is always safe to call.
+   *  The implementation of this method is not allowed to call `synchronized`.
+   */
+
+  @tailrec
+  final def copy(): (Int, Int) =
+    val old = generation
+    if old % 2 != 1 then
+      copy()
+    else
+      val result = (x, y)
+      if generation != old then
+        copy()
+      else
+        result
+
+end MultiWriterSeqCount
diff --git a/previous-exams/2021-midterm/m21/src/main/scala/m21/SeqCount.scala b/previous-exams/2021-midterm/m21/src/main/scala/m21/SeqCount.scala
new file mode 100644
index 0000000..c17f45e
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/src/main/scala/m21/SeqCount.scala
@@ -0,0 +1,53 @@
+package m21
+
+import instrumentation._
+
+import scala.annotation.tailrec
+
+/** Single-writer, multi-reader data structure containing a pair of integers. */
+class SeqCount extends Monitor:
+  /** Do not directly use this variable, use `generation` and `setGeneration` instead. */
+  @volatile protected var myGeneration: Int = 1
+  protected def generation: Int = myGeneration
+  protected def setGeneration(newGeneration: Int): Unit =
+    myGeneration = newGeneration
+
+  /** Do not directly use this variable, use `x` and `setX` instead. */
+  protected var myX: Int = 0
+  protected def x: Int = myX
+  protected def setX(newX: Int): Unit =
+    myX = newX
+
+  /** Do not directly use this variable, use `y` and `setY` instead. */
+  protected var myY: Int = 0
+  protected def y: Int = myY
+  protected def setY(newY: Int): Unit =
+    myY = newY
+
+  /** Write new values into this data structure.
+   *  This method must only be called from one thread at a time.
+   */
+  final def write(newX: Int, newY: Int): Unit =
+    setGeneration(generation + 1)
+    setX(newX)
+    setY(newY)
+    setGeneration(generation + 1)
+
+  /** Copy the values previously written into this data structure into a tuple.
+   *  This method is always safe to call.
+   *  The implementation of this method is not allowed to call `synchronized`.
+   */
+
+  @tailrec
+  final def copy(): (Int, Int) =
+    val old = generation
+    if old % 2 != 1 then
+      copy()
+    else
+      val result = (x, y)
+      if generation != old then
+        copy()
+      else
+        result
+
+end SeqCount
diff --git a/previous-exams/2021-midterm/m21/src/main/scala/m21/instrumentation/AtomicVariable.scala b/previous-exams/2021-midterm/m21/src/main/scala/m21/instrumentation/AtomicVariable.scala
new file mode 100644
index 0000000..5a5d2f4
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/src/main/scala/m21/instrumentation/AtomicVariable.scala
@@ -0,0 +1,28 @@
+package m21.instrumentation
+
+import java.util.concurrent.atomic._
+
+abstract class AbstractAtomicVariable[T] {
+  def get: T
+  def set(value: T): Unit
+  def compareAndSet(expect: T, newval: T) : Boolean
+}
+
+class AtomicVariable[T](initial: T) extends AbstractAtomicVariable[T] {
+
+  private val atomic = new AtomicReference[T](initial)
+
+  override def get: T = atomic.get()
+
+  override def set(value: T): Unit = atomic.set(value)
+
+  override def compareAndSet(expected: T, newValue: T): Boolean = {
+    val current = atomic.get
+    if (current == expected) {
+      atomic.compareAndSet(current, newValue)
+    }
+    else {
+      false
+    }
+  }
+}
diff --git a/previous-exams/2021-midterm/m21/src/main/scala/m21/instrumentation/Monitor.scala b/previous-exams/2021-midterm/m21/src/main/scala/m21/instrumentation/Monitor.scala
new file mode 100644
index 0000000..0655100
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/src/main/scala/m21/instrumentation/Monitor.scala
@@ -0,0 +1,23 @@
+package m21.instrumentation
+
+class Dummy
+
+trait Monitor {
+  implicit val dummy: Dummy = new Dummy
+
+  def wait()(implicit i: Dummy) = waitDefault()
+
+  def synchronized[T](e: => T)(implicit i: Dummy) = synchronizedDefault(e)
+
+  def notify()(implicit i: Dummy) = notifyDefault()
+
+  def notifyAll()(implicit i: Dummy) = notifyAllDefault()
+
+  private val lock = new AnyRef
+
+  // Can be overriden.
+  def waitDefault(): Unit = lock.wait()
+  def synchronizedDefault[T](toExecute: =>T): T = lock.synchronized(toExecute)
+  def notifyDefault(): Unit = lock.notify()
+  def notifyAllDefault(): Unit = lock.notifyAll()
+}
diff --git a/previous-exams/2021-midterm/m21/src/test/scala/m21/TestSuite.scala b/previous-exams/2021-midterm/m21/src/test/scala/m21/TestSuite.scala
new file mode 100644
index 0000000..5038092
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/src/test/scala/m21/TestSuite.scala
@@ -0,0 +1,122 @@
+package m21
+
+import scala.concurrent._
+import scala.concurrent.duration._
+import scala.collection.mutable.HashMap
+import scala.util.Random
+import instrumentation._
+import instrumentation.TestHelper._
+import instrumentation.TestUtils._
+
+enum ThreadResult:
+  case WriteError(error: String)
+  case WriteSuccess
+  case Read(result: (Int, Int))
+import ThreadResult._
+
+class M21Suite extends munit.FunSuite:
+  /** If at least one thread resulted in an error,
+   *  return `(false, errorMessage)` otherwise return `(true, "")`.
+   */
+  def processResults(results: List[ThreadResult]): (Boolean, String) =
+    val success = (true, "")
+    results.foldLeft(success) {
+      case (acc @ (false, _), _) =>
+        // Report the first error found
+        acc
+      case (_, WriteError(error)) =>
+        (false, error)
+      case (_, Read((x, y))) if x + 1 != y =>
+        (false, s"Read ($x, $y) but expected y to be ${x + 1}")
+      case (_, _: Read | WriteSuccess) =>
+        success
+    }
+
+  def randomList(length: Int): List[Int] =
+    List.fill(length)(Random.nextInt)
+
+  test("SeqCount: single-threaded write and copy (1 pts)") {
+    val sc = new SeqCount
+    randomList(100).lazyZip(randomList(100)).foreach { (x, y) =>
+      sc.write(x, y)
+      assertEquals(sc.copy(), (x, y))
+    }
+  }
+
+  test("SeqCount: one write thread, two copy threads (4 pts)") {
+    testManySchedules(3, sched =>
+      val sc = new SchedulableSeqCount(sched)
+      // Invariant in this test: y == x + 1
+      sc.write(0, 1)
+
+      val randomValues = randomList(length = 5)
+
+      def writeThread(): ThreadResult =
+        randomValues.foldLeft(WriteSuccess) {
+          case (res: WriteError, _) =>
+            // Report the first error found
+            res
+          case (_, i) =>
+            sc.write(i, i + 1)
+            val writtenValues = (i, i + 1)
+            val readBack = sc.copy()
+            if writtenValues != readBack then
+              WriteError(s"Wrote $writtenValues but read back $readBack")
+            else
+              WriteSuccess
+        }
+
+      def copyThread(): ThreadResult =
+        Read(sc.copy())
+
+      val threads = List(
+        () => writeThread(),
+        () => copyThread(),
+        () => copyThread()
+      )
+
+      (threads, results => processResults(results.asInstanceOf[List[ThreadResult]]))
+    )
+  }
+
+  test("MultiWriterSeqCount: single-threaded write and copy (1 pts)") {
+    val sc = new MultiWriterSeqCount
+    randomList(100).lazyZip(randomList(100)).foreach { (x, y) =>
+      sc.write(x, y)
+      assertEquals(sc.copy(), (x, y))
+    }
+  }
+
+  test("MultiWriterSeqCount: two write threads, two copy threads (4 pts)") {
+    testManySchedules(4, sched =>
+      val msc = new SchedulableMultiWriterSeqCount(sched)
+      // Invariant in this test: y == x + 1
+      msc.write(0, 1)
+
+      val randomValues = randomList(length = 5)
+
+      def writeThread(): ThreadResult =
+        randomValues.foreach(i => msc.write(i, i + 1))
+        // Unlke in the SeqCount test, we do not verify that we can read back
+        // the values we wrote, because the other writer thread might have
+        // overwritten them already.
+        WriteSuccess
+
+      def copyThread(): ThreadResult =
+        Read(msc.copy())
+
+      val threads = List(
+        () => writeThread(),
+        () => writeThread(),
+        () => copyThread(),
+        () => copyThread()
+      )
+
+      (threads, results => processResults(results.asInstanceOf[List[ThreadResult]]))
+    )
+  }
+
+  import scala.concurrent.duration._
+  override val munitTimeout = 200.seconds
+end M21Suite
+
diff --git a/previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/MockedMonitor.scala b/previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/MockedMonitor.scala
new file mode 100644
index 0000000..f7629e1
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/MockedMonitor.scala
@@ -0,0 +1,72 @@
+package m21.instrumentation
+
+trait MockedMonitor extends Monitor {
+  def scheduler: Scheduler
+  
+  // Can be overriden.
+  override def waitDefault() = {
+    scheduler.log("wait")
+    scheduler updateThreadState Wait(this, scheduler.threadLocks.tail)
+  }
+  override def synchronizedDefault[T](toExecute: =>T): T = {
+    scheduler.log("synchronized check") 
+    val prevLocks = scheduler.threadLocks
+    scheduler updateThreadState Sync(this, prevLocks) // If this belongs to prevLocks, should just continue.
+    scheduler.log("synchronized -> enter")
+    try {
+      toExecute
+    } finally {
+      scheduler updateThreadState Running(prevLocks)
+      scheduler.log("synchronized -> out")
+    }    
+  }
+  override def notifyDefault() = {
+    scheduler mapOtherStates {
+      state => state match {
+        case Wait(lockToAquire, locks) if lockToAquire == this => SyncUnique(this, state.locks)
+        case e => e
+      }
+    }
+    scheduler.log("notify")
+  }
+  override def notifyAllDefault() = {
+    scheduler mapOtherStates {
+      state => state match {
+        case Wait(lockToAquire, locks) if lockToAquire == this => Sync(this, state.locks)
+        case SyncUnique(lockToAquire, locks) if lockToAquire == this => Sync(this, state.locks)
+        case e => e
+      }
+    }
+    scheduler.log("notifyAll")
+  }
+}
+
+trait LockFreeMonitor extends Monitor {
+  override def waitDefault() = {
+    throw new Exception("Please use lock-free structures and do not use wait()")
+  }
+  override def synchronizedDefault[T](toExecute: =>T): T = {
+    throw new Exception("Please use lock-free structures and do not use synchronized()")
+  }
+  override def notifyDefault() = {
+    throw new Exception("Please use lock-free structures and do not use notify()")
+  }
+  override def notifyAllDefault() = {
+    throw new Exception("Please use lock-free structures and do not use notifyAll()")
+  }
+}
+
+
+abstract class ThreadState {
+  def locks: Seq[AnyRef]
+}
+trait CanContinueIfAcquiresLock extends ThreadState {
+  def lockToAquire: AnyRef
+}
+case object Start extends ThreadState { def locks: Seq[AnyRef] = Seq.empty }
+case object End extends ThreadState { def locks: Seq[AnyRef] = Seq.empty }
+case class Wait(lockToAquire: AnyRef, locks: Seq[AnyRef]) extends ThreadState
+case class SyncUnique(lockToAquire: AnyRef, locks: Seq[AnyRef]) extends ThreadState with CanContinueIfAcquiresLock
+case class Sync(lockToAquire: AnyRef, locks: Seq[AnyRef]) extends ThreadState with CanContinueIfAcquiresLock
+case class Running(locks: Seq[AnyRef]) extends ThreadState
+case class VariableReadWrite(locks: Seq[AnyRef]) extends ThreadState
diff --git a/previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/Scheduler.scala b/previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/Scheduler.scala
new file mode 100644
index 0000000..cef9ac5
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/Scheduler.scala
@@ -0,0 +1,304 @@
+package m21.instrumentation
+
+import java.util.concurrent._;
+import scala.concurrent.duration._
+import scala.collection.mutable._
+import Stats._
+
+import java.util.concurrent.atomic.AtomicInteger
+
+sealed abstract class Result
+case class RetVal(rets: List[Any]) extends Result
+case class Except(msg: String, stackTrace: Array[StackTraceElement]) extends Result
+case class Timeout(msg: String) extends Result
+
+/**
+ * A class that maintains schedule and a set of thread ids.
+ * The schedules are advanced after an operation of a SchedulableBuffer is performed.
+ * Note: the real schedule that is executed may deviate from the input schedule
+ * due to the adjustments that had to be made for locks
+ */
+class Scheduler(sched: List[Int]) {
+  val maxOps = 500 // a limit on the maximum number of operations the code is allowed to perform
+
+  private var schedule = sched
+  private var numThreads = 0
+  private val realToFakeThreadId = Map[Long, Int]()
+  private val opLog = ListBuffer[String]() // a mutable list (used for efficient concat)
+  private val threadStates = Map[Int, ThreadState]()
+
+  /**
+   * Runs a set of operations in parallel as per the schedule.
+   * Each operation may consist of many primitive operations like reads or writes
+   * to shared data structure each of which should be executed using the function `exec`.
+   * @timeout in milliseconds
+   * @return true - all threads completed on time,  false -some tests timed out.
+   */
+  def runInParallel(timeout: Long, ops: List[() => Any]): Result = {
+    numThreads = ops.length
+    val threadRes = Array.fill(numThreads) { None: Any }
+    var exception: Option[Except] = None
+    val syncObject = new Object()
+    var completed = new AtomicInteger(0)
+    // create threads
+    val threads = ops.zipWithIndex.map {
+      case (op, i) =>
+        new Thread(new Runnable() {
+          def run(): Unit = {
+            val fakeId = i + 1
+            setThreadId(fakeId)
+            try {
+              updateThreadState(Start)
+              val res = op()
+              updateThreadState(End)
+              threadRes(i) = res
+              // notify the master thread if all threads have completed
+              if (completed.incrementAndGet() == ops.length) {
+                syncObject.synchronized { syncObject.notifyAll() }
+              }
+            } catch {
+              case e: Throwable if exception != None => // do nothing here and silently fail
+              case e: Throwable =>
+                log(s"throw ${e.toString}")
+                exception = Some(Except(s"Thread $fakeId crashed on the following schedule: \n" + opLog.mkString("\n"),
+                    e.getStackTrace))
+                syncObject.synchronized { syncObject.notifyAll() }
+              //println(s"$fakeId: ${e.toString}")
+              //Runtime.getRuntime().halt(0) //exit the JVM and all running threads (no other way to kill other threads)
+            }
+          }
+        })
+    }
+    // start all threads
+    threads.foreach(_.start())
+    // wait for all threads to complete, or for an exception to be thrown, or for the time out to expire
+    var remTime = timeout
+    syncObject.synchronized {
+      timed { if(completed.get() != ops.length) syncObject.wait(timeout) } { time => remTime -= time }
+    }
+    if (exception.isDefined) {
+      exception.get
+    } else if (remTime <= 1) { // timeout ? using 1 instead of zero to allow for some errors
+      Timeout(opLog.mkString("\n"))
+    } else {
+      // every thing executed normally
+      RetVal(threadRes.toList)
+    }
+  }
+
+  // Updates the state of the current thread
+  def updateThreadState(state: ThreadState): Unit = {
+    val tid = threadId
+    synchronized {
+      threadStates(tid) = state
+    }
+    state match {
+      case Sync(lockToAquire, locks) =>
+        if (locks.indexOf(lockToAquire) < 0) waitForTurn else {
+          // Re-aqcuiring the same lock
+          updateThreadState(Running(lockToAquire +: locks))
+        }
+      case Start      => waitStart()
+      case End        => removeFromSchedule(tid)
+      case Running(_) =>
+      case _          => waitForTurn // Wait, SyncUnique, VariableReadWrite
+    }
+  }
+
+  def waitStart(): Unit = {
+    //while (threadStates.size < numThreads) {
+    //Thread.sleep(1)
+    //}
+    synchronized {
+      if (threadStates.size < numThreads) {
+        wait()
+      } else {
+        notifyAll()
+      }
+    }
+  }
+
+  def threadLocks = {
+    synchronized {
+      threadStates(threadId).locks
+    }
+  }
+
+  def threadState = {
+    synchronized {
+      threadStates(threadId)
+    }
+  }
+
+  def mapOtherStates(f: ThreadState => ThreadState) = {
+    val exception = threadId
+    synchronized {
+      for (k <- threadStates.keys if k != exception) {
+        threadStates(k) = f(threadStates(k))
+      }
+    }
+  }
+
+  def log(str: String) = {
+    if((realToFakeThreadId contains Thread.currentThread().getId())) {
+      val space = (" " * ((threadId - 1) * 2))
+      val s = space + threadId + ":" + "\n".r.replaceAllIn(str, "\n" + space + "  ")
+      opLog += s
+    }
+  }
+
+  /**
+   * Executes a read or write operation to a global data structure as per the given schedule
+   * @param msg a message corresponding to the operation that will be logged
+   */
+  def exec[T](primop: => T)(msg: => String, postMsg: => Option[T => String] = None): T = {
+    if(! (realToFakeThreadId contains Thread.currentThread().getId())) {
+      primop
+    } else {
+      updateThreadState(VariableReadWrite(threadLocks))
+      val m = msg
+      if(m != "") log(m)
+      if (opLog.size > maxOps)
+        throw new Exception(s"Total number of reads/writes performed by threads exceed $maxOps. A possible deadlock!")
+      val res = primop
+      postMsg match {
+        case Some(m) => log(m(res))
+        case None =>
+      }
+      res
+    }
+  }
+
+  private def setThreadId(fakeId: Int) = synchronized {
+    realToFakeThreadId(Thread.currentThread.getId) = fakeId
+  }
+
+  def threadId =
+    try {
+      realToFakeThreadId(Thread.currentThread().getId())
+    } catch {
+    case e: NoSuchElementException =>
+      throw new Exception("You are accessing shared variables in the constructor. This is not allowed. The variables are already initialized!")
+    }
+
+  private def isTurn(tid: Int) = synchronized {
+    (!schedule.isEmpty && schedule.head != tid)
+  }
+
+  def canProceed(): Boolean = {
+    val tid = threadId
+    canContinue match {
+      case Some((i, state)) if i == tid =>
+        //println(s"$tid: Runs ! Was in state $state")
+        canContinue = None
+        state match {
+          case Sync(lockToAquire, locks) => updateThreadState(Running(lockToAquire +: locks))
+          case SyncUnique(lockToAquire, locks) =>
+            mapOtherStates {
+              _ match {
+                case SyncUnique(lockToAquire2, locks2) if lockToAquire2 == lockToAquire => Wait(lockToAquire2, locks2)
+                case e => e
+              }
+            }
+            updateThreadState(Running(lockToAquire +: locks))
+          case VariableReadWrite(locks) => updateThreadState(Running(locks))
+        }
+        true
+      case Some((i, state)) =>
+        //println(s"$tid: not my turn but $i !")
+        false
+      case None =>
+        false
+    }
+  }
+
+  var threadPreference = 0 // In the case the schedule is over, which thread should have the preference to execute.
+
+  /** returns true if the thread can continue to execute, and false otherwise */
+  def decide(): Option[(Int, ThreadState)] = {
+    if (!threadStates.isEmpty) { // The last thread who enters the decision loop takes the decision.
+      //println(s"$threadId: I'm taking a decision")
+      if (threadStates.values.forall { case e: Wait => true case _ => false }) {
+        val waiting = threadStates.keys.map(_.toString).mkString(", ")
+        val s = if (threadStates.size > 1) "s" else ""
+        val are = if (threadStates.size > 1) "are" else "is"
+        throw new Exception(s"Deadlock: Thread$s $waiting $are waiting but all others have ended and cannot notify them.")
+      } else {
+        // Threads can be in Wait, Sync, SyncUnique, and VariableReadWrite mode.
+        // Let's determine which ones can continue.
+        val notFree = threadStates.collect { case (id, state) => state.locks }.flatten.toSet
+        val threadsNotBlocked = threadStates.toSeq.filter {
+          case (id, v: VariableReadWrite)         => true
+          case (id, v: CanContinueIfAcquiresLock) => !notFree(v.lockToAquire) || (v.locks contains v.lockToAquire)
+          case _                                  => false
+        }
+        if (threadsNotBlocked.isEmpty) {
+          val waiting = threadStates.keys.map(_.toString).mkString(", ")
+          val s = if (threadStates.size > 1) "s" else ""
+          val are = if (threadStates.size > 1) "are" else "is"
+          val whoHasLock = threadStates.toSeq.flatMap { case (id, state) => state.locks.map(lock => (lock, id)) }.toMap
+          val reason = threadStates.collect {
+            case (id, state: CanContinueIfAcquiresLock) if !notFree(state.lockToAquire) =>
+              s"Thread $id is waiting on lock ${state.lockToAquire} held by thread ${whoHasLock(state.lockToAquire)}"
+          }.mkString("\n")
+          throw new Exception(s"Deadlock: Thread$s $waiting are interlocked. Indeed:\n$reason")
+        } else if (threadsNotBlocked.size == 1) { // Do not consume the schedule if only one thread can execute.
+          Some(threadsNotBlocked(0))
+        } else {
+          val next = schedule.indexWhere(t => threadsNotBlocked.exists { case (id, state) => id == t })
+          if (next != -1) {
+            //println(s"$threadId: schedule is $schedule, next chosen is ${schedule(next)}")
+            val chosenOne = schedule(next) // TODO: Make schedule a mutable list.
+            schedule = schedule.take(next) ++ schedule.drop(next + 1)
+            Some((chosenOne, threadStates(chosenOne)))
+          } else {
+            threadPreference = (threadPreference + 1) % threadsNotBlocked.size
+            val chosenOne = threadsNotBlocked(threadPreference) // Maybe another strategy
+            Some(chosenOne)
+            //threadsNotBlocked.indexOf(threadId) >= 0
+            /*
+            val tnb = threadsNotBlocked.map(_._1).mkString(",")
+            val s = if (schedule.isEmpty) "empty" else schedule.mkString(",")
+            val only = if (schedule.isEmpty) "" else " only"
+            throw new Exception(s"The schedule is $s but$only threads ${tnb} can continue")*/
+          }
+        }
+      }
+    } else canContinue
+  }
+
+  /**
+   * This will be called before a schedulable operation begins.
+   * This should not use synchronized
+   */
+  var numThreadsWaiting = new AtomicInteger(0)
+  //var waitingForDecision = Map[Int, Option[Int]]() // Mapping from thread ids to a number indicating who is going to make the choice.
+  var canContinue: Option[(Int, ThreadState)] = None // The result of the decision thread Id of the thread authorized to continue.
+  private def waitForTurn = {
+    synchronized {
+      if (numThreadsWaiting.incrementAndGet() == threadStates.size) {
+        canContinue = decide()
+        notifyAll()
+      }
+      //waitingForDecision(threadId) = Some(numThreadsWaiting)
+      //println(s"$threadId Entering waiting with ticket number $numThreadsWaiting/${waitingForDecision.size}")
+      while (!canProceed()) wait()
+    }
+    numThreadsWaiting.decrementAndGet()
+  }
+
+  /**
+   * To be invoked when a thread is about to complete
+   */
+  private def removeFromSchedule(fakeid: Int) = synchronized {
+    //println(s"$fakeid: I'm taking a decision because I finished")
+    schedule = schedule.filterNot(_ == fakeid)
+    threadStates -= fakeid
+    if (numThreadsWaiting.get() == threadStates.size) {
+      canContinue = decide()
+      notifyAll()
+    }
+  }
+
+  def getOperationLog() = opLog
+}
diff --git a/previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/Stats.scala b/previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/Stats.scala
new file mode 100644
index 0000000..6eb7239
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/Stats.scala
@@ -0,0 +1,23 @@
+/* Copyright 2009-2015 EPFL, Lausanne */
+package m21.instrumentation
+
+import java.lang.management._
+
+/**
+ * A collection of methods that can be used to collect run-time statistics about Leon programs.
+ * This is mostly used to test the resources properties of Leon programs
+ */
+object Stats {
+  def timed[T](code: => T)(cont: Long => Unit): T = {
+    var t1 = System.currentTimeMillis()
+    val r = code
+    cont((System.currentTimeMillis() - t1))
+    r
+  }
+
+  def withTime[T](code: => T): (T, Long) = {
+    var t1 = System.currentTimeMillis()
+    val r = code
+    (r, (System.currentTimeMillis() - t1))
+  }
+}
diff --git a/previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/TestHelper.scala b/previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/TestHelper.scala
new file mode 100644
index 0000000..5be75d6
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/TestHelper.scala
@@ -0,0 +1,124 @@
+package m21.instrumentation
+
+import scala.util.Random
+import scala.collection.mutable.{Map => MutableMap}
+
+import Stats._
+
+object TestHelper {
+  val noOfSchedules = 10000 // set this to 100k during deployment
+  val readWritesPerThread = 20 // maximum number of read/writes possible in one thread
+  val contextSwitchBound = 10
+  val testTimeout = 150 // the total time out for a test in seconds
+  val schedTimeout = 15 // the total time out for execution of a schedule in secs
+
+  // Helpers
+  /*def testManySchedules(op1: => Any): Unit = testManySchedules(List(() => op1))
+  def testManySchedules(op1: => Any, op2: => Any): Unit = testManySchedules(List(() => op1, () => op2))
+  def testManySchedules(op1: => Any, op2: => Any, op3: => Any): Unit = testManySchedules(List(() => op1, () => op2, () => op3))
+  def testManySchedules(op1: => Any, op2: => Any, op3: => Any, op4: => Any): Unit = testManySchedules(List(() => op1, () => op2, () => op3, () => op4))*/
+
+  def testSequential[T](ops: Scheduler => Any)(assertions: T => (Boolean, String)) =
+    testManySchedules(1,
+      (sched: Scheduler) => {
+        (List(() => ops(sched)),
+         (res: List[Any]) => assertions(res.head.asInstanceOf[T]))
+      })
+
+  /**
+   * @numThreads number of threads
+   * @ops operations to be executed, one per thread
+   * @assertion as condition that will executed after all threads have completed (without exceptions)
+   * 					 the arguments are the results of the threads
+   */
+  def testManySchedules(numThreads: Int,
+      ops: Scheduler =>
+        (List[() => Any], // Threads
+         List[Any] => (Boolean, String)) // Assertion
+      ) = {
+    var timeout = testTimeout * 1000L
+    val threadIds = (1 to numThreads)
+    //(1 to scheduleLength).flatMap(_ => threadIds).toList.permutations.take(noOfSchedules).foreach {
+    val schedules = (new ScheduleGenerator(numThreads)).schedules()
+    var schedsExplored = 0
+    schedules.takeWhile(_ => schedsExplored <= noOfSchedules && timeout > 0).foreach {
+      //case _ if timeout <= 0 => // break
+      case schedule =>
+        schedsExplored += 1
+        val schedr = new Scheduler(schedule)
+        //println("Exploring Sched: "+schedule)
+        val (threadOps, assertion) = ops(schedr)
+        if (threadOps.size != numThreads)
+          throw new IllegalStateException(s"Number of threads: $numThreads, do not match operations of threads: $threadOps")
+        timed { schedr.runInParallel(schedTimeout * 1000, threadOps) } { t => timeout -= t } match {
+          case Timeout(msg) =>
+            throw new java.lang.AssertionError("assertion failed\n"+"The schedule took too long to complete. A possible deadlock! \n"+msg)
+          case Except(msg, stkTrace) =>
+            val traceStr = "Thread Stack trace: \n"+stkTrace.map(" at "+_.toString).mkString("\n")
+            throw new java.lang.AssertionError("assertion failed\n"+msg+"\n"+traceStr)
+          case RetVal(threadRes) =>
+            // check the assertion
+            val (success, custom_msg) = assertion(threadRes)
+            if (!success) {
+              val msg = "The following schedule resulted in wrong results: \n" + custom_msg + "\n" + schedr.getOperationLog().mkString("\n")
+              throw new java.lang.AssertionError("Assertion failed: "+msg)
+            }
+        }
+    }
+    if (timeout <= 0) {
+      throw new java.lang.AssertionError("Test took too long to complete! Cannot check all schedules as your code is too slow!")
+    }
+  }
+
+  /**
+   * A schedule generator that is based on the context bound
+   */
+  class ScheduleGenerator(numThreads: Int) {
+    val scheduleLength = readWritesPerThread * numThreads
+    val rands = (1 to scheduleLength).map(i => new Random(0xcafe * i)) // random numbers for choosing a thread at each position
+    def schedules(): LazyList[List[Int]] = {
+      var contextSwitches = 0
+      var contexts = List[Int]() // a stack of thread ids in the order of context-switches
+      val remainingOps = MutableMap[Int, Int]()
+      remainingOps ++= (1 to numThreads).map(i => (i, readWritesPerThread)) // num ops remaining in each thread
+      val liveThreads = (1 to numThreads).toSeq.toBuffer
+
+      /**
+       * Updates remainingOps and liveThreads once a thread is chosen for a position in the schedule
+       */
+      def updateState(tid: Int): Unit = {
+        val remOps = remainingOps(tid)
+        if (remOps == 0) {
+          liveThreads -= tid
+        } else {
+          remainingOps += (tid -> (remOps - 1))
+        }
+      }
+      val schedule = rands.foldLeft(List[Int]()) {
+        case (acc, r) if contextSwitches < contextSwitchBound =>
+          val tid = liveThreads(r.nextInt(liveThreads.size))
+          contexts match {
+            case prev :: tail if prev != tid => // we have a new context switch here
+              contexts +:= tid
+              contextSwitches += 1
+            case prev :: tail =>
+            case _ => // init case
+              contexts +:= tid
+          }
+          updateState(tid)
+          acc :+ tid
+        case (acc, _) => // here context-bound has been reached so complete the schedule without any more context switches
+          if (!contexts.isEmpty) {
+            contexts = contexts.dropWhile(remainingOps(_) == 0)
+          }
+          val tid = contexts match {
+            case top :: tail => top
+            case _ => liveThreads(0)  // here, there has to be threads that have not even started
+          }
+          updateState(tid)
+          acc :+ tid
+      }
+      schedule #:: schedules()
+    }
+  }
+}
diff --git a/previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/TestUtils.scala b/previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/TestUtils.scala
new file mode 100644
index 0000000..5da7604
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/src/test/scala/m21/instrumentation/TestUtils.scala
@@ -0,0 +1,19 @@
+package m21.instrumentation
+
+import scala.concurrent._
+import scala.concurrent.duration._
+import scala.concurrent.ExecutionContext.Implicits.global
+
+object TestUtils {
+  def failsOrTimesOut[T](action: => T): Boolean = {
+    val asyncAction = Future {
+      action
+    }
+    try {
+      Await.result(asyncAction, 2000.millisecond)
+    } catch {
+      case _: Throwable => return true
+    }
+    return false
+  }
+}
diff --git a/previous-exams/2021-midterm/m21/src/test/scala/m21/overrides.scala b/previous-exams/2021-midterm/m21/src/test/scala/m21/overrides.scala
new file mode 100644
index 0000000..92d0cec
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/src/test/scala/m21/overrides.scala
@@ -0,0 +1,68 @@
+package m21
+
+import instrumentation._
+
+import scala.annotation.tailrec
+import java.util.concurrent.atomic._
+
+class SchedulableAtomicVariable[T](initial: T, scheduler: Scheduler, name: String) extends AbstractAtomicVariable[T]:
+  private val proxied: AtomicVariable[T] = new AtomicVariable[T](initial)
+
+  override def get: T = scheduler.exec {
+    proxied.get
+  } (s"", Some(res => s"$name: get $res"))
+
+  override def set(value: T): Unit = scheduler.exec {
+    proxied.set(value)
+  } (s"$name: set $value", None)
+
+  override def compareAndSet(expected: T, newValue: T): Boolean = {
+    scheduler.exec {
+      proxied.compareAndSet(expected, newValue)
+    } (s"$name: compareAndSet(expected = $expected, newValue = $newValue)", Some(res => s"$name: Did it set? $res") )
+  }
+
+end SchedulableAtomicVariable
+
+class SchedulableSeqCount(val scheduler: Scheduler) extends SeqCount with LockFreeMonitor:
+  override def generation: Int = scheduler.exec {
+    super.generation
+  } ("", Some(res => s"generation is $res"))
+  override def setGeneration(newGeneration: Int): Unit = scheduler.exec {
+    super.setGeneration(newGeneration)
+  } ( s"setGeneration($newGeneration)", None )
+
+  override def x: Int = scheduler.exec {
+    super.x
+  } ("", Some(res => s"x is $res"))
+  override def setX(newX: Int): Unit = scheduler.exec {
+    super.setX(newX)
+  } (s"setX($newX)", None)
+
+  override def y: Int = scheduler.exec {
+    super.y
+  } ("", Some(res => s"y is $res"))
+  override def setY(newY: Int): Unit = scheduler.exec {
+    super.setY(newY)
+  } (s"setY($newY)", None)
+
+end SchedulableSeqCount
+
+class SchedulableMultiWriterSeqCount(val scheduler: Scheduler) extends MultiWriterSeqCount with LockFreeMonitor:
+  override protected val myGeneration: AbstractAtomicVariable[Int] = new SchedulableAtomicVariable(1, scheduler, "myGeneration")
+
+  override def x: Int = scheduler.exec {
+    super.x
+  } ("", Some(res => s"x is $res"))
+  override def setX(newX: Int): Unit = scheduler.exec {
+    super.setX(newX)
+  } (s"setX($newX)", None)
+
+  override def y: Int = scheduler.exec {
+    super.y
+  } ("", Some(res => s"y is $res"))
+  override def setY(newY: Int): Unit = scheduler.exec {
+    super.setY(newY)
+  } (s"setY($newY)", None)
+
+end SchedulableMultiWriterSeqCount
diff --git a/previous-exams/2021-midterm/m3.md b/previous-exams/2021-midterm/m3.md
new file mode 100644
index 0000000..ee3969e
--- /dev/null
+++ b/previous-exams/2021-midterm/m3.md
@@ -0,0 +1,61 @@
+Use the following commands to make a fresh clone of your repository:
+
+```
+git clone -b m3 git@gitlab.epfl.ch:lamp/student-repositories-s21/cs206-GASPAR.git m3
+```
+
+## Useful links
+
+  * [A guide to the Scala parallel collections](https://docs.scala-lang.org/overviews/parallel-collections/overview.html)
+  * [The API documentation of the Scala parallel collections](https://www.javadoc.io/doc/org.scala-lang.modules/scala-parallel-collections_2.13/latest/scala/collection/index.html)
+  * [The API documentation of the Scala standard library](https://www.scala-lang.org/files/archive/api/2.13.4)
+  * [The API documentation of the Java standard library](https://docs.oracle.com/en/java/javase/15/docs/api/index.html)
+
+**If you have issues with the IDE, try [reimporting the
+build](https://gitlab.epfl.ch/lamp/cs206/-/blob/master/labs/example-lab.md#ide-features-like-type-on-hover-or-go-to-definition-do-not-work),
+if you still have problems, use `compile` in sbt instead.**
+
+## Exercise
+
+Given the following sequential implementation of a function that computes the sequence of rolling windowed averages, your task will be to complete and optimize a parallel version of this code.
+
+```scala
+/** Compute the rolling windowed mean of an array.
+  *
+  *  For an array `arr = Arr(x1, x2, x3, ..., x_n)` the result is
+  *  `Arr(x1, (x1+x2)/2, (x1+x2+x3)/3, (x2+x3+x4)/3, ..., (x_{n-2}, x_{n-1}, x_n)/n)`
+  */
+def rollingWinMeanParallel(arr: Arr[Int]): Arr[Double] = {
+  // Transform all numbers to averages of window of size 1
+  val arr1 = arr.map(x => AvgWin(x :: Nil))
+  // Compute the rolling windowed average by combining the windows together
+  val arr2 = arr1.scan(AvgWin(Nil))((acc, x) => acc.pushAll(x))
+  // Transform the windowed averages to Doubles
+  arr2.map(win => win.toDouble)
+  // Drop the extra initial element that was added by the scan
+  arr3.tail
+```
+
+ This implementation has some issues:
+ - It does not use parallelism
+ - Creates two intermediate arrays by calling `map`
+ - Creates an extra intermediate arrays by calling `tail`
+ - Scan returns an extra element we do not need
+
+ We want to parallelize and avoid the creation of the extra arrays.
+ As we are calling a `scan` the natural operations we need are `upsweep` and `downsweep`.
+ It is possible specialize those operations for our problem by letting those operations do the mapping.
+ It is also possible to change those operations to not generate the first element.
+
+We give you a version of `rollingWinMeanSequential` that partially implements the parallelization using `upsweep` and `downsweep`.
+
+ Your tasks in the exercise will be to:
+ - TASK 1: Implement the parallelization of `upsweep` and `downsweep`
+ - TASK 2: Remove the calls to the `map`
+ - TASK 3: Remove the call to `tail`
+
+ You can get partial points for solving part of the tasks.
+ The order of the tasks is a suggestion, you may do them in any order if that is simpler for you.
+
+Look at the `Lib` trait to find the definitions of functions and classes you can use (or already used).
+In this question we use a `Arr` array class instead of the normal `Array`. You may assume that this class has the same performance characteristics as the normal array. `Arr` provides only a limited set of operations.
diff --git a/previous-exams/2021-midterm/m3/.gitignore b/previous-exams/2021-midterm/m3/.gitignore
new file mode 100644
index 0000000..40937dc
--- /dev/null
+++ b/previous-exams/2021-midterm/m3/.gitignore
@@ -0,0 +1,22 @@
+# General
+*.DS_Store
+*.swp
+*~
+
+# Dotty
+*.class
+*.tasty
+*.hasTasty
+
+# sbt
+target/
+
+# IDE
+.bsp
+.bloop
+.metals
+.vscode
+
+# datasets
+stackoverflow-grading.csv
+wikipedia-grading.dat
diff --git a/previous-exams/2021-midterm/m3/assignment.sbt b/previous-exams/2021-midterm/m3/assignment.sbt
new file mode 100644
index 0000000..da7eb3c
--- /dev/null
+++ b/previous-exams/2021-midterm/m3/assignment.sbt
@@ -0,0 +1,2 @@
+// Student tasks (i.e. submit, packageSubmission)
+enablePlugins(StudentTasks)
diff --git a/previous-exams/2021-midterm/m3/build.sbt b/previous-exams/2021-midterm/m3/build.sbt
new file mode 100644
index 0000000..b15645a
--- /dev/null
+++ b/previous-exams/2021-midterm/m3/build.sbt
@@ -0,0 +1,12 @@
+course := "midterm"
+assignment := "m3"
+scalaVersion := "3.0.0-RC1"
+scalacOptions ++= Seq("-language:implicitConversions", "-deprecation")
+
+libraryDependencies += "org.scalameta" %% "munit" % "0.7.22"
+
+val MUnitFramework = new TestFramework("munit.Framework")
+testFrameworks += MUnitFramework
+// Decode Scala names
+testOptions += Tests.Argument(MUnitFramework, "-s")
+testSuite := "m3.M3Suite"
diff --git a/previous-exams/2021-midterm/m3/grading-tests.jar b/previous-exams/2021-midterm/m3/grading-tests.jar
new file mode 100644
index 0000000000000000000000000000000000000000..dea8c3895d7df93482a29b4f7e0c85a5f13b7c12
GIT binary patch
literal 34429
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
bj6q%95a7+q2C|WlfsbJZ3j@RXMi37GyczZC

literal 0
HcmV?d00001

diff --git a/previous-exams/2021-midterm/m3/project/FilteringReporterPlugin.scala b/previous-exams/2021-midterm/m3/project/FilteringReporterPlugin.scala
new file mode 100644
index 0000000..2e4fd9a
--- /dev/null
+++ b/previous-exams/2021-midterm/m3/project/FilteringReporterPlugin.scala
@@ -0,0 +1,31 @@
+package sbt // To access the private[sbt] compilerReporter key
+package filteringReporterPlugin
+
+import Keys._
+import ch.epfl.lamp._
+
+object FilteringReporterPlugin extends AutoPlugin {
+  override lazy val projectSettings = Seq(
+    // Turn off warning coming from scalameter that we cannot fix without changing scalameter
+    compilerReporter in (Compile, compile) ~= { reporter => new FilteringReporter(reporter) }
+  )
+}
+
+class FilteringReporter(reporter: xsbti.Reporter) extends xsbti.Reporter {
+
+  def reset(): Unit = reporter.reset()
+  def hasErrors: Boolean = reporter.hasErrors
+  def hasWarnings: Boolean = reporter.hasWarnings
+  def printSummary(): Unit = reporter.printSummary()
+  def problems: Array[xsbti.Problem] = reporter.problems
+
+  def log(problem: xsbti.Problem): Unit = {
+    if (!problem.message.contains("An existential type that came from a Scala-2 classfile cannot be"))
+      reporter.log(problem)
+  }
+
+  def comment(pos: xsbti.Position, msg: String): Unit =
+    reporter.comment(pos, msg)
+
+  override def toString = s"CollectingReporter($reporter)"
+}
diff --git a/previous-exams/2021-midterm/m3/project/MOOCSettings.scala b/previous-exams/2021-midterm/m3/project/MOOCSettings.scala
new file mode 100644
index 0000000..1c40443
--- /dev/null
+++ b/previous-exams/2021-midterm/m3/project/MOOCSettings.scala
@@ -0,0 +1,49 @@
+package ch.epfl.lamp
+
+import sbt._
+import sbt.Keys._
+
+/**
+ * Coursera uses two versions of each assignment. They both have the same assignment key and part id but have
+ * different item ids.
+ *
+ * @param key Assignment key
+ * @param partId Assignment partId
+ * @param itemId Item id of the non premium version
+ * @param premiumItemId Item id of the premium version (`None` if the assignment is optional)
+ */
+case class CourseraId(key: String, partId: String, itemId: String, premiumItemId: Option[String])
+
+/**
+  * Settings shared by all assignments, reused in various tasks.
+  */
+object MOOCSettings extends AutoPlugin {
+
+  override def requires = super.requires && filteringReporterPlugin.FilteringReporterPlugin
+
+  object autoImport {
+    val course = SettingKey[String]("course")
+    val assignment = SettingKey[String]("assignment")
+    val options = SettingKey[Map[String, Map[String, String]]]("options")
+    val courseraId = settingKey[CourseraId]("Coursera-specific information identifying the assignment")
+    val testSuite = settingKey[String]("Fully qualified name of the test suite of this assignment")
+      .withRank(KeyRanks.Invisible)
+    // Convenient alias
+    type CourseraId = ch.epfl.lamp.CourseraId
+    val CourseraId = ch.epfl.lamp.CourseraId
+  }
+
+  import autoImport._
+
+  override val globalSettings: Seq[Def.Setting[_]] = Seq(
+    // supershell is verbose, buggy and useless.
+    useSuperShell := false
+  )
+
+  override val projectSettings: Seq[Def.Setting[_]] = Seq(
+    parallelExecution in Test := false,
+    // Report test result after each test instead of waiting for every test to finish
+    logBuffered in Test := false,
+    name := s"${course.value}-${assignment.value}"
+  )
+}
diff --git a/previous-exams/2021-midterm/m3/project/StudentTasks.scala b/previous-exams/2021-midterm/m3/project/StudentTasks.scala
new file mode 100644
index 0000000..c4669af
--- /dev/null
+++ b/previous-exams/2021-midterm/m3/project/StudentTasks.scala
@@ -0,0 +1,303 @@
+package ch.epfl.lamp
+
+import sbt._
+import Keys._
+
+// import scalaj.http._
+import java.io.{File, FileInputStream, IOException}
+import org.apache.commons.codec.binary.Base64
+// import play.api.libs.json.{Json, JsObject, JsPath}
+import scala.util.{Failure, Success, Try}
+
+/**
+  * Provides tasks for submitting the assignment
+  */
+object StudentTasks extends AutoPlugin {
+
+  override def requires = super.requires && MOOCSettings
+
+  object autoImport {
+    val packageSourcesOnly = TaskKey[File]("packageSourcesOnly", "Package the sources of the project")
+    val packageBinWithoutResources = TaskKey[File]("packageBinWithoutResources", "Like packageBin, but without the resources")
+    val packageSubmissionZip = TaskKey[File]("packageSubmissionZip")
+    val packageSubmission = inputKey[Unit]("package solution as an archive file")
+
+    lazy val Grading = config("grading") extend(Runtime)
+  }
+
+
+  import autoImport._
+  import MOOCSettings.autoImport._
+
+  override lazy val projectSettings = Seq(
+    packageSubmissionSetting,
+    fork := true,
+    connectInput in run := true,
+    outputStrategy := Some(StdoutOutput),
+  ) ++
+    packageSubmissionZipSettings ++
+    inConfig(Grading)(Defaults.testSettings ++ Seq(
+      unmanagedJars += file("grading-tests.jar"),
+
+      definedTests := (definedTests in Test).value,
+      internalDependencyClasspath := (internalDependencyClasspath in Test).value
+    ))
+
+
+  /** **********************************************************
+    * SUBMITTING A SOLUTION TO COURSERA
+    */
+
+  val packageSubmissionZipSettings = Seq(
+    packageSubmissionZip := {
+      val submission = crossTarget.value / "submission.zip"
+      val sources = (packageSourcesOnly in Compile).value
+      val binaries = (packageBinWithoutResources in Compile).value
+      IO.zip(Seq(sources -> "sources.zip", binaries -> "binaries.jar"), submission, None)
+      submission
+    },
+    artifactClassifier in packageSourcesOnly := Some("sources"),
+    artifact in (Compile, packageBinWithoutResources) ~= (art => art.withName(art.name + "-without-resources"))
+  ) ++
+  inConfig(Compile)(
+    Defaults.packageTaskSettings(packageSourcesOnly, Defaults.sourceMappings) ++
+    Defaults.packageTaskSettings(packageBinWithoutResources, Def.task {
+      val relativePaths =
+        (unmanagedResources in Compile).value.flatMap(Path.relativeTo((unmanagedResourceDirectories in Compile).value)(_))
+      (mappings in (Compile, packageBin)).value.filterNot { case (_, path) => relativePaths.contains(path) }
+    })
+  )
+
+  val maxSubmitFileSize = {
+    val mb = 1024 * 1024
+    10 * mb
+  }
+
+  /** Check that the jar exists, isn't empty, isn't crazy big, and can be read
+    * If so, encode jar as base64 so we can send it to Coursera
+    */
+  def prepareJar(jar: File, s: TaskStreams): String = {
+    val errPrefix = "Error submitting assignment jar: "
+    val fileLength = jar.length()
+    if (!jar.exists()) {
+      s.log.error(errPrefix + "jar archive does not exist\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength == 0L) {
+      s.log.error(errPrefix + "jar archive is empty\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength > maxSubmitFileSize) {
+      s.log.error(errPrefix + "jar archive is too big. Allowed size: " +
+        maxSubmitFileSize + " bytes, found " + fileLength + " bytes.\n" +
+        jar.getAbsolutePath)
+      failSubmit()
+    } else {
+      val bytes = new Array[Byte](fileLength.toInt)
+      val sizeRead = try {
+        val is = new FileInputStream(jar)
+        val read = is.read(bytes)
+        is.close()
+        read
+      } catch {
+        case ex: IOException =>
+          s.log.error(errPrefix + "failed to read sources jar archive\n" + ex.toString)
+          failSubmit()
+      }
+      if (sizeRead != bytes.length) {
+        s.log.error(errPrefix + "failed to read the sources jar archive, size read: " + sizeRead)
+        failSubmit()
+      } else encodeBase64(bytes)
+    }
+  }
+
+  /** Task to package solution to a given file path */
+  lazy val packageSubmissionSetting = packageSubmission := {
+    val args: Seq[String] = Def.spaceDelimited("[path]").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val base64Jar = prepareJar(jar, s)
+
+    val path = args.headOption.getOrElse((baseDirectory.value / "submission.jar").absolutePath)
+    scala.tools.nsc.io.File(path).writeAll(base64Jar)
+  }
+
+/*
+  /** Task to submit a solution to coursera */
+  val submit = inputKey[Unit]("submit solution to Coursera")
+  lazy val submitSetting = submit := {
+    // Fail if scalafix linting does not pass.
+    scalafixLinting.value
+
+    val args: Seq[String] = Def.spaceDelimited("<arg>").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val assignmentDetails =
+      courseraId.?.value.getOrElse(throw new MessageOnlyException("This assignment can not be submitted to Coursera because the `courseraId` setting is undefined"))
+    val assignmentKey = assignmentDetails.key
+    val courseName =
+      course.value match {
+        case "capstone" => "scala-capstone"
+        case "bigdata"  => "scala-spark-big-data"
+        case other      => other
+      }
+
+    val partId = assignmentDetails.partId
+    val itemId = assignmentDetails.itemId
+    val premiumItemId = assignmentDetails.premiumItemId
+
+    val (email, secret) = args match {
+      case email :: secret :: Nil =>
+        (email, secret)
+      case _ =>
+        val inputErr =
+          s"""|Invalid input to `submit`. The required syntax for `submit` is:
+              |submit <email-address> <submit-token>
+              |
+              |The submit token is NOT YOUR LOGIN PASSWORD.
+              |It can be obtained from the assignment page:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId
+              |${
+                premiumItemId.fold("") { id =>
+                  s"""or (for premium learners):
+                     |https://www.coursera.org/learn/$courseName/programming/$id
+                   """.stripMargin
+                }
+              }
+          """.stripMargin
+        s.log.error(inputErr)
+        failSubmit()
+    }
+
+    val base64Jar = prepareJar(jar, s)
+    val json =
+      s"""|{
+          |   "assignmentKey":"$assignmentKey",
+          |   "submitterEmail":"$email",
+          |   "secret":"$secret",
+          |   "parts":{
+          |      "$partId":{
+          |         "output":"$base64Jar"
+          |      }
+          |   }
+          |}""".stripMargin
+
+    def postSubmission[T](data: String): Try[HttpResponse[String]] = {
+      val http = Http("https://www.coursera.org/api/onDemandProgrammingScriptSubmissions.v1")
+      val hs = List(
+        ("Cache-Control", "no-cache"),
+        ("Content-Type", "application/json")
+      )
+      s.log.info("Connecting to Coursera...")
+      val response = Try(http.postData(data)
+                         .headers(hs)
+                         .option(HttpOptions.connTimeout(10000)) // scalaj default timeout is only 100ms, changing that to 10s
+                         .asString) // kick off HTTP POST
+      response
+    }
+
+    val connectMsg =
+      s"""|Attempting to submit "${assignment.value}" assignment in "$courseName" course
+          |Using:
+          |- email: $email
+          |- submit token: $secret""".stripMargin
+    s.log.info(connectMsg)
+
+    def reportCourseraResponse(response: HttpResponse[String]): Unit = {
+      val code = response.code
+      val respBody = response.body
+
+       /* Sample JSON response from Coursera
+      {
+        "message": "Invalid email or token.",
+        "details": {
+          "learnerMessage": "Invalid email or token."
+        }
+      }
+      */
+
+      // Success, Coursera responds with 2xx HTTP status code
+      if (response.is2xx) {
+        val successfulSubmitMsg =
+          s"""|Successfully connected to Coursera. (Status $code)
+              |
+                |Assignment submitted successfully!
+              |
+                |You can see how you scored by going to:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId/
+              |${
+            premiumItemId.fold("") { id =>
+              s"""or (for premium learners):
+                 |https://www.coursera.org/learn/$courseName/programming/$id
+                       """.stripMargin
+            }
+          }
+              |and clicking on "My Submission".""".stripMargin
+        s.log.info(successfulSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 4xx HTTP status code (client-side failure)
+      else if (response.is4xx) {
+        val result = Try(Json.parse(respBody)).toOption
+        val learnerMsg = result match {
+          case Some(resp: JsObject) =>
+            (JsPath \ "details" \ "learnerMessage").read[String].reads(resp).get
+          case Some(x) => // shouldn't happen
+            "Could not parse Coursera's response:\n" + x
+          case None =>
+            "Could not parse Coursera's response:\n" + respBody
+        }
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |There was something wrong while attempting to submit.
+              |Coursera says:
+              |$learnerMsg (Status $code)""".stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 5xx HTTP status code (server-side failure)
+      else if (response.is5xx) {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera seems to be unavailable at the moment (Status $code)
+              |Check https://status.coursera.org/ and try again in a few minutes.
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera repsonds with an unexpected status code
+      else {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera replied with an unexpected code (Status $code)
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+    }
+
+    // kick it all off, actually make request
+    postSubmission(json) match {
+      case Success(resp) => reportCourseraResponse(resp)
+      case Failure(e) =>
+        val failedConnectMsg =
+          s"""|Connection to Coursera failed.
+              |There was something wrong while attempting to connect to Coursera.
+              |Check your internet connection.
+              |${e.toString}""".stripMargin
+        s.log.error(failedConnectMsg)
+    }
+
+   }
+*/
+
+  def failSubmit(): Nothing = {
+    sys.error("Submission failed")
+  }
+
+  /**
+    * *****************
+    * DEALING WITH JARS
+    */
+  def encodeBase64(bytes: Array[Byte]): String =
+    new String(Base64.encodeBase64(bytes))
+}
diff --git a/previous-exams/2021-midterm/m3/project/build.properties b/previous-exams/2021-midterm/m3/project/build.properties
new file mode 100644
index 0000000..0b2e09c
--- /dev/null
+++ b/previous-exams/2021-midterm/m3/project/build.properties
@@ -0,0 +1 @@
+sbt.version=1.4.7
diff --git a/previous-exams/2021-midterm/m3/project/buildSettings.sbt b/previous-exams/2021-midterm/m3/project/buildSettings.sbt
new file mode 100644
index 0000000..8fac702
--- /dev/null
+++ b/previous-exams/2021-midterm/m3/project/buildSettings.sbt
@@ -0,0 +1,5 @@
+// Used for Coursera submission (StudentPlugin)
+// libraryDependencies += "org.scalaj" %% "scalaj-http" % "2.4.2"
+// libraryDependencies += "com.typesafe.play" %% "play-json" % "2.7.4"
+// Used for Base64 (StudentPlugin)
+libraryDependencies += "commons-codec" % "commons-codec" % "1.10"
diff --git a/previous-exams/2021-midterm/m3/project/plugins.sbt b/previous-exams/2021-midterm/m3/project/plugins.sbt
new file mode 100644
index 0000000..021c019
--- /dev/null
+++ b/previous-exams/2021-midterm/m3/project/plugins.sbt
@@ -0,0 +1,2 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.5.3")
diff --git a/previous-exams/2021-midterm/m3/src/main/scala/m3/Lib.scala b/previous-exams/2021-midterm/m3/src/main/scala/m3/Lib.scala
new file mode 100644
index 0000000..68e89db
--- /dev/null
+++ b/previous-exams/2021-midterm/m3/src/main/scala/m3/Lib.scala
@@ -0,0 +1,68 @@
+package m3
+
+////////////////////////////////////////
+// NO NEED TO MODIFY THIS SOURCE FILE //
+////////////////////////////////////////
+
+trait Lib {
+
+  /** If an array has `n` elements and `n < THRESHOLD`, then it should be processed sequentially */
+  final val THRESHOLD: Int = 33
+
+  /** Compute the two values in parallel
+   *
+   *  Note: Most tests just compute those two sequentially to make any bug simpler to debug
+   */
+  def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2)
+
+  /** A limited array. It only contains the required operations for this exercise. */
+  trait Arr[T] {
+    /** Get the i-th element of the array (0-based) */
+    def apply(i: Int): T
+    /** Update the i-th element of the array with the given value (0-based) */
+    def update(i: Int, x: T): Unit
+    /** Number of elements in this array */
+    def length: Int
+    /** Create a copy of this array without the first element */
+    def tail: Arr[T]
+    /** Create a copy of this array by mapping all the elements with the given function */
+    def map[U](f: T => U): Arr[U]
+  }
+
+  object Arr {
+    /** Create an array with the given elements */
+    def apply[T](xs: T*): Arr[T] = {
+      val arr: Arr[T] = Arr.ofLength(xs.length)
+      for i <- 0 until xs.length do arr(i) = xs(i)
+      arr
+    }
+
+    /** Create an array with the given length. All elements are initialized to `null`. */
+    def ofLength[T](n: Int): Arr[T] =
+      newArrOfLength(n)
+
+  }
+
+  /** Create an array with the given length. All elements are initialized to `null`. */
+  def newArrOfLength[T](n: Int): Arr[T]
+
+  /** A number representing the average of a list of integers (the "window") */
+  case class AvgWin(list: List[Int]) {
+    def push(i: Int) = list match {
+      case i3 :: i2 :: i1 :: Nil => AvgWin(i :: i3 :: i2 :: Nil)
+      case list => AvgWin(i :: list)
+    }
+
+    def pushAll(other: AvgWin) =
+      other.list.foldRight(this)((el, self) => self.push(el))
+
+    def toDouble: Double = if list.isEmpty then 0 else list.sum / list.length
+  }
+
+  /** Tree result of an upsweep operation. Specialized for `AvgWin` results. */
+  trait TreeRes { val res: AvgWin }
+  /** Leaf result of an upsweep operation. Specialized for `AvgWin` results. */
+  case class Leaf(from: Int, to: Int, res: AvgWin) extends TreeRes
+  /** Tree node result of an upsweep operation. Specialized for `AvgWin` results. */
+  case class Node(left: TreeRes, res: AvgWin, right: TreeRes) extends TreeRes
+}
diff --git a/previous-exams/2021-midterm/m3/src/main/scala/m3/M3.scala b/previous-exams/2021-midterm/m3/src/main/scala/m3/M3.scala
new file mode 100644
index 0000000..81aff19
--- /dev/null
+++ b/previous-exams/2021-midterm/m3/src/main/scala/m3/M3.scala
@@ -0,0 +1,75 @@
+package m3
+
+
+trait M3 extends Lib {
+  // Functions and classes of Lib can be used in here
+
+  /** Compute the rolling windowed mean of an array.
+   *
+   *  For an array `arr = Arr(x1, x2, x3, ..., x_n)` the result is
+   *  `Arr(x1, (x1+x2)/2, (x1+x2+x3)/3, (x2+x3+x4)/3, ..., (x_{n-2}, x_{n-1}, x_n)/n)`
+   */
+  def rollingWinMeanParallel(arr: Arr[Int]): Arr[Double] = {
+    if (arr.length == 0) return Arr.ofLength(0)
+
+    val out: Arr[Double] = Arr.ofLength(arr.length)
+    val tree = upsweep(arr, 0, arr.length)
+    downsweep(arr, AvgWin(Nil), tree, out)
+    out
+  }
+
+  // No need to modify this
+  def scanOp(acc: AvgWin, x: AvgWin) =
+    acc.pushAll(x)
+
+
+  def upsweep(input: Arr[Int], from: Int, to: Int): TreeRes = {
+    if (to - from < THRESHOLD)
+      Leaf(from, to, reduceSequential(input, from + 1, to, AvgWin(input(from) :: Nil)))
+    else {
+      val mid = from + (to - from)/2
+      val (tL, tR) = parallel(
+        upsweep(input, from, mid),
+        upsweep(input, mid, to)
+      )
+      Node(tL, scanOp(tL.res, tR.res), tR)
+    }
+  }
+
+
+  def downsweep(input: Arr[Int], a0: AvgWin, tree: TreeRes, output: Arr[Double]): Unit = {
+    tree match {
+      case Node(left, _, right) =>
+        parallel(
+          downsweep(input, a0, left, output),
+          downsweep(input, scanOp(a0, left.res), right, output)
+        )
+      case Leaf(from, to, _) =>
+        downsweepSequential(input, from, to, a0, output)
+    }
+  }
+
+
+  def downsweepSequential(input: Arr[Int], from: Int, to: Int, a0: AvgWin, output: Arr[Double]): Unit = {
+    if (from < to) {
+      var i = from
+      var a = a0
+      while (i < to) {
+        a = scanOp(a, AvgWin(input(i) :: Nil))
+        output(i) = a.toDouble
+        i = i + 1
+      }
+    }
+  }
+
+
+  def reduceSequential(input: Arr[Int], from: Int, to: Int, a0: AvgWin): AvgWin = {
+    var a = a0
+    var i = from
+    while (i < to) {
+      a = scanOp(a, AvgWin(input(i) :: Nil))
+      i = i + 1
+    }
+    a
+  }
+}
diff --git a/previous-exams/2021-midterm/m3/src/test/scala/m3/M3Suite.scala b/previous-exams/2021-midterm/m3/src/test/scala/m3/M3Suite.scala
new file mode 100644
index 0000000..176df6a
--- /dev/null
+++ b/previous-exams/2021-midterm/m3/src/test/scala/m3/M3Suite.scala
@@ -0,0 +1,174 @@
+package m3
+
+class M3Suite extends munit.FunSuite {
+
+  test("Rolling windowed average result test (5pts)") {
+    RollingWinMeanBasicLogicTest.basicTests()
+    RollingWinMeanBasicLogicTest.normalTests()
+    RollingWinMeanBasicLogicTest.largeTests()
+  }
+
+  test("[TASK 1] Rolling windowed average parallelism test (30pts)") {
+    RollingWinMeanCallsToParallel.parallelismTest()
+    RollingWinMeanParallel.basicTests()
+    RollingWinMeanParallel.normalTests()
+    RollingWinMeanParallel.largeTests()
+  }
+
+  test("[TASK 2] Rolling windowed average no `map` test (35pts)") {
+    RollingWinMeanNoMap.basicTests()
+    RollingWinMeanNoMap.normalTests()
+    RollingWinMeanNoMap.largeTests()
+  }
+
+  test("[TASK 3] Rolling windowed average no `tail` test (30pts)") {
+    RollingWinMeanNoTail.basicTests()
+    RollingWinMeanNoTail.normalTests()
+    RollingWinMeanNoTail.largeTests()
+  }
+
+
+  object RollingWinMeanBasicLogicTest extends M3 with LibImpl with RollingWinMeanTest {
+    def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2) = (op1, op2)
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T] = new ArrImpl(arr)
+  }
+
+  object RollingWinMeanCallsToParallel extends M3 with LibImpl with RollingWinMeanTest {
+    private var count = 0
+    def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2) =
+      count += 1
+      (op1, op2)
+
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T] = new ArrImpl(arr)
+
+    def parallelismTest() = {
+      assertParallelCount(Arr(), 0)
+      assertParallelCount(Arr(1), 0)
+      assertParallelCount(Arr(1, 2, 3, 4), 0)
+      assertParallelCount(Arr(Array.tabulate(16)(identity): _*), 0)
+      assertParallelCount(Arr(Array.tabulate(32)(identity): _*), 0)
+
+      assertParallelCount(Arr(Array.tabulate(33)(identity): _*), 2)
+      assertParallelCount(Arr(Array.tabulate(64)(identity): _*), 2)
+      assertParallelCount(Arr(Array.tabulate(128)(identity): _*), 6)
+      assertParallelCount(Arr(Array.tabulate(256)(identity): _*), 14)
+      assertParallelCount(Arr(Array.tabulate(1000)(identity): _*), 62)
+      assertParallelCount(Arr(Array.tabulate(1024)(identity): _*), 62)
+    }
+
+    def assertParallelCount(arr: Arr[Int], expected: Int): Unit = {
+      try {
+        count = 0
+        rollingWinMeanParallel(arr)
+        assert(count == expected, {
+          val extra = if (expected == 0) "" else s" ${expected/2} for the `upsweep` and ${expected/2} for the `downsweep`"
+          s"\n$arr\n\nERROR: Expected $expected instead of $count calls to `parallel(...)` for an array of ${arr.length} elements. Current parallel threshold is $THRESHOLD.$extra"
+        })
+      } finally {
+        count = 0
+      }
+    }
+
+  }
+
+  object RollingWinMeanNoMap extends M3 with LibImpl with RollingWinMeanTest {
+    def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2) = (op1, op2)
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T] = new ArrImpl[T](arr) {
+      override def map[U](f: T => U): Arr[U] = throw Exception("Should not call Arr.map")
+    }
+  }
+
+  object RollingWinMeanNoTail extends M3 with LibImpl with RollingWinMeanTest {
+    def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2) = (op1, op2)
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T] = new ArrImpl[T](arr) {
+      override def tail: Arr[T] = throw Exception("Should not call Arr.tail")
+    }
+  }
+
+  object RollingWinMeanParallel extends M3 with LibImpl with RollingWinMeanTest {
+    import scala.concurrent.duration._
+    val TIMEOUT = Duration(10, SECONDS)
+    def parallel[T1, T2](op1: => T1, op2: => T2): (T1, T2) = {
+      import concurrent.ExecutionContext.Implicits.global
+      import scala.concurrent._
+      Await.result(Future(op1).zip(Future(op2)), TIMEOUT) // FIXME not timing-out
+    }
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T] = new ArrImpl(arr)
+  }
+
+  trait LibImpl extends Lib {
+
+    def newArrFrom[T](arr: Array[AnyRef]): Arr[T]
+
+    def newArrOfLength[T](n: Int): Arr[T] =
+      newArrFrom(new Array(n))
+
+    class ArrImpl[T](val arr: Array[AnyRef]) extends Arr[T]:
+      def apply(i: Int): T =
+        arr(i).asInstanceOf[T]
+      def update(i: Int, x: T): Unit =
+        arr(i) = x.asInstanceOf[AnyRef]
+      def length: Int =
+        arr.length
+      def map[U](f: T => U): Arr[U] =
+        newArrFrom(arr.map(f.asInstanceOf[AnyRef => AnyRef]))
+      def tail: Arr[T] =
+        newArrFrom(arr.tail)
+      override def toString: String =
+        arr.mkString("Arr(", ", ", ")")
+      override def equals(that: Any): Boolean =
+        that match
+          case that: ArrImpl[_] => Array.equals(arr, that.arr)
+          case _ => false
+  }
+
+  trait RollingWinMeanTest extends M3 {
+
+    def tabulate[T](n: Int)(f: Int => T): Arr[T] =
+      val arr = Arr.ofLength[T](n)
+      for i <- 0 until n do
+        arr(i) = f(i)
+      arr
+
+    def asSeq(arr: Arr[Double]) =
+      val array = new Array[Double](arr.length)
+      for i <- 0 to (arr.length - 1) do
+        array(i) = arr(i)
+      array.toSeq
+
+    def scanOp_(acc: AvgWin, x: AvgWin) =
+      acc.pushAll(x)
+
+    def result(ds: Seq[Int]): Arr[Double] =
+      Arr(ds.map(x => AvgWin(x :: Nil)).scan(AvgWin(Nil))(scanOp_).tail.map(_.toDouble): _*)
+
+    def check(input: Seq[Int]) =
+      assertEquals(
+        asSeq(rollingWinMeanParallel(Arr(input: _*))),
+        asSeq(result(input))
+      )
+
+    def basicTests() = {
+      check(Seq())
+      check(Seq(1))
+      check(Seq(1, 2, 3, 4))
+      check(Seq(4, 4, 4, 4))
+    }
+
+    def normalTests() = {
+      check(Seq.tabulate(64)(identity))
+      check(Seq(4, 4, 4, 4))
+      check(Seq(4, 8, 6, 4))
+      check(Seq(4, 3, 2, 1))
+      check(Seq.tabulate(64)(identity).reverse)
+      check(Seq.tabulate(128)(i => 128 - 2*i).reverse)
+    }
+
+    def largeTests() = {
+      check(Seq.tabulate(500)(identity))
+      check(Seq.tabulate(512)(identity))
+      check(Seq.tabulate(1_000)(identity))
+      check(Seq.tabulate(10_000)(identity))
+    }
+  }
+}
diff --git a/previous-exams/2021-midterm/m6.md b/previous-exams/2021-midterm/m6.md
new file mode 100644
index 0000000..f0eb449
--- /dev/null
+++ b/previous-exams/2021-midterm/m6.md
@@ -0,0 +1,155 @@
+Use the following commands to make a fresh clone of your repository:
+
+```
+git clone -b m6 git@gitlab.epfl.ch:lamp/student-repositories-s21/cs206-GASPAR.git m6
+```
+
+## Useful links
+
+  * [A guide to the Scala parallel collections](https://docs.scala-lang.org/overviews/parallel-collections/overview.html)
+  * [The API documentation of the Scala parallel collections](https://www.javadoc.io/doc/org.scala-lang.modules/scala-parallel-collections_2.13/latest/scala/collection/index.html)
+  * [The API documentation of the Scala standard library](https://www.scala-lang.org/files/archive/api/2.13.4)
+  * [The API documentation of the Java standard library](https://docs.oracle.com/en/java/javase/15/docs/api/index.html)
+
+**If you have issues with the IDE, try [reimporting the
+build](https://gitlab.epfl.ch/lamp/cs206/-/blob/master/labs/example-lab.md#ide-features-like-type-on-hover-or-go-to-definition-do-not-work),
+if you still have problems, use `compile` in sbt instead.**
+
+## Exercise
+
+In this exercise, you will implement an array Combiner using internally a doubly linked list of arrays. Your goal is to complete the implementation of the (simplified) Combiner interface, by implementing the `result` method to compute the result array from this array combiner.
+
+Here you can see the declaration of the `DLLCombiner` class and the related `Node` class definition. Look at the `Lib` trait in the `lib.scala` file to find all definitions of relevant functions and classes.
+
+
+```scala
+  class Node(val size: Int) {
+    var value: Array[Int] = new Array(size)
+    var next: Node = null
+    var previous: Node = null
+    var cnt = 0
+
+    def add(v: Int) = {
+      value(cnt) = v
+      cnt += 1
+    }
+  }
+
+  // Simplified Combiner interface
+  // Implements methods += and combine
+  // Abstract methods should be implemented in subclasses
+  abstract class DLLCombiner(val chunk_size: Int)
+```
+
+`DLLCombiner` class contains the implementation of methods `+=` and `combine`. You should look at them to better understand the structure of this array Combiner, before moving on to solving this exercise.
+
+Your task in the exercise will be to implement the `result` method of the `DLLCombinerImplementation` class. This method should compute the result array from this array combiner. This method should work in parallel according to the Combiner contract. Implement this method efficiently using 4 parallel tasks, by copying the doubly linked list to the array from both ends at the same time. Two threads should start from the start of the list and two from the end. In each case, one thread would be responsible for odd list indexes and the other for even ones.
+
+
+```scala
+  class DLLCombinerImplementation(chunk_size: Int = 3) extends DLLCombiner(chunk_size) {
+
+    // Computes every other Integer element of data array, starting from the first (index 0), up to the middle
+    def task1(data: Array[Int]) = task {
+      ???
+    }
+
+    // Computes every other Integer element of data array, starting from the second, up to the middle
+    def task2(data: Array[Int]) = task {
+      ???
+    }
+
+    // Computes every other Integer element of data array, starting from the second to last, up to the middle
+    def task3(data: Array[Int]) = task {
+      ???
+    }
+
+    // Computes every other Integer element of data array, starting from the last, up to the middle
+    // This is executed on the current thread.
+    def task4(data: Array[Int]) = {
+      ???
+    }
+
+    def result(): Array[Int] = {
+      val data = new Array[Int](cnt)
+
+      ???
+
+      data
+    }
+
+  }
+```
+
+Following the description above, your task in the exercise is to:
+
+- Implement the four tasks to copy parts of the array. Each task is responsible for computing one quarter of the array, as indicated in comments:
+    + Task 1: Computes every other Integer element of data array, starting from the first (index 0), up to the middle
+    + Task 2: Computes every other Integer element of data array, starting from the second, up to the middle
+    + Task 3: Computes every other Integer element of data array, starting from the second to last, up to the middle
+    + Task 4: Computes every other Integer element of data array, starting from the last, up to the middle
+- Implement the method `result` to compute the result array in parallel using those four tasks.
+
+Hints:
+
+- Note that this doubly linked list implementation uses `null` pointers to represent the absence of nodes. Be careful when working with `null` pointers in your solution, to avoid causing a `NullPointerException`.
+
+- `DLLCombinerImplementation` comes with a private `copyForward` method that you can use in your solution:
+
+```scala
+  private def copyForward(data: Array[Int], curr: Node, from: Int, to: Int, limit: Int)
+```
+
+This method copies certain elements from a doubly linked list to an array, in a way that might be useful for this exercise.
+
+## Examples
+
+Here is one example of the `result` method with intermediate results:
+
+```scala
+    val combiner1 = DLLCombinerImplementation(4)
+    combiner1 += 7 // (7)
+    combiner1 += 2 // (7, 2)
+    combiner1 += 4 // (7, 2, 4)
+    combiner1 += 3 // (7, 2, 4, 3)
+    combiner1 += 9 // (7, 2, 4, 3) <-> (9)
+    combiner1 += 5 // (7, 2, 4, 3) <-> (9, 5)
+    combiner1 += 1 // (7, 2, 4, 3) <-> (9, 5, 1)
+
+    val res1 = combiner1.result() // (7, 2, 4, 3, 9, 5, 1)
+
+```
+In this example, `task1` was responsible for computing elements at indexes 0 and 2, `task2` for computing the element at index 1, `task3` for computing elements at indexes 5 and 3, and `task4` for computing elements at indexes 6 and 4.
+
+Here is another example with combining:
+
+```scala
+    val c1 = DLLCombinerImplementation(4)
+    c1 += 7 // (7)
+    c1 += 2 // (7, 2)
+    c1 += 4 // (7, 2, 4)
+    c1 += 3 // (7, 2, 4, 3)
+    c1 += 9 // (7, 2, 4, 3) <-> (9)
+    c1 += 5 // (7, 2, 4, 3) <-> (9, 5)
+    c1 += 1 // (7, 2, 4, 3) <-> (9, 5, 1)
+
+    val c2 = DLLCombinerImplementation(4)
+    c2 += 6 // (6)
+    c2 += 8 // (6, 8)
+    c2 += 5 // (6, 8, 5)
+    c2 += 1 // (6, 8, 5, 1)
+
+    val c3 = DLLCombinerImplementation(4)
+    c3 += 1 // (1)
+
+    c1.combine(c2).combine(c3) // (7, 2, 4, 3) <-> (9, 5, 1) <-> (6, 8, 5, 1) <-> (1)
+    val res = c1.result() // (7, 2, 4, 3, 9, 5, 1, 6, 8, 5, 1, 1)
+
+```
+
+You can look at the public tests to find more examples.
+
+In your solution you should only make changes to the `DLLCombinerImplementation` class. You are not allowed to change the file `lib.scala`. You can get partial points for solving parts of this exercise.
+
+
+
diff --git a/previous-exams/2021-midterm/m6/.gitignore b/previous-exams/2021-midterm/m6/.gitignore
new file mode 100644
index 0000000..40937dc
--- /dev/null
+++ b/previous-exams/2021-midterm/m6/.gitignore
@@ -0,0 +1,22 @@
+# General
+*.DS_Store
+*.swp
+*~
+
+# Dotty
+*.class
+*.tasty
+*.hasTasty
+
+# sbt
+target/
+
+# IDE
+.bsp
+.bloop
+.metals
+.vscode
+
+# datasets
+stackoverflow-grading.csv
+wikipedia-grading.dat
diff --git a/previous-exams/2021-midterm/m6/assignment.sbt b/previous-exams/2021-midterm/m6/assignment.sbt
new file mode 100644
index 0000000..da7eb3c
--- /dev/null
+++ b/previous-exams/2021-midterm/m6/assignment.sbt
@@ -0,0 +1,2 @@
+// Student tasks (i.e. submit, packageSubmission)
+enablePlugins(StudentTasks)
diff --git a/previous-exams/2021-midterm/m6/build.sbt b/previous-exams/2021-midterm/m6/build.sbt
new file mode 100644
index 0000000..96606f6
--- /dev/null
+++ b/previous-exams/2021-midterm/m6/build.sbt
@@ -0,0 +1,12 @@
+course := "midterm"
+assignment := "m6"
+scalaVersion := "3.0.0-RC1"
+scalacOptions ++= Seq("-language:implicitConversions", "-deprecation")
+
+libraryDependencies += "org.scalameta" %% "munit" % "0.7.22"
+
+val MUnitFramework = new TestFramework("munit.Framework")
+testFrameworks += MUnitFramework
+// Decode Scala names
+testOptions += Tests.Argument(MUnitFramework, "-s")
+testSuite := "m6.M6Suite"
diff --git a/previous-exams/2021-midterm/m6/grading-tests.jar b/previous-exams/2021-midterm/m6/grading-tests.jar
new file mode 100644
index 0000000000000000000000000000000000000000..2127d4e28e16c94709e41b0e9a6bf7e9a5ad4b88
GIT binary patch
literal 35241
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
bdnSr8=&oU91NonqftTSEGXulIRuB&WF;VXv

literal 0
HcmV?d00001

diff --git a/previous-exams/2021-midterm/m6/project/FilteringReporterPlugin.scala b/previous-exams/2021-midterm/m6/project/FilteringReporterPlugin.scala
new file mode 100644
index 0000000..2e4fd9a
--- /dev/null
+++ b/previous-exams/2021-midterm/m6/project/FilteringReporterPlugin.scala
@@ -0,0 +1,31 @@
+package sbt // To access the private[sbt] compilerReporter key
+package filteringReporterPlugin
+
+import Keys._
+import ch.epfl.lamp._
+
+object FilteringReporterPlugin extends AutoPlugin {
+  override lazy val projectSettings = Seq(
+    // Turn off warning coming from scalameter that we cannot fix without changing scalameter
+    compilerReporter in (Compile, compile) ~= { reporter => new FilteringReporter(reporter) }
+  )
+}
+
+class FilteringReporter(reporter: xsbti.Reporter) extends xsbti.Reporter {
+
+  def reset(): Unit = reporter.reset()
+  def hasErrors: Boolean = reporter.hasErrors
+  def hasWarnings: Boolean = reporter.hasWarnings
+  def printSummary(): Unit = reporter.printSummary()
+  def problems: Array[xsbti.Problem] = reporter.problems
+
+  def log(problem: xsbti.Problem): Unit = {
+    if (!problem.message.contains("An existential type that came from a Scala-2 classfile cannot be"))
+      reporter.log(problem)
+  }
+
+  def comment(pos: xsbti.Position, msg: String): Unit =
+    reporter.comment(pos, msg)
+
+  override def toString = s"CollectingReporter($reporter)"
+}
diff --git a/previous-exams/2021-midterm/m6/project/MOOCSettings.scala b/previous-exams/2021-midterm/m6/project/MOOCSettings.scala
new file mode 100644
index 0000000..1c40443
--- /dev/null
+++ b/previous-exams/2021-midterm/m6/project/MOOCSettings.scala
@@ -0,0 +1,49 @@
+package ch.epfl.lamp
+
+import sbt._
+import sbt.Keys._
+
+/**
+ * Coursera uses two versions of each assignment. They both have the same assignment key and part id but have
+ * different item ids.
+ *
+ * @param key Assignment key
+ * @param partId Assignment partId
+ * @param itemId Item id of the non premium version
+ * @param premiumItemId Item id of the premium version (`None` if the assignment is optional)
+ */
+case class CourseraId(key: String, partId: String, itemId: String, premiumItemId: Option[String])
+
+/**
+  * Settings shared by all assignments, reused in various tasks.
+  */
+object MOOCSettings extends AutoPlugin {
+
+  override def requires = super.requires && filteringReporterPlugin.FilteringReporterPlugin
+
+  object autoImport {
+    val course = SettingKey[String]("course")
+    val assignment = SettingKey[String]("assignment")
+    val options = SettingKey[Map[String, Map[String, String]]]("options")
+    val courseraId = settingKey[CourseraId]("Coursera-specific information identifying the assignment")
+    val testSuite = settingKey[String]("Fully qualified name of the test suite of this assignment")
+      .withRank(KeyRanks.Invisible)
+    // Convenient alias
+    type CourseraId = ch.epfl.lamp.CourseraId
+    val CourseraId = ch.epfl.lamp.CourseraId
+  }
+
+  import autoImport._
+
+  override val globalSettings: Seq[Def.Setting[_]] = Seq(
+    // supershell is verbose, buggy and useless.
+    useSuperShell := false
+  )
+
+  override val projectSettings: Seq[Def.Setting[_]] = Seq(
+    parallelExecution in Test := false,
+    // Report test result after each test instead of waiting for every test to finish
+    logBuffered in Test := false,
+    name := s"${course.value}-${assignment.value}"
+  )
+}
diff --git a/previous-exams/2021-midterm/m6/project/StudentTasks.scala b/previous-exams/2021-midterm/m6/project/StudentTasks.scala
new file mode 100644
index 0000000..c4669af
--- /dev/null
+++ b/previous-exams/2021-midterm/m6/project/StudentTasks.scala
@@ -0,0 +1,303 @@
+package ch.epfl.lamp
+
+import sbt._
+import Keys._
+
+// import scalaj.http._
+import java.io.{File, FileInputStream, IOException}
+import org.apache.commons.codec.binary.Base64
+// import play.api.libs.json.{Json, JsObject, JsPath}
+import scala.util.{Failure, Success, Try}
+
+/**
+  * Provides tasks for submitting the assignment
+  */
+object StudentTasks extends AutoPlugin {
+
+  override def requires = super.requires && MOOCSettings
+
+  object autoImport {
+    val packageSourcesOnly = TaskKey[File]("packageSourcesOnly", "Package the sources of the project")
+    val packageBinWithoutResources = TaskKey[File]("packageBinWithoutResources", "Like packageBin, but without the resources")
+    val packageSubmissionZip = TaskKey[File]("packageSubmissionZip")
+    val packageSubmission = inputKey[Unit]("package solution as an archive file")
+
+    lazy val Grading = config("grading") extend(Runtime)
+  }
+
+
+  import autoImport._
+  import MOOCSettings.autoImport._
+
+  override lazy val projectSettings = Seq(
+    packageSubmissionSetting,
+    fork := true,
+    connectInput in run := true,
+    outputStrategy := Some(StdoutOutput),
+  ) ++
+    packageSubmissionZipSettings ++
+    inConfig(Grading)(Defaults.testSettings ++ Seq(
+      unmanagedJars += file("grading-tests.jar"),
+
+      definedTests := (definedTests in Test).value,
+      internalDependencyClasspath := (internalDependencyClasspath in Test).value
+    ))
+
+
+  /** **********************************************************
+    * SUBMITTING A SOLUTION TO COURSERA
+    */
+
+  val packageSubmissionZipSettings = Seq(
+    packageSubmissionZip := {
+      val submission = crossTarget.value / "submission.zip"
+      val sources = (packageSourcesOnly in Compile).value
+      val binaries = (packageBinWithoutResources in Compile).value
+      IO.zip(Seq(sources -> "sources.zip", binaries -> "binaries.jar"), submission, None)
+      submission
+    },
+    artifactClassifier in packageSourcesOnly := Some("sources"),
+    artifact in (Compile, packageBinWithoutResources) ~= (art => art.withName(art.name + "-without-resources"))
+  ) ++
+  inConfig(Compile)(
+    Defaults.packageTaskSettings(packageSourcesOnly, Defaults.sourceMappings) ++
+    Defaults.packageTaskSettings(packageBinWithoutResources, Def.task {
+      val relativePaths =
+        (unmanagedResources in Compile).value.flatMap(Path.relativeTo((unmanagedResourceDirectories in Compile).value)(_))
+      (mappings in (Compile, packageBin)).value.filterNot { case (_, path) => relativePaths.contains(path) }
+    })
+  )
+
+  val maxSubmitFileSize = {
+    val mb = 1024 * 1024
+    10 * mb
+  }
+
+  /** Check that the jar exists, isn't empty, isn't crazy big, and can be read
+    * If so, encode jar as base64 so we can send it to Coursera
+    */
+  def prepareJar(jar: File, s: TaskStreams): String = {
+    val errPrefix = "Error submitting assignment jar: "
+    val fileLength = jar.length()
+    if (!jar.exists()) {
+      s.log.error(errPrefix + "jar archive does not exist\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength == 0L) {
+      s.log.error(errPrefix + "jar archive is empty\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength > maxSubmitFileSize) {
+      s.log.error(errPrefix + "jar archive is too big. Allowed size: " +
+        maxSubmitFileSize + " bytes, found " + fileLength + " bytes.\n" +
+        jar.getAbsolutePath)
+      failSubmit()
+    } else {
+      val bytes = new Array[Byte](fileLength.toInt)
+      val sizeRead = try {
+        val is = new FileInputStream(jar)
+        val read = is.read(bytes)
+        is.close()
+        read
+      } catch {
+        case ex: IOException =>
+          s.log.error(errPrefix + "failed to read sources jar archive\n" + ex.toString)
+          failSubmit()
+      }
+      if (sizeRead != bytes.length) {
+        s.log.error(errPrefix + "failed to read the sources jar archive, size read: " + sizeRead)
+        failSubmit()
+      } else encodeBase64(bytes)
+    }
+  }
+
+  /** Task to package solution to a given file path */
+  lazy val packageSubmissionSetting = packageSubmission := {
+    val args: Seq[String] = Def.spaceDelimited("[path]").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val base64Jar = prepareJar(jar, s)
+
+    val path = args.headOption.getOrElse((baseDirectory.value / "submission.jar").absolutePath)
+    scala.tools.nsc.io.File(path).writeAll(base64Jar)
+  }
+
+/*
+  /** Task to submit a solution to coursera */
+  val submit = inputKey[Unit]("submit solution to Coursera")
+  lazy val submitSetting = submit := {
+    // Fail if scalafix linting does not pass.
+    scalafixLinting.value
+
+    val args: Seq[String] = Def.spaceDelimited("<arg>").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val assignmentDetails =
+      courseraId.?.value.getOrElse(throw new MessageOnlyException("This assignment can not be submitted to Coursera because the `courseraId` setting is undefined"))
+    val assignmentKey = assignmentDetails.key
+    val courseName =
+      course.value match {
+        case "capstone" => "scala-capstone"
+        case "bigdata"  => "scala-spark-big-data"
+        case other      => other
+      }
+
+    val partId = assignmentDetails.partId
+    val itemId = assignmentDetails.itemId
+    val premiumItemId = assignmentDetails.premiumItemId
+
+    val (email, secret) = args match {
+      case email :: secret :: Nil =>
+        (email, secret)
+      case _ =>
+        val inputErr =
+          s"""|Invalid input to `submit`. The required syntax for `submit` is:
+              |submit <email-address> <submit-token>
+              |
+              |The submit token is NOT YOUR LOGIN PASSWORD.
+              |It can be obtained from the assignment page:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId
+              |${
+                premiumItemId.fold("") { id =>
+                  s"""or (for premium learners):
+                     |https://www.coursera.org/learn/$courseName/programming/$id
+                   """.stripMargin
+                }
+              }
+          """.stripMargin
+        s.log.error(inputErr)
+        failSubmit()
+    }
+
+    val base64Jar = prepareJar(jar, s)
+    val json =
+      s"""|{
+          |   "assignmentKey":"$assignmentKey",
+          |   "submitterEmail":"$email",
+          |   "secret":"$secret",
+          |   "parts":{
+          |      "$partId":{
+          |         "output":"$base64Jar"
+          |      }
+          |   }
+          |}""".stripMargin
+
+    def postSubmission[T](data: String): Try[HttpResponse[String]] = {
+      val http = Http("https://www.coursera.org/api/onDemandProgrammingScriptSubmissions.v1")
+      val hs = List(
+        ("Cache-Control", "no-cache"),
+        ("Content-Type", "application/json")
+      )
+      s.log.info("Connecting to Coursera...")
+      val response = Try(http.postData(data)
+                         .headers(hs)
+                         .option(HttpOptions.connTimeout(10000)) // scalaj default timeout is only 100ms, changing that to 10s
+                         .asString) // kick off HTTP POST
+      response
+    }
+
+    val connectMsg =
+      s"""|Attempting to submit "${assignment.value}" assignment in "$courseName" course
+          |Using:
+          |- email: $email
+          |- submit token: $secret""".stripMargin
+    s.log.info(connectMsg)
+
+    def reportCourseraResponse(response: HttpResponse[String]): Unit = {
+      val code = response.code
+      val respBody = response.body
+
+       /* Sample JSON response from Coursera
+      {
+        "message": "Invalid email or token.",
+        "details": {
+          "learnerMessage": "Invalid email or token."
+        }
+      }
+      */
+
+      // Success, Coursera responds with 2xx HTTP status code
+      if (response.is2xx) {
+        val successfulSubmitMsg =
+          s"""|Successfully connected to Coursera. (Status $code)
+              |
+                |Assignment submitted successfully!
+              |
+                |You can see how you scored by going to:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId/
+              |${
+            premiumItemId.fold("") { id =>
+              s"""or (for premium learners):
+                 |https://www.coursera.org/learn/$courseName/programming/$id
+                       """.stripMargin
+            }
+          }
+              |and clicking on "My Submission".""".stripMargin
+        s.log.info(successfulSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 4xx HTTP status code (client-side failure)
+      else if (response.is4xx) {
+        val result = Try(Json.parse(respBody)).toOption
+        val learnerMsg = result match {
+          case Some(resp: JsObject) =>
+            (JsPath \ "details" \ "learnerMessage").read[String].reads(resp).get
+          case Some(x) => // shouldn't happen
+            "Could not parse Coursera's response:\n" + x
+          case None =>
+            "Could not parse Coursera's response:\n" + respBody
+        }
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |There was something wrong while attempting to submit.
+              |Coursera says:
+              |$learnerMsg (Status $code)""".stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 5xx HTTP status code (server-side failure)
+      else if (response.is5xx) {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera seems to be unavailable at the moment (Status $code)
+              |Check https://status.coursera.org/ and try again in a few minutes.
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera repsonds with an unexpected status code
+      else {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera replied with an unexpected code (Status $code)
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+    }
+
+    // kick it all off, actually make request
+    postSubmission(json) match {
+      case Success(resp) => reportCourseraResponse(resp)
+      case Failure(e) =>
+        val failedConnectMsg =
+          s"""|Connection to Coursera failed.
+              |There was something wrong while attempting to connect to Coursera.
+              |Check your internet connection.
+              |${e.toString}""".stripMargin
+        s.log.error(failedConnectMsg)
+    }
+
+   }
+*/
+
+  def failSubmit(): Nothing = {
+    sys.error("Submission failed")
+  }
+
+  /**
+    * *****************
+    * DEALING WITH JARS
+    */
+  def encodeBase64(bytes: Array[Byte]): String =
+    new String(Base64.encodeBase64(bytes))
+}
diff --git a/previous-exams/2021-midterm/m6/project/build.properties b/previous-exams/2021-midterm/m6/project/build.properties
new file mode 100644
index 0000000..0b2e09c
--- /dev/null
+++ b/previous-exams/2021-midterm/m6/project/build.properties
@@ -0,0 +1 @@
+sbt.version=1.4.7
diff --git a/previous-exams/2021-midterm/m6/project/buildSettings.sbt b/previous-exams/2021-midterm/m6/project/buildSettings.sbt
new file mode 100644
index 0000000..8fac702
--- /dev/null
+++ b/previous-exams/2021-midterm/m6/project/buildSettings.sbt
@@ -0,0 +1,5 @@
+// Used for Coursera submission (StudentPlugin)
+// libraryDependencies += "org.scalaj" %% "scalaj-http" % "2.4.2"
+// libraryDependencies += "com.typesafe.play" %% "play-json" % "2.7.4"
+// Used for Base64 (StudentPlugin)
+libraryDependencies += "commons-codec" % "commons-codec" % "1.10"
diff --git a/previous-exams/2021-midterm/m6/project/plugins.sbt b/previous-exams/2021-midterm/m6/project/plugins.sbt
new file mode 100644
index 0000000..021c019
--- /dev/null
+++ b/previous-exams/2021-midterm/m6/project/plugins.sbt
@@ -0,0 +1,2 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.5.3")
diff --git a/previous-exams/2021-midterm/m6/src/main/scala/m6/M6.scala b/previous-exams/2021-midterm/m6/src/main/scala/m6/M6.scala
new file mode 100644
index 0000000..f754c4a
--- /dev/null
+++ b/previous-exams/2021-midterm/m6/src/main/scala/m6/M6.scala
@@ -0,0 +1,149 @@
+package m6
+
+import java.util.concurrent._
+import scala.util.DynamicVariable
+
+trait M6 extends Lib {
+
+  class DLLCombinerImplementation(chunk_size: Int = 3) extends DLLCombiner(chunk_size){
+
+    // Computes every other Integer element of data array, starting from the first (index 0), up to the middle
+    def task1(data: Array[Int]): ForkJoinTask[Unit] = task {
+
+      var current = head
+      if(current != null) {
+        var i_from = 0
+        var i_to = 0
+        copyForward(data, current, i_from, i_to, cnt/2)
+      }
+    }
+
+    // Computes every other Integer element of data array, starting from the second, up to the middle
+    def task2(data: Array[Int]): ForkJoinTask[Unit] = task {
+
+      var current = head
+      if(current != null) {
+        var i_from = 1
+        var i_to = 1
+
+        if(i_from >= current.cnt) {
+          current = current.next
+          if(current != null) {
+            i_from = 0
+          }
+          else i_to = cnt/2 // to stop the loop
+        }
+
+        copyForward(data, current, i_from, i_to, cnt/2)
+      }  
+    }
+
+    // Computes every other Integer element of data array, starting from the second to last, up to the middle
+    def task3(data: Array[Int]): ForkJoinTask[Unit] = task {
+
+      var current = last
+      if( current != null) {
+        var i_to = cnt - 2
+        var i_from = current.cnt - 2
+        if(i_from < 0) {
+          current = current.previous
+          if(current != null) {
+            i_from = current.cnt - 1
+          }
+          else i_to = cnt/2 - 1 // to stop the loop
+        }
+
+        copyBackward(data, current, i_from, i_to, cnt/2)
+      }
+    }
+
+    // Computes every other Integer element of data array, starting from the last, up to the middle
+    // This is executed on the current thread.
+    def task4(data: Array[Int]): Unit = {
+
+      var current = last
+      if( current != null) {
+        var i_from = current.cnt - 1
+        var i_to = cnt - 1
+        copyBackward(data, current, i_from, i_to, cnt/2)
+      }
+    }
+
+    def result(): Array[Int] = {
+      val data = new Array[Int](cnt)
+
+      val t1 = task1(data)
+      val t2 = task2(data)
+      val t3 = task3(data)
+
+      task4(data)
+
+      t1.join()
+      t2.join()
+      t3.join()
+
+
+      data
+    }
+
+
+    private def copyBackward(data: Array[Int], curr: Node, from: Int, to: Int, limit: Int) = {
+      var current = curr
+      var i_from = from
+      var i_to = to 
+
+      while (i_to >= limit) {
+        try{
+          data(i_to) = current.value(i_from)
+          i_to -= 2
+          i_from -= 2
+          if(i_from == -1) {
+            current = current.previous
+            i_from = current.cnt - 1
+          }
+          else if(i_from == -2) {
+            current = current.previous
+            i_from = current.cnt - 2
+            if(current.cnt == 1) {
+              current = current.previous
+              i_from = current.cnt - 1
+            }
+          }
+        }
+        catch{
+          case e: Exception =>
+        }
+      }
+        
+    }
+    private def copyForward(data: Array[Int], curr: Node, from: Int, to: Int, limit: Int) = {
+      var current = curr
+      var i_from = from
+      var i_to = to 
+
+      while (i_to < limit) {
+        try {
+          data(i_to) = current.value(i_from)
+          i_to += 2
+          i_from += 2
+          if(i_from == current.cnt){
+            current = current.next
+            i_from = 0
+          }
+          else if(i_from > current.cnt) {
+            current = current.next
+            i_from = 1
+            if(current.cnt == 1) {
+              current = current.next
+              i_from = 0
+            }
+          }
+        }
+        catch{
+          case e: Exception =>
+        }
+      }
+    }
+  }
+
+}
diff --git a/previous-exams/2021-midterm/m6/src/main/scala/m6/lib.scala b/previous-exams/2021-midterm/m6/src/main/scala/m6/lib.scala
new file mode 100644
index 0000000..bfb2838
--- /dev/null
+++ b/previous-exams/2021-midterm/m6/src/main/scala/m6/lib.scala
@@ -0,0 +1,84 @@
+package m6
+
+import java.util.concurrent._
+import scala.util.DynamicVariable
+
+trait Lib {
+
+  class Node(val size: Int) {
+    var value: Array[Int] = new Array(size)
+    var next: Node = null    
+    var previous: Node = null
+    var cnt = 0
+
+    def add(v: Int) = {
+      value(cnt) = v
+      cnt += 1
+    }
+  }
+
+  // Simplified Combiner interface
+  // Implements methods += and combine
+  // Abstract methods should be implemented in subclasses
+  abstract class DLLCombiner(val chunk_size: Int) {
+    var head: Node = null
+    var last: Node = null
+    var cnt: Int = 0
+    var chunks: Int = 0
+
+    // Adds an Integer to the last node of this array combiner. If the last node is full, allocates a new node.
+    def +=(elem: Int): Unit = {
+      if(cnt % chunk_size == 0) {
+        chunks = chunks + 1
+        val node = new Node(chunk_size)
+        if (cnt == 0) {
+          head = node
+          last = node
+        }
+        else {
+          last.next = node
+          node.previous = last
+          last = node
+        }
+      }
+      last.add(elem)
+      cnt += 1
+    }
+
+    // Combines this array combiner and another given combiner in constant O(1) complexity.
+    def combine(that: DLLCombiner): DLLCombiner = {
+      assert(this.chunk_size == that.chunk_size)
+      if (this.cnt == 0) {
+        this.head = that.head
+        this.last = that.last
+        this.cnt = that.cnt
+        this.chunks = that.chunks
+
+        this
+      }
+      else if (that.cnt == 0)
+        this
+      else {
+        this.last.next = that.head
+        that.head.previous = this.last
+
+        this.cnt = this.cnt + that.cnt
+        this.chunks = this.chunks + that.chunks
+        this.last = that.last
+
+        this
+      }
+    }
+
+    def task1(data: Array[Int]): ForkJoinTask[Unit]
+    def task2(data: Array[Int]): ForkJoinTask[Unit]
+    def task3(data: Array[Int]): ForkJoinTask[Unit]
+    def task4(data: Array[Int]): Unit
+
+    def result(): Array[Int]
+
+  }
+
+  def task[T](body: => T): ForkJoinTask[T]
+
+}
\ No newline at end of file
diff --git a/previous-exams/2021-midterm/m6/src/test/scala/m6/M6Suite.scala b/previous-exams/2021-midterm/m6/src/test/scala/m6/M6Suite.scala
new file mode 100644
index 0000000..e04fcf0
--- /dev/null
+++ b/previous-exams/2021-midterm/m6/src/test/scala/m6/M6Suite.scala
@@ -0,0 +1,422 @@
+package m6
+
+import java.util.concurrent._
+import scala.util.DynamicVariable
+
+class M6Suite extends AbstractM6Suite {
+
+  // (70+) 30 / 500 points for correct implementation, don't check parallelism
+  test("[Correctness] fetch result - simple combiners (5pts)") {
+    assertCorrectnessSimple()
+  }
+
+  test("[Correctness] fetch result - small combiners (5pts)") {
+    assertCorrectnessBasic()
+  }
+
+  test("[Correctness] fetch result - small combiners after combining (10pts)") {
+    assertCorrectnessCombined()
+  }
+
+  test("[Correctness] fetch result - large combiners (10pts)") {
+    assertCorrectnessLarge()
+  }
+
+  def assertCorrectnessSimple() = {
+    simpleCombiners.foreach(elem => assert(compare(elem._1, elem._2)))
+  }
+
+  def assertCorrectnessBasic() = {
+    basicCombiners.foreach(elem => assert(compare(elem._1, elem._2)))
+  }
+
+  def assertCorrectnessCombined() = {
+    combinedCombiners.foreach(elem => assert(compare(elem._1, elem._2)))
+  }
+
+  def assertCorrectnessLarge() = {
+    largeCombiners.foreach(elem => assert(compare(elem._1, elem._2)))
+  }
+
+  // (70+30+) 50 / 500 points for correct parallel implementation, don't check if it's exactly 1/4 of the array per task
+  private var count = 0
+  private val expected = 3
+
+  override def task[T](body: => T): ForkJoinTask[T] = {
+    count += 1
+    scheduler.value.schedule(body)
+  }
+
+  test("[TaskCount] number of newly created tasks should be 3 (5pts)") {
+    assertTaskCountSimple()
+  }
+
+  test("[TaskCount] fetch result and check parallel - simple combiners (5pts)") {
+    assertTaskCountSimple()
+    assertCorrectnessSimple()
+  }
+
+  test("[TaskCount] fetch result and check parallel - small combiners (10pts)") {
+    assertTaskCountSimple()
+    assertCorrectnessBasic()
+  }
+
+  test("[TaskCount] fetch result and check parallel - small combiners after combining (15pts)") {
+    assertTaskCountSimple()
+    assertCorrectnessCombined()
+  }
+
+  test("[TaskCount] fetch result and check parallel - large combiners (15pts)") {
+    assertTaskCountSimple()
+    assertCorrectnessLarge()
+  }
+
+  def assertTaskCountSimple(): Unit = {
+    simpleCombiners.foreach(elem => assertTaskCount(elem._1, elem._2))
+  }
+
+  def assertTaskCount(combiner: DLLCombinerTest, array: Array[Int]): Unit = {
+    try {
+      count = 0
+      build(combiner, array)
+      combiner.result()
+      assertEquals(count, expected, {
+        s"ERROR: Expected $expected instead of $count calls to `task(...)`"
+      })
+    } finally {
+      count = 0
+    }
+  }
+
+  //(70+30+50+) 200 / 500 points for correct parallel implementation, exactly 1/4 of the array per task
+  test("[TaskFairness] each task should compute 1/4 of the result (50pts)") {
+    assertTaskFairness(simpleCombiners.unzip._1)
+  }
+
+  test("[TaskFairness] each task should correctly compute 1/4 of the result - simple combiners (20pts)") {
+    assertTaskFairness(simpleCombiners.unzip._1)
+    assertCorrectnessSimple()
+  }
+
+  test("[TaskFairness] each task should correctly compute 1/4 of the result - small combiners (30pts)") {
+    assertTaskFairness(basicCombiners.unzip._1)
+    assertCorrectnessBasic()
+  }
+
+  test("[TaskFairness] each task should correctly compute 1/4 of the result - small combiners after combining (50pts)") {
+    assertTaskFairness(combinedCombiners.unzip._1)
+    assertCorrectnessCombined()
+  }
+
+  test("[TaskFairness] each task should correctly compute 1/4 of the result - large combiners (50pts)") {
+    assertTaskFairness(largeCombiners.unzip._1)
+    assertCorrectnessLarge()
+  }
+
+  def assertTaskFairness(combiners: List[DLLCombinerTest]): Unit = {
+    def assertNewTaskFairness(combiner: DLLCombinerTest, task: ForkJoinTask[Unit], data: Array[Int]) = {
+      var count = 0
+      var expected = combiner.cnt / 4
+      task.join
+      count = data.count(elem => elem != 0)
+
+      assert((count - expected).abs <= 1)
+    }
+
+    def assertMainTaskFairness(combiner: DLLCombinerTest, task: Unit, data: Array[Int]) = {
+      var count = 0
+      var expected = combiner.cnt / 4
+      count = data.count(elem => elem != 0)
+
+      assert((count - expected).abs <= 1)
+    }
+
+    combiners.foreach { elem =>
+      var data = Array.fill(elem.cnt)(0)
+      assertNewTaskFairness(elem, elem.task1(data), data)
+
+      data = Array.fill(elem.cnt)(0)
+      assertNewTaskFairness(elem, elem.task2(data), data)
+
+      data = Array.fill(elem.cnt)(0)
+      assertNewTaskFairness(elem, elem.task3(data), data)
+
+      data = Array.fill(elem.cnt)(0)
+      assertMainTaskFairness(elem, elem.task4(data), data)
+    }
+  }
+
+  //(70+30+50+200+) 150 / 500 points for correct parallel implementation, exactly 1/4 of the array per task, exactly the specified quarter
+
+  test("[TaskPrecision] each task should compute specified 1/4 of the result - simple combiners (20pts)") {
+    assertTaskPrecision(simpleCombiners)
+  }
+
+  test("[TaskPrecision] each task should compute specified 1/4 of the result - small combiners (30pts)") {
+    assertTaskPrecision(basicCombiners)
+  }
+
+  test("[TaskPrecision] each task should compute specified 1/4 of the result - small combiners after combining (50pts)") {
+    assertTaskPrecision(combinedCombiners)
+  }
+
+  test("[TaskPrecision] each task should compute specified 1/4 of the result - large combiners (50pts)") {
+    assertTaskPrecision(largeCombiners)
+  }
+
+  def assertTaskPrecision(combiners: List[(DLLCombinerTest, Array[Int])]): Unit = {
+    combiners.foreach { elem =>
+      var data = Array.fill(elem._1.cnt)(0)
+      var ref = Array.fill(elem._1.cnt)(0)
+      val task1 = elem._1.task1(data)
+      task1.join
+      Range(0, elem._1.cnt).foreach(i => (if (i < elem._1.cnt / 2 - 1 && i % 2 == 0) ref(i) = elem._2(i)))
+      assert(Range(0, elem._1.cnt / 2 - 1).forall(i => data(i) == ref(i)))
+
+      data = Array.fill(elem._1.cnt)(0)
+      ref = Array.fill(elem._1.cnt)(0)
+      val task2 = elem._1.task2(data)
+      task2.join
+      Range(0, elem._1.cnt).foreach(i => (if (i < elem._1.cnt / 2 - 1 && i % 2 == 1) ref(i) = elem._2(i)))
+      assert(Range(0, elem._1.cnt / 2 - 1).forall(i => data(i) == ref(i)))
+
+      data = Array.fill(elem._1.cnt)(0)
+      ref = Array.fill(elem._1.cnt)(0)
+      val task3 = elem._1.task3(data)
+      task3.join
+      Range(0, elem._1.cnt).foreach(i => (if (i > elem._1.cnt / 2 + 1 && i % 2 == elem._1.cnt % 2) ref(i) = elem._2(i)))
+      assert(Range(elem._1.cnt / 2 + 2, elem._1.cnt).forall(i => data(i) == ref(i)))
+
+      data = Array.fill(elem._1.cnt)(0)
+      ref = Array.fill(elem._1.cnt)(0)
+      val task4 = elem._1.task4(data)
+      Range(0, elem._1.cnt).foreach(i => (if (i > elem._1.cnt / 2 + 1 && i % 2 != elem._1.cnt % 2) ref(i) = elem._2(i)))
+      assert(Range(elem._1.cnt / 2 + 2, elem._1.cnt).forall(i => data(i) == ref(i)))
+    }
+  }
+
+  test("[Public] fetch simple result without combining (5pts)") {
+    val combiner1 = DLLCombinerTest(2)
+    combiner1 += 7
+    combiner1 += 2
+    combiner1 += 3
+    combiner1 += 8
+    combiner1 += 1
+    combiner1 += 2
+    combiner1 += 3
+    combiner1 += 8
+
+    val result = combiner1.result()
+    val array = Array(7, 2, 3, 8, 1, 2, 3, 8)
+
+    assert(Range(0,array.size).forall(i => array(i) == result(i)))
+  }
+
+  test("[Public] fetch result without combining (5pts)") {
+    val combiner1 = DLLCombinerTest(2)
+    combiner1 += 7
+    combiner1 += 2
+    combiner1 += 3
+    combiner1 += 8
+    combiner1 += 1
+
+    val result = combiner1.result()
+    val array = Array(7, 2, 3, 8, 1)
+
+    assert(Range(0,array.size).forall(i => array(i) == result(i)))
+  }
+
+  test("[Public] fetch result after simple combining (5pts)") {
+    val combiner1 = DLLCombinerTest(2)
+    combiner1 += 7
+    combiner1 += 2
+
+    val combiner2 = DLLCombinerTest(2)
+    combiner2 += 3
+    combiner2 += 8
+
+    val combiner3 = DLLCombinerTest(2)
+    combiner2 += 1
+    combiner2 += 9
+
+    val combiner4 = DLLCombinerTest(2)
+    combiner2 += 3
+    combiner2 += 2
+
+    val result = combiner1.combine(combiner2).combine(combiner3).combine(combiner4).result()
+    val array = Array(7, 2, 3, 8, 1, 9, 3, 2)
+
+    assert(Range(0,array.size).forall(i => array(i) == result(i)))
+  }
+
+  test("[Public] fetch result - empty combiner (20pts)") {
+    val combiner1 = DLLCombinerTest(2)
+    val result = combiner1.result()
+    assertEquals(result.size, 0)
+  }
+
+  test("[Public] fetch result - full single element combiner (15pts)") {
+    val combiner1 = DLLCombinerTest(3)
+    combiner1 += 4
+    combiner1 += 2
+    combiner1 += 6
+
+    val result = combiner1.result()
+    val array = Array(4, 2, 6)
+
+    assert(Range(0,array.size).forall(i => array(i) == result(i)))
+  }
+
+}
+
+
+trait AbstractM6Suite extends munit.FunSuite with LibImpl {
+
+  def simpleCombiners = buildSimpleCombiners()
+  def basicCombiners = buildBasicCombiners()
+  def combinedCombiners = buildCombinedCombiners()
+  def largeCombiners = buildLargeCombiners()
+
+  def buildSimpleCombiners() = {
+    val simpleCombiners = List(
+      (DLLCombinerTest(4), Array(4, 2, 6, 1, 5, 4, 3, 5, 6, 3, 4, 5, 6, 3, 4, 5)),
+      (DLLCombinerTest(4), Array(7, 2, 2, 9, 3, 2, 1, 1, 1, 1, 1, 1, 1, 2, 3, 2)),
+      (DLLCombinerTest(4), Array.fill(16)(5))
+    )
+    simpleCombiners.foreach(elem => build(elem._1, elem._2))
+    simpleCombiners
+  }
+
+  def buildBasicCombiners() = {
+    val basicCombiners = List(
+      (DLLCombinerTest(2), Array(4, 2, 6)),
+      (DLLCombinerTest(5), Array(4, 2, 6)),
+      (DLLCombinerTest(3), Array(4, 2, 6, 1, 7, 2, 4)),
+      (DLLCombinerTest(4), Array(7, 2, 2, 9, 3, 2, 11, 12, 13, 14, 15, 16, 17, 22)),
+      (DLLCombinerTest(3), Array.fill(16)(7)),
+      (DLLCombinerTest(3), Array.fill(19)(7)),
+      (DLLCombinerTest(3), Array.fill(5)(7)),
+      (DLLCombinerTest(3), Array.fill(6)(7))
+    )
+    basicCombiners.foreach(elem => build(elem._1, elem._2))
+    basicCombiners
+  }
+
+  def buildCombinedCombiners() = {
+    var combinedCombiners = List[(DLLCombinerTest, Array[Int])]()
+    Range(1, 10).foreach { chunk_size =>
+      val array = basicCombiners.filter(elem => elem._1.chunk_size == chunk_size).foldLeft(Array[Int]()) { (acc, i) => acc ++ i._2 }
+      val combiner = DLLCombinerTest(chunk_size)
+      basicCombiners.filter(elem => elem._1.chunk_size == chunk_size).foreach(elem => combiner.combine(elem._1))
+
+      combinedCombiners  = combinedCombiners :+ (combiner, array)
+    }
+    combinedCombiners
+  }
+
+  def buildLargeCombiners() = {
+    val largeCombiners = List(
+      (DLLCombinerTest(21), Array.fill(1321)(4) ++ Array.fill(1322)(7)),
+      (DLLCombinerTest(18), Array.fill(1341)(2) ++ Array.fill(1122)(5)),
+      (DLLCombinerTest(3), Array.fill(1321)(4) ++ Array.fill(1322)(7) ++ Array.fill(321)(4) ++ Array.fill(322)(7)),
+      (DLLCombinerTest(12), Array.fill(992321)(4) ++ Array.fill(99322)(7)),
+      (DLLCombinerTest(4), Array.fill(953211)(4) ++ Array.fill(999322)(1))
+    )
+    largeCombiners.foreach(elem => build(elem._1, elem._2))
+    largeCombiners
+  }
+
+  def build(combiner: DLLCombinerTest, array: Array[Int]): DLLCombinerTest = {
+    array.foreach(elem => combiner += elem)
+    combiner
+  }
+
+  def compare(combiner: DLLCombinerTest, array: Array[Int]): Boolean = {
+    val result = combiner.result()
+    Range(0,array.size).forall(i => array(i) == result(i))
+  }
+
+  def buildAndCompare(combiner: DLLCombinerTest, array: Array[Int]): Boolean = {
+    array.foreach(elem => combiner += elem)
+    val result = combiner.result()
+
+    Range(0,array.size).forall(i => array(i) == result(i))
+  }
+
+}
+
+trait LibImpl extends M6 {
+
+  val forkJoinPool = new ForkJoinPool
+
+  abstract class TaskScheduler {
+    def schedule[T](body: => T): ForkJoinTask[T]
+  }
+
+  class DefaultTaskScheduler extends TaskScheduler {
+    def schedule[T](body: => T): ForkJoinTask[T] = {
+      val t = new RecursiveTask[T] {
+        def compute = body
+      }
+      Thread.currentThread match {
+        case wt: ForkJoinWorkerThread =>
+          t.fork()
+        case _ =>
+          forkJoinPool.execute(t)
+      }
+      t
+    }
+  }
+
+  val scheduler =
+    new DynamicVariable[TaskScheduler](new DefaultTaskScheduler)
+
+  def task[T](body: => T): ForkJoinTask[T] = {
+    scheduler.value.schedule(body)
+  }
+
+  class DLLCombinerTest(chunk_size: Int = 3) extends DLLCombinerImplementation(chunk_size) {
+
+    override def +=(elem: Int): Unit = {
+      if(cnt % chunk_size == 0) {
+        chunks = chunks + 1
+        val node = new Node(chunk_size)
+        if (cnt == 0) {
+          head = node
+          last = node
+        }
+        else {
+          last.next = node
+          node.previous = last
+          last = node
+        }
+      }
+      last.add(elem)
+      cnt += 1
+    }
+
+    override def combine(that: DLLCombiner): DLLCombiner = {
+      assert(this.chunk_size == that.chunk_size)
+      if (this.cnt == 0) {
+        this.head = that.head
+        this.last = that.last
+        this.cnt = that.cnt
+        this.chunks = that.chunks
+
+        this
+      }
+      else if (that.cnt == 0)
+        this
+      else {
+        this.last.next = that.head
+        that.head.previous = this.last
+
+        this.cnt = this.cnt + that.cnt
+        this.chunks = this.chunks + that.chunks
+        this.last = that.last
+
+        this
+      }
+    }
+  }
+}
diff --git a/previous-exams/2021-midterm/m7.md b/previous-exams/2021-midterm/m7.md
new file mode 100644
index 0000000..899703e
--- /dev/null
+++ b/previous-exams/2021-midterm/m7.md
@@ -0,0 +1,155 @@
+Use the following commands to make a fresh clone of your repository:
+
+```
+git clone -b m7 git@gitlab.epfl.ch:lamp/student-repositories-s21/cs206-GASPAR.git m7
+```
+
+## Useful links
+
+  * [A guide to the Scala parallel collections](https://docs.scala-lang.org/overviews/parallel-collections/overview.html)
+  * [The API documentation of the Scala parallel collections](https://www.javadoc.io/doc/org.scala-lang.modules/scala-parallel-collections_2.13/latest/scala/collection/index.html)
+  * [The API documentation of the Scala standard library](https://www.scala-lang.org/files/archive/api/2.13.4)
+  * [The API documentation of the Java standard library](https://docs.oracle.com/en/java/javase/15/docs/api/index.html)
+
+**If you have issues with the IDE, try [reimporting the
+build](https://gitlab.epfl.ch/lamp/cs206/-/blob/master/labs/example-lab.md#ide-features-like-type-on-hover-or-go-to-definition-do-not-work),
+if you still have problems, use `compile` in sbt instead.**
+
+## Exercise
+
+In this exercise, you will implement an array Combiner using internally a doubly linked list of arrays. Your goal is to complete the implementation of the (simplified) Combiner interface, by implementing the `result` method to compute the result array from this array combiner.
+
+Here you can see the declaration of the `DLLCombiner` class and the related `Node` class definition. Look at the `Lib` trait in the `lib.scala` file to find all definitions of relevant functions and classes.
+
+
+```scala
+  class Node(val size: Int) {
+    var value: Array[Int] = new Array(size)
+    var next: Node = null
+    var previous: Node = null
+    var cnt = 0
+
+    def add(v: Int) = {
+      value(cnt) = v
+      cnt += 1
+    }
+  }
+
+  // Simplified Combiner interface
+  // Implements methods += and combine
+  // Abstract methods should be implemented in subclasses
+  abstract class DLLCombiner(val chunk_size: Int)
+```
+
+`DLLCombiner` class contains the implementation of methods `+=` and `combine`. You should look at them to better understand the structure of this array Combiner, before moving on to solving this exercise.
+
+Your task in the exercise will be to implement the `result` method of the `DLLCombinerImplementation` class. This method should compute the result array from this array combiner. This method should work in parallel according to the Combiner contract. Implement this method efficiently using 4 parallel tasks, by copying the doubly linked list to the array from both ends at the same time. Two threads should start from the start of the list and two from the end. In each case, one thread would be responsible for odd list indexes and the other for even ones.
+
+
+```scala
+  class DLLCombinerImplementation(chunk_size: Int = 3) extends DLLCombiner(chunk_size) {
+
+    // Computes every other Integer element of data array, starting from the second, up to the middle
+    def task1(data: Array[Int]) = task {
+      ???
+    }
+
+    // Computes every other Integer element of data array, starting from the first (index 0), up to the middle
+    def task2(data: Array[Int]) = task {
+      ???
+    }
+
+    // Computes every other Integer element of data array, starting from the last, up to the middle
+    def task3(data: Array[Int]) = task {
+      ???
+    }
+
+    // Computes every other Integer element of data array, starting from the second to last, up to the middle
+    // This is executed on the current thread.
+    def task4(data: Array[Int]) = {
+      ???
+    }
+
+    def result(): Array[Int] = {
+      val data = new Array[Int](cnt)
+
+      ???
+
+      data
+    }
+
+  }
+```
+
+Following the description above, your task in the exercise is to:
+
+- Implement the four tasks to copy parts of the array. Each task is responsible for computing one quarter of the array, as indicated in comments:
+    + Task 1: Computes every other Integer element of data array, starting from the second, up to the middle
+    + Task 2: Computes every other Integer element of data array, starting from the first (index 0), up to the middle
+    + Task 3: Computes every other Integer element of data array, starting from the last, up to the middle
+    + Task 4: Computes every other Integer element of data array, starting from the second to last, up to the middle
+- Implement the method `result` to compute the result array in parallel using those four tasks.
+
+Hints:
+
+- Note that this doubly linked list implementation uses `null` pointers to represent the absence of nodes. Be careful when working with `null` pointers in your solution, to avoid causing a `NullPointerException`.
+
+- `DLLCombinerImplementation` comes with a private `copyForward` method that you can use in your solution:
+
+```scala
+  private def copyForward(data: Array[Int], curr: Node, from: Int, to: Int, limit: Int)
+```
+
+This method copies certain elements from a doubly linked list to an array, in a way that might be useful for this exercise.
+
+## Examples
+
+Here is one example of the `result` method with intermediate results:
+
+```scala
+    val combiner1 = DLLCombinerImplementation(4)
+    combiner1 += 7 // (7)
+    combiner1 += 2 // (7, 2)
+    combiner1 += 4 // (7, 2, 4)
+    combiner1 += 3 // (7, 2, 4, 3)
+    combiner1 += 9 // (7, 2, 4, 3) <-> (9)
+    combiner1 += 5 // (7, 2, 4, 3) <-> (9, 5)
+    combiner1 += 1 // (7, 2, 4, 3) <-> (9, 5, 1)
+
+    val res1 = combiner1.result() // (7, 2, 4, 3, 9, 5, 1)
+
+```
+In this example, `task1` was responsible for computing elements at index 1, `task2` for computing elements at indexes 0 and 2, `task3` for computing elements at indexes 6 and 4, and `task4` for computing elements at indexes 5 and 3.
+
+Here is another example with combining:
+
+```scala
+    val c1 = DLLCombinerImplementation(4)
+    c1 += 7 // (7)
+    c1 += 2 // (7, 2)
+    c1 += 4 // (7, 2, 4)
+    c1 += 3 // (7, 2, 4, 3)
+    c1 += 9 // (7, 2, 4, 3) <-> (9)
+    c1 += 5 // (7, 2, 4, 3) <-> (9, 5)
+    c1 += 1 // (7, 2, 4, 3) <-> (9, 5, 1)
+
+    val c2 = DLLCombinerImplementation(4)
+    c2 += 6 // (6)
+    c2 += 8 // (6, 8)
+    c2 += 5 // (6, 8, 5)
+    c2 += 1 // (6, 8, 5, 1)
+
+    val c3 = DLLCombinerImplementation(4)
+    c3 += 1 // (1)
+
+    c1.combine(c2).combine(c3) // (7, 2, 4, 3) <-> (9, 5, 1) <-> (6, 8, 5, 1) <-> (1)
+    val res = c1.result() // (7, 2, 4, 3, 9, 5, 1, 6, 8, 5, 1, 1)
+
+```
+
+You can look at the public tests to find more examples.
+
+In your solution you should only make changes to the `DLLCombinerImplementation` class. You are not allowed to change the file `lib.scala`. You can get partial points for solving parts of this exercise.
+
+
+
diff --git a/previous-exams/2021-midterm/m7/.gitignore b/previous-exams/2021-midterm/m7/.gitignore
new file mode 100644
index 0000000..40937dc
--- /dev/null
+++ b/previous-exams/2021-midterm/m7/.gitignore
@@ -0,0 +1,22 @@
+# General
+*.DS_Store
+*.swp
+*~
+
+# Dotty
+*.class
+*.tasty
+*.hasTasty
+
+# sbt
+target/
+
+# IDE
+.bsp
+.bloop
+.metals
+.vscode
+
+# datasets
+stackoverflow-grading.csv
+wikipedia-grading.dat
diff --git a/previous-exams/2021-midterm/m7/assignment.sbt b/previous-exams/2021-midterm/m7/assignment.sbt
new file mode 100644
index 0000000..da7eb3c
--- /dev/null
+++ b/previous-exams/2021-midterm/m7/assignment.sbt
@@ -0,0 +1,2 @@
+// Student tasks (i.e. submit, packageSubmission)
+enablePlugins(StudentTasks)
diff --git a/previous-exams/2021-midterm/m7/build.sbt b/previous-exams/2021-midterm/m7/build.sbt
new file mode 100644
index 0000000..25a0926
--- /dev/null
+++ b/previous-exams/2021-midterm/m7/build.sbt
@@ -0,0 +1,12 @@
+course := "midterm"
+assignment := "m7"
+scalaVersion := "3.0.0-RC1"
+scalacOptions ++= Seq("-language:implicitConversions", "-deprecation")
+
+libraryDependencies += "org.scalameta" %% "munit" % "0.7.22"
+
+val MUnitFramework = new TestFramework("munit.Framework")
+testFrameworks += MUnitFramework
+// Decode Scala names
+testOptions += Tests.Argument(MUnitFramework, "-s")
+testSuite := "m7.M7Suite"
diff --git a/previous-exams/2021-midterm/m7/grading-tests.jar b/previous-exams/2021-midterm/m7/grading-tests.jar
new file mode 100644
index 0000000000000000000000000000000000000000..4536552028df3dbab3c2d6fd1d7ae9f4f1322f75
GIT binary patch
literal 35244
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

literal 0
HcmV?d00001

diff --git a/previous-exams/2021-midterm/m7/project/FilteringReporterPlugin.scala b/previous-exams/2021-midterm/m7/project/FilteringReporterPlugin.scala
new file mode 100644
index 0000000..2e4fd9a
--- /dev/null
+++ b/previous-exams/2021-midterm/m7/project/FilteringReporterPlugin.scala
@@ -0,0 +1,31 @@
+package sbt // To access the private[sbt] compilerReporter key
+package filteringReporterPlugin
+
+import Keys._
+import ch.epfl.lamp._
+
+object FilteringReporterPlugin extends AutoPlugin {
+  override lazy val projectSettings = Seq(
+    // Turn off warning coming from scalameter that we cannot fix without changing scalameter
+    compilerReporter in (Compile, compile) ~= { reporter => new FilteringReporter(reporter) }
+  )
+}
+
+class FilteringReporter(reporter: xsbti.Reporter) extends xsbti.Reporter {
+
+  def reset(): Unit = reporter.reset()
+  def hasErrors: Boolean = reporter.hasErrors
+  def hasWarnings: Boolean = reporter.hasWarnings
+  def printSummary(): Unit = reporter.printSummary()
+  def problems: Array[xsbti.Problem] = reporter.problems
+
+  def log(problem: xsbti.Problem): Unit = {
+    if (!problem.message.contains("An existential type that came from a Scala-2 classfile cannot be"))
+      reporter.log(problem)
+  }
+
+  def comment(pos: xsbti.Position, msg: String): Unit =
+    reporter.comment(pos, msg)
+
+  override def toString = s"CollectingReporter($reporter)"
+}
diff --git a/previous-exams/2021-midterm/m7/project/MOOCSettings.scala b/previous-exams/2021-midterm/m7/project/MOOCSettings.scala
new file mode 100644
index 0000000..1c40443
--- /dev/null
+++ b/previous-exams/2021-midterm/m7/project/MOOCSettings.scala
@@ -0,0 +1,49 @@
+package ch.epfl.lamp
+
+import sbt._
+import sbt.Keys._
+
+/**
+ * Coursera uses two versions of each assignment. They both have the same assignment key and part id but have
+ * different item ids.
+ *
+ * @param key Assignment key
+ * @param partId Assignment partId
+ * @param itemId Item id of the non premium version
+ * @param premiumItemId Item id of the premium version (`None` if the assignment is optional)
+ */
+case class CourseraId(key: String, partId: String, itemId: String, premiumItemId: Option[String])
+
+/**
+  * Settings shared by all assignments, reused in various tasks.
+  */
+object MOOCSettings extends AutoPlugin {
+
+  override def requires = super.requires && filteringReporterPlugin.FilteringReporterPlugin
+
+  object autoImport {
+    val course = SettingKey[String]("course")
+    val assignment = SettingKey[String]("assignment")
+    val options = SettingKey[Map[String, Map[String, String]]]("options")
+    val courseraId = settingKey[CourseraId]("Coursera-specific information identifying the assignment")
+    val testSuite = settingKey[String]("Fully qualified name of the test suite of this assignment")
+      .withRank(KeyRanks.Invisible)
+    // Convenient alias
+    type CourseraId = ch.epfl.lamp.CourseraId
+    val CourseraId = ch.epfl.lamp.CourseraId
+  }
+
+  import autoImport._
+
+  override val globalSettings: Seq[Def.Setting[_]] = Seq(
+    // supershell is verbose, buggy and useless.
+    useSuperShell := false
+  )
+
+  override val projectSettings: Seq[Def.Setting[_]] = Seq(
+    parallelExecution in Test := false,
+    // Report test result after each test instead of waiting for every test to finish
+    logBuffered in Test := false,
+    name := s"${course.value}-${assignment.value}"
+  )
+}
diff --git a/previous-exams/2021-midterm/m7/project/StudentTasks.scala b/previous-exams/2021-midterm/m7/project/StudentTasks.scala
new file mode 100644
index 0000000..c4669af
--- /dev/null
+++ b/previous-exams/2021-midterm/m7/project/StudentTasks.scala
@@ -0,0 +1,303 @@
+package ch.epfl.lamp
+
+import sbt._
+import Keys._
+
+// import scalaj.http._
+import java.io.{File, FileInputStream, IOException}
+import org.apache.commons.codec.binary.Base64
+// import play.api.libs.json.{Json, JsObject, JsPath}
+import scala.util.{Failure, Success, Try}
+
+/**
+  * Provides tasks for submitting the assignment
+  */
+object StudentTasks extends AutoPlugin {
+
+  override def requires = super.requires && MOOCSettings
+
+  object autoImport {
+    val packageSourcesOnly = TaskKey[File]("packageSourcesOnly", "Package the sources of the project")
+    val packageBinWithoutResources = TaskKey[File]("packageBinWithoutResources", "Like packageBin, but without the resources")
+    val packageSubmissionZip = TaskKey[File]("packageSubmissionZip")
+    val packageSubmission = inputKey[Unit]("package solution as an archive file")
+
+    lazy val Grading = config("grading") extend(Runtime)
+  }
+
+
+  import autoImport._
+  import MOOCSettings.autoImport._
+
+  override lazy val projectSettings = Seq(
+    packageSubmissionSetting,
+    fork := true,
+    connectInput in run := true,
+    outputStrategy := Some(StdoutOutput),
+  ) ++
+    packageSubmissionZipSettings ++
+    inConfig(Grading)(Defaults.testSettings ++ Seq(
+      unmanagedJars += file("grading-tests.jar"),
+
+      definedTests := (definedTests in Test).value,
+      internalDependencyClasspath := (internalDependencyClasspath in Test).value
+    ))
+
+
+  /** **********************************************************
+    * SUBMITTING A SOLUTION TO COURSERA
+    */
+
+  val packageSubmissionZipSettings = Seq(
+    packageSubmissionZip := {
+      val submission = crossTarget.value / "submission.zip"
+      val sources = (packageSourcesOnly in Compile).value
+      val binaries = (packageBinWithoutResources in Compile).value
+      IO.zip(Seq(sources -> "sources.zip", binaries -> "binaries.jar"), submission, None)
+      submission
+    },
+    artifactClassifier in packageSourcesOnly := Some("sources"),
+    artifact in (Compile, packageBinWithoutResources) ~= (art => art.withName(art.name + "-without-resources"))
+  ) ++
+  inConfig(Compile)(
+    Defaults.packageTaskSettings(packageSourcesOnly, Defaults.sourceMappings) ++
+    Defaults.packageTaskSettings(packageBinWithoutResources, Def.task {
+      val relativePaths =
+        (unmanagedResources in Compile).value.flatMap(Path.relativeTo((unmanagedResourceDirectories in Compile).value)(_))
+      (mappings in (Compile, packageBin)).value.filterNot { case (_, path) => relativePaths.contains(path) }
+    })
+  )
+
+  val maxSubmitFileSize = {
+    val mb = 1024 * 1024
+    10 * mb
+  }
+
+  /** Check that the jar exists, isn't empty, isn't crazy big, and can be read
+    * If so, encode jar as base64 so we can send it to Coursera
+    */
+  def prepareJar(jar: File, s: TaskStreams): String = {
+    val errPrefix = "Error submitting assignment jar: "
+    val fileLength = jar.length()
+    if (!jar.exists()) {
+      s.log.error(errPrefix + "jar archive does not exist\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength == 0L) {
+      s.log.error(errPrefix + "jar archive is empty\n" + jar.getAbsolutePath)
+      failSubmit()
+    } else if (fileLength > maxSubmitFileSize) {
+      s.log.error(errPrefix + "jar archive is too big. Allowed size: " +
+        maxSubmitFileSize + " bytes, found " + fileLength + " bytes.\n" +
+        jar.getAbsolutePath)
+      failSubmit()
+    } else {
+      val bytes = new Array[Byte](fileLength.toInt)
+      val sizeRead = try {
+        val is = new FileInputStream(jar)
+        val read = is.read(bytes)
+        is.close()
+        read
+      } catch {
+        case ex: IOException =>
+          s.log.error(errPrefix + "failed to read sources jar archive\n" + ex.toString)
+          failSubmit()
+      }
+      if (sizeRead != bytes.length) {
+        s.log.error(errPrefix + "failed to read the sources jar archive, size read: " + sizeRead)
+        failSubmit()
+      } else encodeBase64(bytes)
+    }
+  }
+
+  /** Task to package solution to a given file path */
+  lazy val packageSubmissionSetting = packageSubmission := {
+    val args: Seq[String] = Def.spaceDelimited("[path]").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val base64Jar = prepareJar(jar, s)
+
+    val path = args.headOption.getOrElse((baseDirectory.value / "submission.jar").absolutePath)
+    scala.tools.nsc.io.File(path).writeAll(base64Jar)
+  }
+
+/*
+  /** Task to submit a solution to coursera */
+  val submit = inputKey[Unit]("submit solution to Coursera")
+  lazy val submitSetting = submit := {
+    // Fail if scalafix linting does not pass.
+    scalafixLinting.value
+
+    val args: Seq[String] = Def.spaceDelimited("<arg>").parsed
+    val s: TaskStreams = streams.value // for logging
+    val jar = (packageSubmissionZip in Compile).value
+
+    val assignmentDetails =
+      courseraId.?.value.getOrElse(throw new MessageOnlyException("This assignment can not be submitted to Coursera because the `courseraId` setting is undefined"))
+    val assignmentKey = assignmentDetails.key
+    val courseName =
+      course.value match {
+        case "capstone" => "scala-capstone"
+        case "bigdata"  => "scala-spark-big-data"
+        case other      => other
+      }
+
+    val partId = assignmentDetails.partId
+    val itemId = assignmentDetails.itemId
+    val premiumItemId = assignmentDetails.premiumItemId
+
+    val (email, secret) = args match {
+      case email :: secret :: Nil =>
+        (email, secret)
+      case _ =>
+        val inputErr =
+          s"""|Invalid input to `submit`. The required syntax for `submit` is:
+              |submit <email-address> <submit-token>
+              |
+              |The submit token is NOT YOUR LOGIN PASSWORD.
+              |It can be obtained from the assignment page:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId
+              |${
+                premiumItemId.fold("") { id =>
+                  s"""or (for premium learners):
+                     |https://www.coursera.org/learn/$courseName/programming/$id
+                   """.stripMargin
+                }
+              }
+          """.stripMargin
+        s.log.error(inputErr)
+        failSubmit()
+    }
+
+    val base64Jar = prepareJar(jar, s)
+    val json =
+      s"""|{
+          |   "assignmentKey":"$assignmentKey",
+          |   "submitterEmail":"$email",
+          |   "secret":"$secret",
+          |   "parts":{
+          |      "$partId":{
+          |         "output":"$base64Jar"
+          |      }
+          |   }
+          |}""".stripMargin
+
+    def postSubmission[T](data: String): Try[HttpResponse[String]] = {
+      val http = Http("https://www.coursera.org/api/onDemandProgrammingScriptSubmissions.v1")
+      val hs = List(
+        ("Cache-Control", "no-cache"),
+        ("Content-Type", "application/json")
+      )
+      s.log.info("Connecting to Coursera...")
+      val response = Try(http.postData(data)
+                         .headers(hs)
+                         .option(HttpOptions.connTimeout(10000)) // scalaj default timeout is only 100ms, changing that to 10s
+                         .asString) // kick off HTTP POST
+      response
+    }
+
+    val connectMsg =
+      s"""|Attempting to submit "${assignment.value}" assignment in "$courseName" course
+          |Using:
+          |- email: $email
+          |- submit token: $secret""".stripMargin
+    s.log.info(connectMsg)
+
+    def reportCourseraResponse(response: HttpResponse[String]): Unit = {
+      val code = response.code
+      val respBody = response.body
+
+       /* Sample JSON response from Coursera
+      {
+        "message": "Invalid email or token.",
+        "details": {
+          "learnerMessage": "Invalid email or token."
+        }
+      }
+      */
+
+      // Success, Coursera responds with 2xx HTTP status code
+      if (response.is2xx) {
+        val successfulSubmitMsg =
+          s"""|Successfully connected to Coursera. (Status $code)
+              |
+                |Assignment submitted successfully!
+              |
+                |You can see how you scored by going to:
+              |https://www.coursera.org/learn/$courseName/programming/$itemId/
+              |${
+            premiumItemId.fold("") { id =>
+              s"""or (for premium learners):
+                 |https://www.coursera.org/learn/$courseName/programming/$id
+                       """.stripMargin
+            }
+          }
+              |and clicking on "My Submission".""".stripMargin
+        s.log.info(successfulSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 4xx HTTP status code (client-side failure)
+      else if (response.is4xx) {
+        val result = Try(Json.parse(respBody)).toOption
+        val learnerMsg = result match {
+          case Some(resp: JsObject) =>
+            (JsPath \ "details" \ "learnerMessage").read[String].reads(resp).get
+          case Some(x) => // shouldn't happen
+            "Could not parse Coursera's response:\n" + x
+          case None =>
+            "Could not parse Coursera's response:\n" + respBody
+        }
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |There was something wrong while attempting to submit.
+              |Coursera says:
+              |$learnerMsg (Status $code)""".stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera responds with 5xx HTTP status code (server-side failure)
+      else if (response.is5xx) {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera seems to be unavailable at the moment (Status $code)
+              |Check https://status.coursera.org/ and try again in a few minutes.
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+
+      // Failure, Coursera repsonds with an unexpected status code
+      else {
+        val failedSubmitMsg =
+          s"""|Submission failed.
+              |Coursera replied with an unexpected code (Status $code)
+           """.stripMargin
+        s.log.error(failedSubmitMsg)
+      }
+    }
+
+    // kick it all off, actually make request
+    postSubmission(json) match {
+      case Success(resp) => reportCourseraResponse(resp)
+      case Failure(e) =>
+        val failedConnectMsg =
+          s"""|Connection to Coursera failed.
+              |There was something wrong while attempting to connect to Coursera.
+              |Check your internet connection.
+              |${e.toString}""".stripMargin
+        s.log.error(failedConnectMsg)
+    }
+
+   }
+*/
+
+  def failSubmit(): Nothing = {
+    sys.error("Submission failed")
+  }
+
+  /**
+    * *****************
+    * DEALING WITH JARS
+    */
+  def encodeBase64(bytes: Array[Byte]): String =
+    new String(Base64.encodeBase64(bytes))
+}
diff --git a/previous-exams/2021-midterm/m7/project/build.properties b/previous-exams/2021-midterm/m7/project/build.properties
new file mode 100644
index 0000000..0b2e09c
--- /dev/null
+++ b/previous-exams/2021-midterm/m7/project/build.properties
@@ -0,0 +1 @@
+sbt.version=1.4.7
diff --git a/previous-exams/2021-midterm/m7/project/buildSettings.sbt b/previous-exams/2021-midterm/m7/project/buildSettings.sbt
new file mode 100644
index 0000000..8fac702
--- /dev/null
+++ b/previous-exams/2021-midterm/m7/project/buildSettings.sbt
@@ -0,0 +1,5 @@
+// Used for Coursera submission (StudentPlugin)
+// libraryDependencies += "org.scalaj" %% "scalaj-http" % "2.4.2"
+// libraryDependencies += "com.typesafe.play" %% "play-json" % "2.7.4"
+// Used for Base64 (StudentPlugin)
+libraryDependencies += "commons-codec" % "commons-codec" % "1.10"
diff --git a/previous-exams/2021-midterm/m7/project/plugins.sbt b/previous-exams/2021-midterm/m7/project/plugins.sbt
new file mode 100644
index 0000000..021c019
--- /dev/null
+++ b/previous-exams/2021-midterm/m7/project/plugins.sbt
@@ -0,0 +1,2 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.5.3")
diff --git a/previous-exams/2021-midterm/m7/src/main/scala/m7/M7.scala b/previous-exams/2021-midterm/m7/src/main/scala/m7/M7.scala
new file mode 100644
index 0000000..d941f26
--- /dev/null
+++ b/previous-exams/2021-midterm/m7/src/main/scala/m7/M7.scala
@@ -0,0 +1,149 @@
+package m7
+
+import java.util.concurrent._
+import scala.util.DynamicVariable
+
+trait M7 extends Lib {
+
+  class DLLCombinerImplementation(chunk_size: Int = 3) extends DLLCombiner(chunk_size){
+
+    // Computes every other Integer element of data array, starting from the second, up to the middle
+    def task1(data: Array[Int]): ForkJoinTask[Unit] = task {
+
+      var current = head
+      if(current != null) {
+        var i_from = 1
+        var i_to = 1
+
+        if(i_from >= current.cnt) {
+          current = current.next
+          if(current != null) {
+            i_from = 0
+          }
+          else i_to = cnt/2 // to stop the loop
+        }
+
+        copyForward(data, current, i_from, i_to, cnt/2)
+      }
+    }
+
+    // Computes every other Integer element of data array, starting from the first (index 0), up to the middle
+    def task2(data: Array[Int]): ForkJoinTask[Unit] = task {
+
+      var current = head
+      if(current != null) {
+        var i_from = 0
+        var i_to = 0
+        copyForward(data, current, i_from, i_to, cnt/2)
+      } 
+    }
+
+    // Computes every other Integer element of data array, starting from the last, up to the middle
+    def task3(data: Array[Int]): ForkJoinTask[Unit] = task {
+
+      var current = last
+      if( current != null) {
+        var i_from = current.cnt - 1
+        var i_to = cnt - 1
+        copyBackward(data, current, i_from, i_to, cnt/2)
+      }
+    }
+
+    // Computes every other Integer element of data array, starting from the second to last, up to the middle
+    // This is executed on the current thread.
+    def task4(data: Array[Int]): Unit = {
+
+      var current = last
+      if( current != null) {
+        var i_to = cnt - 2
+        var i_from = current.cnt - 2
+        if(i_from < 0) {
+          current = current.previous
+          if(current != null) {
+            i_from = current.cnt - 1
+          }
+          else i_to = cnt/2 - 1 // to stop the loop
+        }
+
+        copyBackward(data, current, i_from, i_to, cnt/2)
+      }
+    }
+
+    def result(): Array[Int] = {
+      val data = new Array[Int](cnt)
+
+      val t1 = task1(data)
+      val t2 = task2(data)
+      val t3 = task3(data)
+
+      task4(data)
+
+      t1.join()
+      t2.join()
+      t3.join()
+
+
+      data
+    }
+
+
+    private def copyBackward(data: Array[Int], curr: Node, from: Int, to: Int, limit: Int) = {
+      var current = curr
+      var i_from = from
+      var i_to = to 
+
+      while (i_to >= limit) {
+        try{
+          data(i_to) = current.value(i_from)
+          i_to -= 2
+          i_from -= 2
+          if(i_from == -1) {
+            current = current.previous
+            i_from = current.cnt - 1
+          }
+          else if(i_from == -2) {
+            current = current.previous
+            i_from = current.cnt - 2
+            if(current.cnt == 1) {
+              current = current.previous
+              i_from = current.cnt - 1
+            }
+          }
+        }
+        catch{
+          case e: Exception =>
+        }
+      }
+        
+    }
+    private def copyForward(data: Array[Int], curr: Node, from: Int, to: Int, limit: Int) = {
+      var current = curr
+      var i_from = from
+      var i_to = to 
+
+      while (i_to < limit) {
+        try {
+          data(i_to) = current.value(i_from)
+          i_to += 2
+          i_from += 2
+          if(i_from == current.cnt){
+            current = current.next
+            i_from = 0
+          }
+          else if(i_from > current.cnt) {
+            current = current.next
+            i_from = 1
+            if(current.cnt == 1) {
+              current = current.next
+              i_from = 0
+            }
+          }
+        }
+        catch{
+          case e: Exception =>
+        }
+      }
+    }
+  }
+
+}
diff --git a/previous-exams/2021-midterm/m7/src/main/scala/m7/lib.scala b/previous-exams/2021-midterm/m7/src/main/scala/m7/lib.scala
new file mode 100644
index 0000000..20eda60
--- /dev/null
+++ b/previous-exams/2021-midterm/m7/src/main/scala/m7/lib.scala
@@ -0,0 +1,84 @@
+package m7
+
+import java.util.concurrent._
+import scala.util.DynamicVariable
+
+trait Lib {
+
+  class Node(val size: Int) {
+    var value: Array[Int] = new Array(size)
+    var next: Node = null    
+    var previous: Node = null
+    var cnt = 0
+
+    def add(v: Int) = {
+      value(cnt) = v
+      cnt += 1
+    }
+  }
+
+  // Simplified Combiner interface
+  // Implements methods += and combine
+  // Abstract methods should be implemented in subclasses
+  abstract class DLLCombiner(val chunk_size: Int) {
+    var head: Node = null
+    var last: Node = null
+    var cnt: Int = 0
+    var chunks: Int = 0
+
+    // Adds an Integer to the last node of this array combiner. If the last node is full, allocates a new node.
+    def +=(elem: Int): Unit = {
+      if(cnt % chunk_size == 0) {
+        chunks = chunks + 1
+        val node = new Node(chunk_size)
+        if (cnt == 0) {
+          head = node
+          last = node
+        }
+        else {
+          last.next = node
+          node.previous = last
+          last = node
+        }
+      }
+      last.add(elem)
+      cnt += 1
+    }
+
+    // Combines this array combiner and another given combiner in constant O(1) complexity.
+    def combine(that: DLLCombiner): DLLCombiner = {
+      assert(this.chunk_size == that.chunk_size)
+      if (this.cnt == 0) {
+        this.head = that.head
+        this.last = that.last
+        this.cnt = that.cnt
+        this.chunks = that.chunks
+
+        this
+      }
+      else if (that.cnt == 0)
+        this
+      else {
+        this.last.next = that.head
+        that.head.previous = this.last
+
+        this.cnt = this.cnt + that.cnt
+        this.chunks = this.chunks + that.chunks
+        this.last = that.last
+
+        this
+      }
+    }
+
+    def task1(data: Array[Int]): ForkJoinTask[Unit]
+    def task2(data: Array[Int]): ForkJoinTask[Unit]
+    def task3(data: Array[Int]): ForkJoinTask[Unit]
+    def task4(data: Array[Int]): Unit
+
+    def result(): Array[Int]
+
+  }
+
+  def task[T](body: => T): ForkJoinTask[T]
+
+}
\ No newline at end of file
diff --git a/previous-exams/2021-midterm/m7/src/test/scala/m7/M7Suite.scala b/previous-exams/2021-midterm/m7/src/test/scala/m7/M7Suite.scala
new file mode 100644
index 0000000..8e1c344
--- /dev/null
+++ b/previous-exams/2021-midterm/m7/src/test/scala/m7/M7Suite.scala
@@ -0,0 +1,422 @@
+package m7
+
+import java.util.concurrent._
+import scala.util.DynamicVariable
+
+class M7Suite extends AbstractM7Suite {
+
+  // (70+) 30 / 500 points for correct implementation, don't check parallelism
+  test("[Correctness] fetch result - simple combiners (5pts)") {
+    assertCorrectnessSimple()
+  }
+
+  test("[Correctness] fetch result - small combiners (5pts)") {
+    assertCorrectnessBasic()
+  }
+
+  test("[Correctness] fetch result - small combiners after combining (10pts)") {
+    assertCorrectnessCombined()
+  }
+
+  test("[Correctness] fetch result - large combiners (10pts)") {
+    assertCorrectnessLarge()
+  }
+
+  def assertCorrectnessSimple() = {
+    simpleCombiners.foreach(elem => assert(compare(elem._1, elem._2)))
+  }
+
+  def assertCorrectnessBasic() = {
+    basicCombiners.foreach(elem => assert(compare(elem._1, elem._2)))
+  }
+
+  def assertCorrectnessCombined() = {
+    combinedCombiners.foreach(elem => assert(compare(elem._1, elem._2)))
+  }
+
+  def assertCorrectnessLarge() = {
+    largeCombiners.foreach(elem => assert(compare(elem._1, elem._2)))
+  }
+
+  // (70+30+) 50 / 500 points for correct parallel implementation, don't check if it's exactly 1/4 of the array per task
+  private var count = 0
+  private val expected = 3
+
+  override def task[T](body: => T): ForkJoinTask[T] = {
+    count += 1
+    scheduler.value.schedule(body)
+  }
+
+  test("[TaskCount] number of newly created tasks should be 3 (5pts)") {
+    assertTaskCountSimple()
+  }
+
+  test("[TaskCount] fetch result and check parallel - simple combiners (5pts)") {
+    assertTaskCountSimple()
+    assertCorrectnessSimple()
+  }
+
+  test("[TaskCount] fetch result and check parallel - small combiners (10pts)") {
+    assertTaskCountSimple()
+    assertCorrectnessBasic()
+  }
+
+  test("[TaskCount] fetch result and check parallel - small combiners after combining (15pts)") {
+    assertTaskCountSimple()
+    assertCorrectnessCombined()
+  }
+
+  test("[TaskCount] fetch result and check parallel - large combiners (15pts)") {
+    assertTaskCountSimple()
+    assertCorrectnessLarge()
+  }
+
+  def assertTaskCountSimple(): Unit = {
+    simpleCombiners.foreach(elem => assertTaskCount(elem._1, elem._2))
+  }
+
+  def assertTaskCount(combiner: DLLCombinerTest, array: Array[Int]): Unit = {
+    try {
+      count = 0
+      build(combiner, array)
+      combiner.result()
+      assertEquals(count, expected, {
+        s"ERROR: Expected $expected instead of $count calls to `task(...)`"
+      })
+    } finally {
+      count = 0
+    }
+  }
+
+  //(70+30+50+) 200 / 500 points for correct parallel implementation, exactly 1/4 of the array per task
+  test("[TaskFairness] each task should compute 1/4 of the result (50pts)") {
+    assertTaskFairness(simpleCombiners.unzip._1)
+  }
+
+  test("[TaskFairness] each task should correctly compute 1/4 of the result - simple combiners (20pts)") {
+    assertTaskFairness(simpleCombiners.unzip._1)
+    assertCorrectnessSimple()
+  }
+
+  test("[TaskFairness] each task should correctly compute 1/4 of the result - small combiners (30pts)") {
+    assertTaskFairness(basicCombiners.unzip._1)
+    assertCorrectnessBasic()
+  }
+
+  test("[TaskFairness] each task should correctly compute 1/4 of the result - small combiners after combining (50pts)") {
+    assertTaskFairness(combinedCombiners.unzip._1)
+    assertCorrectnessCombined()
+  }
+
+  test("[TaskFairness] each task should correctly compute 1/4 of the result - large combiners (50pts)") {
+    assertTaskFairness(largeCombiners.unzip._1)
+    assertCorrectnessLarge()
+  }
+
+  def assertTaskFairness(combiners: List[DLLCombinerTest]): Unit = {
+    def assertNewTaskFairness(combiner: DLLCombinerTest, task: ForkJoinTask[Unit], data: Array[Int]) = {
+      var count = 0
+      var expected = combiner.cnt / 4
+      task.join
+      count = data.count(elem => elem != 0)
+
+      assert((count - expected).abs <= 1)
+    }
+
+    def assertMainTaskFairness(combiner: DLLCombinerTest, task: Unit, data: Array[Int]) = {
+      var count = 0
+      var expected = combiner.cnt / 4
+      count = data.count(elem => elem != 0)
+
+      assert((count - expected).abs <= 1)
+    }
+
+    combiners.foreach { elem =>
+      var data = Array.fill(elem.cnt)(0)
+      assertNewTaskFairness(elem, elem.task1(data), data)
+
+      data = Array.fill(elem.cnt)(0)
+      assertNewTaskFairness(elem, elem.task2(data), data)
+
+      data = Array.fill(elem.cnt)(0)
+      assertNewTaskFairness(elem, elem.task3(data), data)
+
+      data = Array.fill(elem.cnt)(0)
+      assertMainTaskFairness(elem, elem.task4(data), data)
+    }
+  }
+
+  //(70+30+50+200+) 150 / 500 points for correct parallel implementation, exactly 1/4 of the array per task, exactly the specified quarter
+
+  test("[TaskPrecision] each task should compute specified 1/4 of the result - simple combiners (20pts)") {
+    assertTaskPrecision(simpleCombiners)
+  }
+
+  test("[TaskPrecision] each task should compute specified 1/4 of the result - small combiners (30pts)") {
+    assertTaskPrecision(basicCombiners)
+  }
+
+  test("[TaskPrecision] each task should compute specified 1/4 of the result - small combiners after combining (50pts)") {
+    assertTaskPrecision(combinedCombiners)
+  }
+
+  test("[TaskPrecision] each task should compute specified 1/4 of the result - large combiners (50pts)") {
+    assertTaskPrecision(largeCombiners)
+  }
+
+  def assertTaskPrecision(combiners: List[(DLLCombinerTest, Array[Int])]): Unit = {
+    combiners.foreach { elem =>
+      var data = Array.fill(elem._1.cnt)(0)
+      var ref = Array.fill(elem._1.cnt)(0)
+      val task1 = elem._1.task1(data)
+      task1.join
+      Range(0, elem._1.cnt).foreach(i => (if (i < elem._1.cnt / 2 - 1 && i % 2 == 1) ref(i) = elem._2(i)))
+      assert(Range(0, elem._1.cnt / 2 - 1).forall(i => data(i) == ref(i)))
+
+      data = Array.fill(elem._1.cnt)(0)
+      ref = Array.fill(elem._1.cnt)(0)
+      val task2 = elem._1.task2(data)
+      task2.join
+      Range(0, elem._1.cnt).foreach(i => (if (i < elem._1.cnt / 2 - 1 && i % 2 == 0) ref(i) = elem._2(i)))
+      assert(Range(0, elem._1.cnt / 2 - 1).forall(i => data(i) == ref(i)))
+
+      data = Array.fill(elem._1.cnt)(0)
+      ref = Array.fill(elem._1.cnt)(0)
+      val task3 = elem._1.task3(data)
+      task3.join
+      Range(0, elem._1.cnt).foreach(i => (if (i > elem._1.cnt / 2 + 1 && i % 2 != elem._1.cnt % 2) ref(i) = elem._2(i)))
+      assert(Range(elem._1.cnt / 2 + 2, elem._1.cnt).forall(i => data(i) == ref(i)))
+
+      data = Array.fill(elem._1.cnt)(0)
+      ref = Array.fill(elem._1.cnt)(0)
+      val task4 = elem._1.task4(data)
+      Range(0, elem._1.cnt).foreach(i => (if (i > elem._1.cnt / 2 + 1 && i % 2 == elem._1.cnt % 2) ref(i) = elem._2(i)))
+      assert(Range(elem._1.cnt / 2 + 2, elem._1.cnt).forall(i => data(i) == ref(i)))
+    }
+  }
+
+  test("[Public] fetch simple result without combining (5pts)") {
+    val combiner1 = DLLCombinerTest(2)
+    combiner1 += 7
+    combiner1 += 2
+    combiner1 += 3
+    combiner1 += 8
+    combiner1 += 1
+    combiner1 += 2
+    combiner1 += 3
+    combiner1 += 8
+
+    val result = combiner1.result()
+    val array = Array(7, 2, 3, 8, 1, 2, 3, 8)
+
+    assert(Range(0,array.size).forall(i => array(i) == result(i)))
+  }
+
+  test("[Public] fetch result without combining (5pts)") {
+    val combiner1 = DLLCombinerTest(2)
+    combiner1 += 7
+    combiner1 += 2
+    combiner1 += 3
+    combiner1 += 8
+    combiner1 += 1
+
+    val result = combiner1.result()
+    val array = Array(7, 2, 3, 8, 1)
+
+    assert(Range(0,array.size).forall(i => array(i) == result(i)))
+  }
+
+  test("[Public] fetch result after simple combining (5pts)") {
+    val combiner1 = DLLCombinerTest(2)
+    combiner1 += 7
+    combiner1 += 2
+
+    val combiner2 = DLLCombinerTest(2)
+    combiner2 += 3
+    combiner2 += 8
+
+    val combiner3 = DLLCombinerTest(2)
+    combiner2 += 1
+    combiner2 += 9
+
+    val combiner4 = DLLCombinerTest(2)
+    combiner2 += 3
+    combiner2 += 2
+
+    val result = combiner1.combine(combiner2).combine(combiner3).combine(combiner4).result()
+    val array = Array(7, 2, 3, 8, 1, 9, 3, 2)
+
+    assert(Range(0,array.size).forall(i => array(i) == result(i)))
+  }
+
+  test("[Public] fetch result - empty combiner (20pts)") {
+    val combiner1 = DLLCombinerTest(2)
+    val result = combiner1.result()
+    assertEquals(result.size, 0)
+  }
+
+  test("[Public] fetch result - full single element combiner (15pts)") {
+    val combiner1 = DLLCombinerTest(3)
+    combiner1 += 4
+    combiner1 += 2
+    combiner1 += 6
+
+    val result = combiner1.result()
+    val array = Array(4, 2, 6)
+
+    assert(Range(0,array.size).forall(i => array(i) == result(i)))
+  }
+
+}
+
+
+trait AbstractM7Suite extends munit.FunSuite with LibImpl {
+
+  def simpleCombiners = buildSimpleCombiners()
+  def basicCombiners = buildBasicCombiners()
+  def combinedCombiners = buildCombinedCombiners()
+  def largeCombiners = buildLargeCombiners()
+
+  def buildSimpleCombiners() = {
+    val simpleCombiners = List(
+      (DLLCombinerTest(4), Array(4, 2, 6, 1, 5, 4, 3, 5, 6, 3, 4, 5, 6, 3, 4, 5)),
+      (DLLCombinerTest(4), Array(7, 2, 2, 9, 3, 2, 1, 1, 1, 1, 1, 1, 1, 2, 3, 2)),
+      (DLLCombinerTest(4), Array.fill(16)(5))
+    )
+    simpleCombiners.foreach(elem => build(elem._1, elem._2))
+    simpleCombiners
+  }
+
+  def buildBasicCombiners() = {
+    val basicCombiners = List(
+      (DLLCombinerTest(2), Array(4, 2, 6)),
+      (DLLCombinerTest(5), Array(4, 2, 6)),
+      (DLLCombinerTest(3), Array(4, 2, 6, 1, 7, 2, 4)),
+      (DLLCombinerTest(4), Array(7, 2, 2, 9, 3, 2, 11, 12, 13, 14, 15, 16, 17, 22)),
+      (DLLCombinerTest(3), Array.fill(16)(7)),
+      (DLLCombinerTest(3), Array.fill(19)(7)),
+      (DLLCombinerTest(3), Array.fill(5)(7)),
+      (DLLCombinerTest(3), Array.fill(6)(7))
+    )
+    basicCombiners.foreach(elem => build(elem._1, elem._2))
+    basicCombiners
+  }
+
+  def buildCombinedCombiners() = {
+    var combinedCombiners = List[(DLLCombinerTest, Array[Int])]()
+    Range(1, 10).foreach { chunk_size =>
+      val array = basicCombiners.filter(elem => elem._1.chunk_size == chunk_size).foldLeft(Array[Int]()) { (acc, i) => acc ++ i._2 }
+      val combiner = DLLCombinerTest(chunk_size)
+      basicCombiners.filter(elem => elem._1.chunk_size == chunk_size).foreach(elem => combiner.combine(elem._1))
+
+      combinedCombiners  = combinedCombiners :+ (combiner, array)
+    }
+    combinedCombiners
+  }
+
+  def buildLargeCombiners() = {
+    val largeCombiners = List(
+      (DLLCombinerTest(21), Array.fill(1321)(4) ++ Array.fill(1322)(7)),
+      (DLLCombinerTest(18), Array.fill(1341)(2) ++ Array.fill(1122)(5)),
+      (DLLCombinerTest(3), Array.fill(1321)(4) ++ Array.fill(1322)(7) ++ Array.fill(321)(4) ++ Array.fill(322)(7)),
+      (DLLCombinerTest(12), Array.fill(992321)(4) ++ Array.fill(99322)(7)),
+      (DLLCombinerTest(4), Array.fill(953211)(4) ++ Array.fill(999322)(1))
+    )
+    largeCombiners.foreach(elem => build(elem._1, elem._2))
+    largeCombiners
+  }
+
+  def build(combiner: DLLCombinerTest, array: Array[Int]): DLLCombinerTest = {
+    array.foreach(elem => combiner += elem)
+    combiner
+  }
+
+  def compare(combiner: DLLCombinerTest, array: Array[Int]): Boolean = {
+    val result = combiner.result()
+    Range(0,array.size).forall(i => array(i) == result(i))
+  }
+
+  def buildAndCompare(combiner: DLLCombinerTest, array: Array[Int]): Boolean = {
+    array.foreach(elem => combiner += elem)
+    val result = combiner.result()
+
+    Range(0,array.size).forall(i => array(i) == result(i))
+  }
+
+}
+
+trait LibImpl extends M7 {
+
+  val forkJoinPool = new ForkJoinPool
+
+  abstract class TaskScheduler {
+    def schedule[T](body: => T): ForkJoinTask[T]
+  }
+
+  class DefaultTaskScheduler extends TaskScheduler {
+    def schedule[T](body: => T): ForkJoinTask[T] = {
+      val t = new RecursiveTask[T] {
+        def compute = body
+      }
+      Thread.currentThread match {
+        case wt: ForkJoinWorkerThread =>
+          t.fork()
+        case _ =>
+          forkJoinPool.execute(t)
+      }
+      t
+    }
+  }
+
+  val scheduler =
+    new DynamicVariable[TaskScheduler](new DefaultTaskScheduler)
+
+  def task[T](body: => T): ForkJoinTask[T] = {
+    scheduler.value.schedule(body)
+  }
+
+  class DLLCombinerTest(chunk_size: Int = 3) extends DLLCombinerImplementation(chunk_size) {
+
+    override def +=(elem: Int): Unit = {
+      if(cnt % chunk_size == 0) {
+        chunks = chunks + 1
+        val node = new Node(chunk_size)
+        if (cnt == 0) {
+          head = node
+          last = node
+        }
+        else {
+          last.next = node
+          node.previous = last
+          last = node
+        }
+      }
+      last.add(elem)
+      cnt += 1
+    }
+
+    override def combine(that: DLLCombiner): DLLCombiner = {
+      assert(this.chunk_size == that.chunk_size)
+      if (this.cnt == 0) {
+        this.head = that.head
+        this.last = that.last
+        this.cnt = that.cnt
+        this.chunks = that.chunks
+
+        this
+      }
+      else if (that.cnt == 0)
+        this
+      else {
+        this.last.next = that.head
+        that.head.previous = this.last
+
+        this.cnt = this.cnt + that.cnt
+        this.chunks = this.chunks + that.chunks
+        this.last = that.last
+
+        this
+      }
+    }
+  }
+}
-- 
GitLab