Labs Setup

This page contains instructions on how to set up your computer such that you can:

  • program your lab assignments,
  • submit your labs for grading, and
  • use our black-box testing system.

Step 0) Version Control

While we do not require you to maintain your work using a version control system (VCS) such as Git, we highly recommend that you do! Using a VCS will allow you to effortlessly track changes in your source code, which is very useful when dealing with a code base that evolves across many iterations (as you will in this course). In particular, it will help you revert to an older version of a file so that you can identify problems that might have been introduced along the way. Version control is particularly useful when collaborating with others as you might in the final programming assignment.

Step 1) Project Web Interface

We will use EPFL's Courseware website for the submission and automated testing of the lab assignments. From this interface you can run tests, submit deliverables and receive feedback.

You can find the EPFL CourseWare site for CS-320 at

All labs will be done individually with the possible exception of the last one.

Step 2) Installing sbt

Make sure your system is running at least Java 8 before starting.

sbt is the default build tool for Scala. You can download it here.

Step 3) Working on assignments

Once you have installed sbt, you are ready to start the labs. The workflow for each assignment is roughly as follows:

  • Download our assignment skeleton from the Courseware website. For the first and the second lab, unpack the archive to a new folder and ideally set up version control. For all subsequent labs the corresponding skeleton will contain new files that you should add to your existing project.
  • Run compile from inside sbt to make sure your build still succeeds. If you run test at this point it should fail (and would only test a few simple cases provided by us anyways).
  • Implement the assignment according to the specification. Throughout the semester we will be providing you with details on each specific assignment.
  • Once your implementation is ready, package your submission by running packageSubmission in sbt. This will generate an archive called which you can upload on the Courseware website.
  • The website will provide you with the outcome of some automated tests that are run on your submission. You can use this information to get an idea of whether your implementation is correct. Note that we will also manually inspect your solutions, so a full score on these tests does not imply that your solution is perfect.