Last updated on

Final exam study guide

Hi all,

Congrats again on completing a full semester of CS-214 — you’ve all gone a long way! Now the last step is the final exam. This post is to help you prepare: a reminder on the shape the exam will take and what topics it will cover, some tips on how to study, and some additional materials.

But first: EPFL’s in-depth evaluation for CS-214 has recently opened (this is later than other courses to not overlap with our internal polls). It’s available on the overall Moodle homepage after logging in (but before opening the CS-214 page) and in the EPFL app. These evaluations are critical for next year’s students, so… please submit your in-depth evaluation!.

Exam contents

The final lasts three hours, on a computer. It consists of a collection of problems similar to the ones we’ve solved in exercises and labs throughout the semester. The exam will be slightly longer than most people can complete in 3h — this way if there’s something you don’t know how to do, you can still get a good grade.

You will have access to Scala documentation, the lecture notes, the exercises and their solutions, the labs and your own solutions to them, and any other materials we’ve uploaded to the CS214 Moodle page or posted on the course website. Other materials are banned; they will be either blocked or monitored. You may not upload additional materials to Moodle in preparation for the exam.

Everything that we’ve seen in starred exercises, in lecture, or in labs is on-topic for the final. This includes topics covered in the second half of the course, such as futures, contextual implicits, monads, etc. There are two exceptions:

How to prepare

Revisit course materials

The best way to prepare is to revisit the materials that we’ve already given you:

The syllabus is now complete, so I recommend going through it week by week, and checking off all the concepts, topics, and exercises, for every week. I mean this literally: print it out, and highlight or check off everything, page by page.

Know your tools

In addition: make sure to know your tools. All of you have experienced that advanced tools like the IDE (VScode / Metals) and worksheets can be brittle: we won’t be able to help you on the day of the exam if they crash, and it shouldn’t matter to you. You must be able to fix these issues yourself, and to work with only SBT if needed. “Metals/VSCode didn’t work” will not be a valid reason to get your grade re-evaluated. Familiarize yourself with the troubleshooting guide and the computer-exam logistics now, if you haven’t yet.

Additional materials and previous exams

Once you’re done studying, we suggest exploring the following materials.

Start with this additional callback, focused on laziness:

Then study previous-year exams. We recommend attempting them in real exam conditions: set enough time aside, and work on them in one go:

We recommend that you attempt all of these without advanced IDE features: use only SBT. Turn off Metals, don’t use worksheets, don’t rely on auto-completion, and disable in-editor error highlighting. This will force you to make sure that you are not thrown off if you encounter IDE or worksheet issues during the final.

Beyond these, you could consider reading the scaffold code that we provided in labs (for example the implementation of the webapp library!), doing practice problems on engineering interview websites, exploring some of the many suggested unguided callbacks, and even extending your own webapp!

Final exam solutions

Do not read a problem’s solution before solving (not just attempting!) that problem. Reading a solution provides very little value if you haven’t come up with your own solution first. If you’re stuck on a problem, either redo relevant exercises, or ask for a tip on Ed.

I understand, I'm just here to check my solutions

Really?

Really.

Great! And did you submit the in-depth evaluation poll?

Yes!

Really?

Really!

Thanks! Here are the exam solutions.

Conclusion

Good luck with your studies, and with your other exams! Please remember to fill in our course poll