Last updated on
Computer exams logistics
All exam labs will take place on Wednesdays 16:15-19:00 in BC 07-08. During exam labs, these rooms will not be available for help sessions.
The final exam of CS-214 Software Construction will be announced later.
You have been assigned to a Moodle group corresponding to your exam-lab week (if not, please send us an Ed message).
We will post room and seat assignments on Moodle ahead of each exam (exam-lab, midterm, or final). Feel free to consult the seating plan of your assigned room ahead of time.
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 exam days.
Pre-exam checklist
- Bring your laptop and its charger.
- Bring your two-factor authentication device.
- Make sure you know your Gaspar password and your email password (they may be different). Do not change them within 24 hours of the exam.
- Bring your own USB-A keyboard or mouse if you need them (the rooms have QWERTZ keyboards).
- Bring your camipro and writing supplies.
Bring your laptop
We will use personal laptops as a backup if VDI malfunctions.
- Before coming: Make sure that your laptop is fully charged, check that Scala and VSCode work, and disable all forbidden tools (no AI assistants, no additional plugins, etc.).
- Leave your laptop in your bag, turned off, unless we explicitly ask you to use it.
Bring your two-factor authentication device if you have one
Moodle may require two-factor authentication, so bring your mobile phone or any other device you use for that purpose. You are not allowed to use your devices outside of the initial VM login phase of the exam.
Make sure you know your Gaspar and email passwords
You can write them on a piece of paper (you will not have access to your password manager). Do not change your passwords 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:
- Note that you can only change the keyboard layout after logging in, i.e., you need to type your username and password in the QWERTZ layout.
- Make sure that the keyboard or mouse work ahead of time.
- Make sure your equipment is quiet: no mechanical keyboards, no loud keyboards, no loud clicky mice, no bright lights, etc.
You may bring passive (non-powered) ear protection such as earplugs (but make sure that you can still hear announcements!).
Exam Protocol
Format
Exam labs will follow the usual format of labs.
The final exam will consist of 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: Java, Scala, SBT, Coursier, VSCode, VSCode plugin: Scala (Metals), VSCode plugin: Scala Syntax (Official).
You are only allowed to use the following resources during the exam:
- Websites:
- Our Moodle site
- Our course website, which contains the Scala documentation.
- Documents: course materials, labs, and exercises, but only those that are found on the CS214 Moodle site or on our website.
- Applications: browser, terminal, and the tools provided for coding.
You may not bring additional documents (no printed, handwritten, or electronic materials), except for a piece of paper with your passwords if needed.
Timeline
Doors will open 5 minutes before the beginning of the exam. Computer exams have four phases:
- Setup (~15 minutes)
- Reading (30 minutes)
- Programming (2h30 for final exam, 2h for exam-labs)
- Final submission (5 minutes)
We may have to start late if any room runs into difficulties.
Setup
-
Find your seat by locating the sheet of paper bearing your name, Sciper, and assigned VM.
-
Select the VM indicated on your sheet (
cs-214-exam-vc1
orcs-214-exam-vc2
) -
Log in using your Gaspar ID (⚠️ not your email address) and password, using the the machine’s QWERTZ keyboard.
Do not try to log into VDI using your email address: use your Gaspar ID. This is critical: if you do, we’ll have to force-disconnect you, which can take more than 10 minutes.
You can only change the keyboard layout after logging in, i.e., you need to type your username and password in the QWERTZ (Swiss) layout.
After you change the keyboard layout, the VDI login screen will use the updated keyboard layout.
There is no “view password” button in the VDI login screen. If you are really not sure about what you have typed, you can type your password in the username field where you can see, then cut and paste it into the password field.
-
Plug in your keyboard if you brought one, and configure the keyboard layout.
-
Mute your computer: Hover your mouse on the bottom-right corner of your screen to trigger the VDI menu. Click the sound icon and set the volume to zero.
-
Open Firefox, the course website, and Moodle:
-
Browse to https://cs-214.epfl.ch and click “Computer exams logistics” to open this page.
-
Browse to https://moodle.epfl.ch, log in using email address (⚠️ not your Gaspar) and password, and navigate to right section.
Do not try to log into Moodle using your Gaspar ID: use your email address. Yes, it’s the reverse of VDI. No, we can’t do anything about it :’(
-
-
Put your two-factor authentication token away in your bag, at the back of the room.
-
Wait for permission to start the exam.
Reading
Once everyone is ready to start, an assistant will give you permission to start, and the handout link will become available on Moodle (you will need to refresh the page). You have 30 minutes to read through the entire exam without coding. You may take notes on paper.
Programming
After 30 minutes, a link to code scaffolds will become available on Moodle. Each exam lab or exercise will be provided as a separate Git bundle. To work on an assignment (exercises or mini-labs during the final, exam-labs otherwise):
-
Download the corresponding bundle from Moodle into
~/Downloads/
and clone it:- Open the terminal.
- Navigate to the
Downloads
folder, e.g.cd ~/Downloads/
. - Clone the repository, e.g.
git clone assignment.bundle
(replaceassignment
with the right name).
-
Start working on the exercise.
-
Open the newly cloned directory in VSCode. You can use the following command to do so:
code ~/Downloads/assignment/
Do NOT open the
Downloads/
directory directly in VSCode, otherwise Metals and worksheets will not work properly. -
Let Metals import the original assignment before you start coding and changing the files.
-
When you open the
~/Downloads/assignment/
in VSCode for the first time, Metals will show a pop-up window:Click “Import build”.
-
If there is no pop-up window after 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 assignment, run
sbt test
under the directory~/Downloads/assignment/
. -
It’s OK to create new files and directories under
Downloads/
. Make sure all your files are underDownloads/
. -
Auto-save is enabled.
How to disable auto-save in VSCode
You disable 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.
-
-
Submit your solution via Moodle.
You will submit your solutions through Moodle, like you did for labs during the semester. Each assignment will be separate on Moodle.
Typing
moodle epfl
on the Firefox address bar will not work, as it attempts to make a Google search formoodle epfl
but you do not have internet access.Instead, you can type the full url: https://moodle.epfl.ch.
- Make sure to run tests locally on your machine with
sbt test
before submitting. - Submit your solutions as soon as possible for each question.
- 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.
- Make sure to run tests locally on your machine with
Last chance to submit
Do not wait until the end of the exam to submit all assignments at once. At the end of the exam, we will give you five minutes for one last chance to submit your solutions. Note that the automatic grader can take time when everyone submits together, so you may not see its output for that last submission.
After the last five-minutes submission window, stop using the computer and log out to close your session. Make sure to submit your work before that.
Use the log out menu option to close your session:

Any code not submitted to Moodle during exam-labs will be lost. Except for unforeseen circumstances, code not submitted to Moodle during the final will not be graded either.
Exam length
We have designed the final exam and exam labs 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
- Be strategic: skim through all problems and start with the ones you’re most comfortable with.
- Don’t waste time: some tests are harder than others (in some cases, we have even indicated that in the exam.)
- Go deep: reading and understanding a problem takes time, so doing just the first few questions of each problem may not pay off. It’s often better to invest in a few problems than to do a small bit of every problem.
- Use the tests: We will give you all tests: use them for debugging.
Training for exam-labs and for the final
-
Training VMs will be available at most times on https://vdi.epfl.ch/. You may use either
cs-214-vc1
orcs-214-vc2
. We make no guarantees about data persistence or availability. -
Exam VMs (
cs-214-exam-vc1
andcs-214-exam-vc2
) will be available for everyone every Wednesday during exam lab hours. Use them! It’s completely OK to start the lab on these VMs, save your work to Moodle, and resume from home later, even if you are not scheduled for an exam-lab that week! -
Exam VMs may not be used outside of exam hours. They will be monitored and regularly wiped and reset.
No cheating!
-
No internet access, no coding AIs, no inside or outside help, no circumventing tests (no asInstanceOf, no hardcoding, …), no heliographs. This list is not exhaustive. Check the allowed materials in the environment section above.
-
Do not attempt to bypass the restrictions (you may only access course materials, labs, exercises, and debriefs during the exam). We have lots of current and former EPFL students on staff — we know the tricks, including stealth uploads to Moodle or VDI. This will be treated as a cheating attempt.
-
Do not use the exam VMs outside of exam hours (use the training VMs instead).
-
All tests will be provided (there are no secret tests), but: do not hardcode non-trivial cases! We will review solutions, and solutions that pass exactly the provided tests but nothing else will be rejected (and treated as a cheating attempt).
This is OK:
def fact(n: Int): Int = if n == 0 then 1 else n * fact(n-1)
This is NOT OK:
def fact(n: Int): Int = n match case 0 => 1 case 6 => 120 case 12 => 479001600
-
We know about Moodle chat. It will be turned off during the final (and all activity will be logged anyway). Nice try.
Seriously: don’t cheat.
Troubleshooting
If you delete ~/.sbt
or other session files
Speak to an assistant. Beware: recovering in that case will take at least 15 minutes.
If type information is missing or auto-complete does not work
It means Metals is not working properly. See our troubleshooting guide.
If you use the test debugger but it does not stop at breakpoints
You’re on your own: we do not provide support for VSCode’s debugger.
If your mouse moves too slowly/fast
Hover your mouse on the bottom-right corner of your screen to trigger the VDI menu. Click “Settings” on the VDI menu and adjust your cursor speed.
Adjusting your cursor speed using the Ubuntu settings will NOT have any effect: use the VDI setting.
If the screen is too bright/dim
Press the buttons of your monitor to adjust screen brightness. It depends on the monitor model of your room.
If the screen brightness option is locked, try to unlock it by pressing the on/off button of your monitor for 10 seconds.