From 9fedef406569a46ef19de98fbdc67dd2aca68765 Mon Sep 17 00:00:00 2001
From: Matt Bovel <matthieu@bovel.net>
Date: Mon, 25 Apr 2022 22:59:30 +0200
Subject: [PATCH] Add midterm 2021 empty code

---
 .../m1.md                                     |   6 -
 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 -> 33278 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       |   3 +
 .../m1/src/main/scala/m1/Lib.scala            |  60 +++
 .../m1/src/main/scala/m1/M1.scala             |  90 ++++
 .../m1/src/test/scala/m1/M1Suite.scala        | 156 +++++++
 .../m14.md                                    |   6 -
 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 -> 119782 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      |   3 +
 .../scala/m14/AbstractBlockingQueue.scala     |  14 +
 .../m14/AbstractThreadPoolExecutor.scala      |   7 +
 .../m14/src/main/scala/m14/M14.scala          |  62 +++
 .../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 +
 .../m15.md                                    |   6 -
 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 -> 126107 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      |   3 +
 .../scala/m15/AbstractBlockingQueue.scala     |  14 +
 .../m15/AbstractThreadPoolExecutor.scala      |   7 +
 .../m15/src/main/scala/m15/M15.scala          |  65 +++
 .../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 +
 .../m2.md                                     |   6 -
 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 -> 34628 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       |   3 +
 .../m2/src/main/scala/m2/Lib.scala            |  60 +++
 .../m2/src/main/scala/m2/M2.scala             |  89 ++++
 .../m2/src/test/scala/m2/M2Suite.scala        | 175 ++++++++
 .../m20.md                                    |   6 -
 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 -> 131656 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      |   3 +
 .../main/scala/m20/MultiWriterSeqCount.scala  |  46 ++
 .../m20/src/main/scala/m20/SeqCount.scala     |  42 ++
 .../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 +++
 .../m21.md                                    |   6 -
 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 -> 131651 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      |   3 +
 .../main/scala/m21/MultiWriterSeqCount.scala  |  46 ++
 .../m21/src/main/scala/m21/SeqCount.scala     |  42 ++
 .../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 +++
 .../m3.md                                     |   6 -
 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 -> 34419 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       |   3 +
 .../m3/src/main/scala/m3/Lib.scala            |  68 +++
 .../m3/src/main/scala/m3/M3.scala             |  89 ++++
 .../m3/src/test/scala/m3/M3Suite.scala        | 174 ++++++++
 .../m6.md                                     |   6 -
 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 -> 35236 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       |   3 +
 .../m6/src/main/scala/m6/M6.scala             |  69 +++
 .../m6/src/main/scala/m6/lib.scala            |  84 ++++
 .../m6/src/test/scala/m6/M6Suite.scala        | 422 ++++++++++++++++++
 .../m7.md                                     |   6 -
 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 -> 35238 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       |   3 +
 .../m7/src/main/scala/m7/M7.scala             |  69 +++
 .../m7/src/main/scala/m7/lib.scala            |  84 ++++
 .../m7/src/test/scala/m7/M7Suite.scala        | 422 ++++++++++++++++++
 158 files changed, 9486 insertions(+), 54 deletions(-)
 rename previous-exams/{2021-midterm-solutions => 2021-midterm}/m1.md (95%)
 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
 rename previous-exams/{2021-midterm-solutions => 2021-midterm}/m14.md (95%)
 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
 rename previous-exams/{2021-midterm-solutions => 2021-midterm}/m15.md (95%)
 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
 rename previous-exams/{2021-midterm-solutions => 2021-midterm}/m2.md (95%)
 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
 rename previous-exams/{2021-midterm-solutions => 2021-midterm}/m20.md (95%)
 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
 rename previous-exams/{2021-midterm-solutions => 2021-midterm}/m21.md (95%)
 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
 rename previous-exams/{2021-midterm-solutions => 2021-midterm}/m3.md (94%)
 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
 rename previous-exams/{2021-midterm-solutions => 2021-midterm}/m6.md (97%)
 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
 rename previous-exams/{2021-midterm-solutions => 2021-midterm}/m7.md (97%)
 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-solutions/m1.md b/previous-exams/2021-midterm/m1.md
