Last updated on

Final Exam Announcement

The final exam of CS-214 Software Construction will take place on Jan 30 (Thu), 08:15 - 11:15, in BC 07, BC 08, BCH 1113, CM 1110, CM 1111, CM 1112, CO 020, CO 021, CO 023, CO 260, MXF 014 and SG 0217. Please be ready in front of the rooms at 8:00AM.

You can find your assigned seat in the seat assignment chart. You can also find the seating plans of each room at the course website.

Some rooms have numbers on monitors or at the base of the computers. These are not your seat numbers. Please find your seat according to the seating plans.

A printed seating plan will be posted on the door of each room on the exam day.

Pre-exam checklist

Bring your laptop.

We will use personal laptops as a backup if VDI malfunctions.

Bring your two-factor authentication device if you have one.

VDI should not require your two-factor authentication code, but just to be sure, bring your mobile phone or any other device you use for that purpose. You are not allowed to use your devices unless we explicitly ask you to.

Make sure you know your Gaspar password.

You can write it on a piece of paper (you will not have access to your password manager). Do not change your password less than 24 hours before the exam.

Bring your own keyboard or mouse if you need them.

You may bring a keyboard and mouse to the final if you do not like the QWERTZ (Swiss layout) keyboards that are already in the rooms, but:

You may bring passive (non powered) ear protection such as earplugs (but make sure that you can still hear announcements!).

Exam Protocol

Format

The final exam will consist of multiple exercise sets and mini-labs, similar to the exercises and labs that you solved during the semester. Each exercise set or mini-lab will be submitted separately on Moodle. Each exercise set or mini-lab will be worth a number of points indicated in the corresponding writeup.

You must use Scala to complete the exam. Any Scala constructs are permitted.

Environment

You will have access to a physical computer provided by EPFL running a locked-down virtual desktop instance (a virtual machine), with the following software installed (version numbers may change slightly):

SoftwareVersion
Java17
Scala3.5.0
SBT1.10.1
Coursier2.1.18
VSCode1.95.3
VSCode plugin: Scala (Metals)
VSCode plugin: Scala Syntax (Official)

You are only allowed to use the following resources during the exam:

You may not bring additional documents (no printed, handwritten, or electronic materials), except for a piece of paper with your Gaspar password if needed.

Setup

Exam instructions

Instructions and code scaffolds will be provided as a ZIP file named final.zip in your home directory.

  1. Unzip final.zip.

    Do not use the graphical file browser to open the zip and do not open index.html directly from the zip. Instead, use the command line. Otherwise, pages extracted from the zip will not load properly.

    • Open the terminal.
    • Run the command cd (to go to your home directory ~).
    • Run the command unzip final.zip. This will create a final directory.
  2. Open the home page of the exam.

    Run the command firefox final/index.html to open the exam’s home page.

  3. Start working on the exam.

    For each exercise set or mini-lab:

    • The scaffold code will be at final/code/<name>/.

    • The instruction will be at final/instructions/<name>/index.html. You can open the instruction by clicking from the exam’s home page.

    • To work on an exercise set or a mini-lab, open the directory final/code/<name> in VSCode. You can use the following command to do so:

      code ~/final/code/<name>/
      

      Do NOT open the final/ directory directly in VSCode, otherwise Metals and worksheets will not work properly.

    • Let Metals import the original exercise set or mini-lab before you start coding and changing the files.

      • When you open the final/code/<name>/ in the VSCode for the first time, Metals will show a popup window:

        Click “Import build”.

      • If there is no popup window at 30 seconds, you can click the Metals button on the left panel, then click “Import build” in the Metals menu:

      • Wait for Metals to import the build. The import is not yet finished if, on the VSCode bottom-left corner, you can see the build server (bloop or sbt) is still running or Metals is indexing:

        Wait until import is complete to start coding.

    • To run the tests of an exercise set or a mini-lab, run sbt test under the directory final/code/<name>.

      Do not run sbt directly in final/, otherwise sbt test will not work.

    • It’s OK to create new files and directories under final/. Make sure all your files are under final/.

    • Auto-save is not enabled. Save your work often.

      You need to save your code to get the updated Metals information (errors, typing information, etc).

      How to enable auto-save in VSCode

      You enable auto-save in the File menu:

      You can see a tick in front of “Auto Save” when it is enabled.

    • Do not delete any of the pre-created folders and files (~/.sbt, config files, etc). If you do, we will help you restore, but it will take time, you may lose data, and you will not get extra time to compensate.

  4. Submit your solution via Moodle.

    You will submit your solutions through Moodle, like you did for labs during the semester. Each exercise set and mini-lab will be a separate assignment on Moodle.

    Typing moodle epfl on the firefox address bar will not work, as it attempts to make a Google search for moodle epfl but you do not have internet access.

    Instead, you can type the full url moodle.epfl.ch, or click the submission link from the exercise set or mini-lab instruction page.

    • Make sure to run tests locally on your machine with sbt test before submitting.
    • Submit your solutions as soon as possible for each question. Do not wait until the end of the exam to submit all exercise sets and mini-labs at once.
    • In most cases, only your last submission will count: make sure not to submit broken code.
    • You will not be able to submit a new version of a solution until the last submission is graded. We will reopen submissions at the very end of the exam for one last chance to submit if needed.
  5. At the end of the exam, you will have five minutes to submit your solutions one last time. Note the automatic grader can take time when everyone submits together, so you may not see its output for that last submission.

  6. After the last five-minutes submission window, stop using the computer and log out to close your session.

    • At the end of the exam, we will ask everyone to stop using the computer. Make sure to submit your work before that.
    • Except for unforeseen circumstances, code not submitted to Moodle will not be graded.
    • Make sure to use the log out menu option to close your session:

Grading

In almost all cases, your grade will be determined by automatic tests. Just like during the semester:

Exam length

We have designed the final exam to take more than 3 hours to complete in full. This is on purpose, and it is accounted for in grading. We do not expect you to solve all questions.

Tips

No cheating!