similarity index 95%
rename from previous-exams/2021-midterm-solutions/m1.md
rename to previous-exams/2021-midterm/m1.md
index 0846974..49f8256 100644
--- a/previous-exams/2021-midterm-solutions/m1.md
+++ b/previous-exams/2021-midterm/m1.md
@@ -1,9 +1,3 @@
-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)
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..e01bbb513ff0587ef7115a1037909157c65ef0fb
GIT binary patch
literal 33278
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
R$j89PFpq_S!K)U;0|2LMJ3jyb

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..fb7dbe0
--- /dev/null
+++ b/previous-exams/2021-midterm/m1/project/plugins.sbt
@@ -0,0 +1,3 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.8")
+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..8eaea55
--- /dev/null
+++ b/previous-exams/2021-midterm/m1/src/main/scala/m1/M1.scala
@@ -0,0 +1,90 @@
+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)
+    // TASK 1:  Add missing parallelization in `upsweep` and `downsweep`.
+    //          You should use the `parallel` method.
+    //          You should use the sequential version if the number of elements is lower than THRESHOLD.
+    // TASK 2a: Pass `arr` to `upsweep` and `downsweep` instead of `tmp`.
+    //          You will need to change some signatures and update the code appropriately.
+    //          Remove the definition of `tmp`
+    // TASK 2b: Change the type of the array `out` from `Frac` to `Double`
+    //          You will need to change some signatures and update the code appropriately.
+    //          Remove the call `.map(frac => frac.toDouble)`.
+    // TASK 3:  Remove the call to `.tail`.
+    //          Update the update the code appropriately.
+
+    val tmp: Arr[Frac] = arr.map(x => Frac(x, 1))
+    val out: Arr[Frac] = Arr.ofLength(arr.length + 1)
+    val tree = upsweep(tmp, 0, arr.length)
+    downsweep(tmp, Frac(0, 0), tree, out)
+    out(0) = Frac(0, 0)
+    out.map(frac => frac.toDouble).tail
+
+    // IDEAL SOLUTION
+    // val out = Arr.ofLength(arr.length)
+    // val tree = upsweep(arr, 0, arr.length)
+    // downsweep(arr, Frac(0, 0), tree, out)
+    // out
+  }
+
+  def scanOp(acc: Frac, x: Frac) = // No need to modify this method
+    Frac(acc.numerator + x.numerator, acc.denominator + x.denominator)
+
+  def upsweep(input: Arr[Frac], from: Int, to: Int): TreeRes = {
+    if (to - from < 2)
+      Leaf(from, to, reduceSequential(input, from + 1, to, input(from)))
+    else {
+      val mid = from + (to - from) / 2
+      val (tL, tR) = (
+        upsweep(input, from, mid),
+        upsweep(input, mid, to)
+      )
+      Node(tL, scanOp(tL.res, tR.res), tR)
+    }
+  }
+
+  def downsweep(input: Arr[Frac], a0: Frac, tree: TreeRes, output: Arr[Frac]): Unit = {
+    tree match {
+      case Node(left, _, right) =>
+        (
+          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[Frac], from: Int, to: Int, a0: Frac, output: Arr[Frac]): Unit = {
+    if (from < to) {
+      var i = from
+      var a = a0
+      while (i < to) {
+        a = scanOp(a, input(i))
+        i = i + 1
+        output(i) = a
+      }
+    }
+  }
+
+  def reduceSequential(input: Arr[Frac], from: Int, to: Int, a0: Frac): Frac = {
+    var a = a0
+    var i = from
+    while (i < to) {
+      a = scanOp(a, input(i))
+      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-solutions/m14.md b/previous-exams/2021-midterm/m14.md
similarity index 95%
rename from previous-exams/2021-midterm-solutions/m14.md
rename to previous-exams/2021-midterm/m14.md
index 62f775d..7b0deeb 100644
--- a/previous-exams/2021-midterm-solutions/m14.md
+++ b/previous-exams/2021-midterm/m14.md
@@ -1,9 +1,3 @@
-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)
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..9c8d6fdaac52512ffcac6882f5650c7673caa5f4
GIT binary patch
literal 119782
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
QBg1+z1_s5wj0_A60PV<FSpWb4

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..fb7dbe0
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/project/plugins.sbt
@@ -0,0 +1,3 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.8")
+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..18229eb
--- /dev/null
+++ b/previous-exams/2021-midterm/m14/src/main/scala/m14/M14.scala
@@ -0,0 +1,62 @@
+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) {
+            ???
+          }
+        } 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 =
+      ???
+
+    /** 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 =
+      ???
+
+    /**
+     * Retrieves and removes the head of this queue, waiting if necessary
+     * until an element becomes available (blocking).
+     * This queue operates in a last in, first out order.
+     */
+    def take(): T =
+      ???
+  }
+}
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-solutions/m15.md b/previous-exams/2021-midterm/m15.md
similarity index 95%
rename from previous-exams/2021-midterm-solutions/m15.md
rename to previous-exams/2021-midterm/m15.md
index 781e05a..dd45097 100644
--- a/previous-exams/2021-midterm-solutions/m15.md
+++ b/previous-exams/2021-midterm/m15.md
@@ -1,9 +1,3 @@
-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)
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..be10881c427c928b9cb66f040d9bc864841c1499
GIT binary patch
literal 126107
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
Z{%2(aB?U(YM~3xc3=G$<GBPkQ007(eXF&h}

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..fb7dbe0
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/project/plugins.sbt
@@ -0,0 +1,3 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.8")
+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..00a4aed
--- /dev/null
+++ b/previous-exams/2021-midterm/m15/src/main/scala/m15/M15.scala
@@ -0,0 +1,65 @@
+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) {
+            ???
+          }
+        } 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 =
+      ???
+
+    /** 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 =
+      ???
+
+    /**
+     * 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 =
+      // Hint: The .last/.init methods on List are dual of .head/.head,
+      // they can be used to retrive the last element and the initial part of
+      // the list without its last element.
+      ???
+  }
+}
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-solutions/m2.md b/previous-exams/2021-midterm/m2.md
similarity index 95%
rename from previous-exams/2021-midterm-solutions/m2.md
rename to previous-exams/2021-midterm/m2.md
index 47b0976..fb3fdb6 100644
--- a/previous-exams/2021-midterm-solutions/m2.md
+++ b/previous-exams/2021-midterm/m2.md
@@ -1,9 +1,3 @@
-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)
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..0378ba0b46a3d1a19bbb73a2dbdf4c9b77b8cb83
GIT binary patch
literal 34628
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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..fb7dbe0
--- /dev/null
+++ b/previous-exams/2021-midterm/m2/project/plugins.sbt
@@ -0,0 +1,3 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.8")
+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..0fcaa85
--- /dev/null
+++ b/previous-exams/2021-midterm/m2/src/main/scala/m2/M2.scala
@@ -0,0 +1,89 @@
+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)
+    // TASK 1:  Add missing parallelization in `upsweep` and `downsweep`.
+    //          You should use the `parallel` method.
+    //          You should use the sequential version if the number of elements is lower than THRESHOLD.
+    // TASK 2a: Pass `arr` to `upsweep` and `downsweep` instead of `tmp`.
+    //          You will need to change some signatures and update the code appropriately.
+    //          Remove the definition of `tmp`
+    // TASK 2b: Change the type of the array `out` from `Root` to `Double`
+    //          You will need to change some signatures and update the code appropriately.
+    //          Remove the call `.map(root => root.toDouble)`.
+    // TASK 3:  Remove the call to `.tail`.
+    //          Update the update the code appropriately.
+
+    val tmp: Arr[Root] = arr.map(x => Root(x, 1))
+    val out: Arr[Root] = Arr.ofLength(arr.length + 1)
+    val tree = upsweep(tmp, 0, arr.length)
+    downsweep(tmp, Root(1, 0), tree, out)
+    out(0) = Root(1, 0)
+    out.map(root => root.toDouble).tail
+
+    // IDEAL SOLUTION
+    // val out = Arr.ofLength(arr.length)
+    // val tree = upsweep(arr, 0, arr.length)
+    // downsweep(arr, Root(1, 0), tree, out)
+    // out
+  }
+
+  def scanOp(acc: Root, x: Root) = // No need to modify this method
+    Root(acc.radicand * x.radicand, acc.degree + x.degree)
+
+  def upsweep(input: Arr[Root], from: Int, to: Int): TreeRes = {
+    if (to - from < 2)
+      Leaf(from, to, reduceSequential(input, from + 1, to, input(from)))
+    else {
+      val mid = from + (to - from) / 2
+      val (tL, tR) = (
+        upsweep(input, from, mid),
+        upsweep(input, mid, to)
+      )
+      Node(tL, scanOp(tL.res, tR.res), tR)
+    }
+  }
+
+  def downsweep(input: Arr[Root], a0: Root, tree: TreeRes, output: Arr[Root]): Unit = {
+    tree match {
+      case Node(left, _, right) =>
+        (
+          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[Root], from: Int, to: Int, a0: Root, output: Arr[Root]): Unit = {
+    if (from < to) {
+      var i = from
+      var a = a0
+      while (i < to) {
+        a = scanOp(a, input(i))
+        i = i + 1
+        output(i) = a
+      }
+    }
+  }
+
+  def reduceSequential(input: Arr[Root], from: Int, to: Int, a0: Root): Root = {
+    var a = a0
+    var i = from
+    while (i < to) {
+      a = scanOp(a, input(i))
+      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-solutions/m20.md b/previous-exams/2021-midterm/m20.md
similarity index 95%
rename from previous-exams/2021-midterm-solutions/m20.md
rename to previous-exams/2021-midterm/m20.md
index 59f6c09..78f1d3f 100644
--- a/previous-exams/2021-midterm-solutions/m20.md
+++ b/previous-exams/2021-midterm/m20.md
@@ -1,9 +1,3 @@
-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)
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..89112fdcd241e77ac54effcbaeb3c631caf37fa0
GIT binary patch
literal 131656
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%0A0pDf_4Z~pgvZ~Q_^u?tEHI=h{eX~rtp0}O
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
Bto#4~

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..fb7dbe0
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/project/plugins.sbt
@@ -0,0 +1,3 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.8")
+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..7bb3a65
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/src/main/scala/m20/MultiWriterSeqCount.scala
@@ -0,0 +1,46 @@
+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`.
+   */
+  final def write(newX: Int, newY: Int): Unit = ???
+
+  /** 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`.
+   */
+  final def copy(): (Int, Int) =
+    // You should be able to just copy-paste the implementation of `copy` you
+    // wrote in `SeqCount` here.
+    ???
+
+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..3003be4
--- /dev/null
+++ b/previous-exams/2021-midterm/m20/src/main/scala/m20/SeqCount.scala
@@ -0,0 +1,42 @@
+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`.
+   */
+  final def copy(): (Int, Int) = ???
+
+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-solutions/m21.md b/previous-exams/2021-midterm/m21.md
similarity index 95%
rename from previous-exams/2021-midterm-solutions/m21.md
rename to previous-exams/2021-midterm/m21.md
index fb11db8..82736a2 100644
--- a/previous-exams/2021-midterm-solutions/m21.md
+++ b/previous-exams/2021-midterm/m21.md
@@ -1,9 +1,3 @@
-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)
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..a8c37ec97d20d360071bd45af4e344e62720698f
GIT binary patch
literal 131651
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

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..fb7dbe0
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/project/plugins.sbt
@@ -0,0 +1,3 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.8")
+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..bec3921
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/src/main/scala/m21/MultiWriterSeqCount.scala
@@ -0,0 +1,46 @@
+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`.
+   */
+  final def write(newX: Int, newY: Int): Unit = ???
+
+  /** 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`.
+   */
+  final def copy(): (Int, Int) =
+    // You should be able to just copy-paste the implementation of `copy` you
+    // wrote in `SeqCount` here.
+    ???
+
+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..f7a5051
--- /dev/null
+++ b/previous-exams/2021-midterm/m21/src/main/scala/m21/SeqCount.scala
@@ -0,0 +1,42 @@
+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`.
+   */
+  final def copy(): (Int, Int) = ???
+
+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-solutions/m3.md b/previous-exams/2021-midterm/m3.md
similarity index 94%
rename from previous-exams/2021-midterm-solutions/m3.md
rename to previous-exams/2021-midterm/m3.md
index ee3969e..88365dc 100644
--- a/previous-exams/2021-midterm-solutions/m3.md
+++ b/previous-exams/2021-midterm/m3.md
@@ -1,9 +1,3 @@
-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)
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..01481c432fa1fc85da0c4c660daebb5f6fffd40d
GIT binary patch
literal 34419
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
JhNF!j9smkL1K$7u

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..fb7dbe0
--- /dev/null
+++ b/previous-exams/2021-midterm/m3/project/plugins.sbt
@@ -0,0 +1,3 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.8")
+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..c9b722d
--- /dev/null
+++ b/previous-exams/2021-midterm/m3/src/main/scala/m3/M3.scala
@@ -0,0 +1,89 @@
+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)/3)`
+   */
+  def rollingWinMeanParallel(arr: Arr[Int]): Arr[Double] = {
+    if (arr.length == 0) return Arr.ofLength(0)
+    // TASK 1:  Add missing parallelization in `upsweep` and `downsweep`.
+    //          You should use the `parallel` method.
+    //          You should use the sequential version if the number of elements is lower than THRESHOLD.
+    // TASK 2a: Pass `arr` to `upsweep` and `downsweep` instead of `tmp`.
+    //          You will need to change some signatures and update the code appropriately.
+    //          Remove the definition of `tmp`
+    // TASK 2b: Change the type of the array `out` from `AvgWin` to `Double`
+    //          You will need to change some signatures and update the code appropriately.
+    //          Remove the call `.map(root => root.toDouble)`.
+    // TASK 3:  Remove the call to `.tail`.
+    //          Update the update the code appropriately.
+
+    val tmp: Arr[AvgWin] = arr.map(x => AvgWin(x :: Nil))
+    val out: Arr[AvgWin] = Arr.ofLength(arr.length + 1)
+    val tree = upsweep(tmp, 0, arr.length)
+    downsweep(tmp, AvgWin(Nil), tree, out)
+    out(0) = AvgWin(Nil)
+    out.map(root => root.toDouble).tail
+
+    // IDEAL SOLUTION
+    // val out = Arr.ofLength(arr.length)
+    // val tree = upsweep(arr, 0, arr.length)
+    // downsweep(arr, AvgWin(Nil), tree, out)
+    // out
+  }
+
+  def scanOp(acc: AvgWin, x: AvgWin) = // No need to modify this method
+    acc.pushAll(x)
+
+  def upsweep(input: Arr[AvgWin], from: Int, to: Int): TreeRes = {
+    if (to - from < 2)
+      Leaf(from, to, reduceSequential(input, from + 1, to, input(from)))
+    else {
+      val mid = from + (to - from) / 2
+      val (tL, tR) = (
+        upsweep(input, from, mid),
+        upsweep(input, mid, to)
+      )
+      Node(tL, scanOp(tL.res, tR.res), tR)
+    }
+  }
+
+  def downsweep(input: Arr[AvgWin], a0: AvgWin, tree: TreeRes, output: Arr[AvgWin]): Unit = {
+    tree match {
+      case Node(left, _, right) =>
+        (
+          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[AvgWin], from: Int, to: Int, a0: AvgWin, output: Arr[AvgWin]): Unit = {
+    if (from < to) {
+      var i = from
+      var a = a0
+      while (i < to) {
+        a = scanOp(a, input(i))
+        i = i + 1
+        output(i) = a
+      }
+    }
+  }
+
+  def reduceSequential(input: Arr[AvgWin], from: Int, to: Int, a0: AvgWin): AvgWin = {
+    var a = a0
+    var i = from
+    while (i < to) {
+      a = scanOp(a, input(i))
+      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-solutions/m6.md b/previous-exams/2021-midterm/m6.md
similarity index 97%
rename from previous-exams/2021-midterm-solutions/m6.md
rename to previous-exams/2021-midterm/m6.md
index f0eb449..6280bbb 100644
--- a/previous-exams/2021-midterm-solutions/m6.md
+++ b/previous-exams/2021-midterm/m6.md
@@ -1,9 +1,3 @@
-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)
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..cdd54531b11cad5a6a0cb6060a4495ca86da20c0
GIT binary patch
literal 35236
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

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..fb7dbe0
--- /dev/null
+++ b/previous-exams/2021-midterm/m6/project/plugins.sbt
@@ -0,0 +1,3 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.8")
+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..4e54913
--- /dev/null
+++ b/previous-exams/2021-midterm/m6/src/main/scala/m6/M6.scala
@@ -0,0 +1,69 @@
+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 {
+      ???
+    }
+
+    // Computes every other Integer element of data array, starting from the second, up to the middle
+    def task2(data: Array[Int]): ForkJoinTask[Unit] = task {
+      ???
+    }
+
+    // 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 {
+      ???
+    }
+
+    // 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 = {
+      ???
+    }
+
+    def result(): Array[Int] = {
+      val data = new Array[Int](cnt)
+
+      ???
+
+      data
+    }
+
+    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-solutions/m7.md b/previous-exams/2021-midterm/m7.md
similarity index 97%
rename from previous-exams/2021-midterm-solutions/m7.md
rename to previous-exams/2021-midterm/m7.md
index 899703e..45a74f0 100644
--- a/previous-exams/2021-midterm-solutions/m7.md
+++ b/previous-exams/2021-midterm/m7.md
@@ -1,9 +1,3 @@
-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)
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..4260440385397b26a3f9b531aac5592925d392b3
GIT binary patch
literal 35238
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
K1H-&l5Dx&6xu@d*

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..fb7dbe0
--- /dev/null
+++ b/previous-exams/2021-midterm/m7/project/plugins.sbt
@@ -0,0 +1,3 @@
+// addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.28")
+addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.8")
+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..20afd03
--- /dev/null
+++ b/previous-exams/2021-midterm/m7/src/main/scala/m7/M7.scala
@@ -0,0 +1,69 @@
+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 {
+      ???
+    }
+
+    // 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 {
+      ???
+    }
+
+    // Computes every other Integer element of data array, starting from the last, up to the middle
+    def task3(data: Array[Int]): ForkJoinTask[Unit] = 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]): Unit = {
+      ???
+    }
+
+    def result(): Array[Int] = {
+      val data = new Array[Int](cnt)
+
+      ???
+
+      data
+    }
+
+    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