Last updated on
Midterm study guide
Administrivia
Taken from the policies page:
The midterm will take place on Wed, Nov 6, from 16:15 to 18:15.
We will post seating plans and the complete instructions (also printed on the front of the midterm booklet) in week 7. The midterm will be a pen-and-paper exam with a mix of multiple-choice and free-response questions. You will not be allowed to use any notes, electronic devices, cheatsheets, or other resources.
The midterm will count for 30% of your overall grade for the course. If you have a doctor’s note, you will be excused from the midterm, in accordance with EPFL rules (en, fr).
Midterm contents
- The midterm format is most similar to that of exercises: you will mainly be asked to understand, write, and debug small programs and proofs.
- Everything that was covered in weeks 1–6 is on topic, both in SE and in FP (including lectures, labs, exercises, and debriefs).
- Broadly speaking, the midterm is intended to test understanding and ability, not encyclopedic knowledge: we won’t quiz you on the options that you can pass
git
on the command line. However, we do expect you to understand the subtleties of Scala that we explored in class and in exercises.
Study guide
Doing exercises on paper is the best way to prepare. Here is a suggested strategy to choose topics to focus on and review corresponding materials:
-
Go through the syllabus. Each week has a list of learning objectives, important topics, Scala syntax and APIs (with links): highlight the ones that you feel less comfortable with.
-
Go through all the exercise sets sequentially in the order they were released, spending more time on:
- the topics you feel less comfortable with;
- the ⭐️ exercises, which are the most important ones.
-
When a ⭐️ exercise gives you trouble, look at immediately preceding exercises (including unstarred ones): we have done our best to structure things so that earlier exercises build up to later ones.
-
For topics that give you persistent trouble, consider re-watching the corresponding segments (usually 7–15 minutes) from the lecture recordings.
-
Once you are comfortable with ⭐️ exercises, try a few of the 🔥 exercises. The difficulty annotations are based on the time the exercise was released, so 🔥 exercises that seemed daunting earlier this semester may now feel much more approachable.
Finally, you can practice with midterm materials from last year (the first edition of CS-214). It may be helpful to practice “under exam conditions” (timed, on paper, without interruptions or external resources). Beware that these exams had no software-engineering questions.
- 2023 exam and solution
- 2023 mock exam and solution
- 2023 makeup exam and solution
For even more training materials, look at old midterms from the now-discontinued course CS-210 Functional Programming. (Of course, not all content is relevant anymore, but the FP parts are similar.)
Additional tips:
-
It’s OK to look at solutions while studying, but it’s best if you do this only once you’re fairly confident that you know how to solve the problem (and ideally, after you’ve written down your solution). Simply reading our solution doesn’t work nearly as well.
-
If you are pressed for time and can’t afford to review all ⭐️ exercises, then it’s OK to focus on the “most important exercises” listed in the syllabus, but beware that you may miss things. If you don’t even have time for that, then starting straight from last year’s midterms is better than nothing, but beware the caveats above.
-
Studying in teams is an excellent idea. We recommend splitting exercises or topics among students: for example, if student A studies recursion while student B looks at polymorphism, then student A can quiz student B on recursion, and vice versa (thus accelerating each other’s studies).
-
Working on your unguided callback is a great way to practice. We encourage you to pick one of the labs that you had the most trouble with: the training you’ll get on the corresponding topics will be helpful for the midterm.
Finally: do not hesitate to ask on Ed or in person if you have any questions, or if you feel that additional exercises would help you prepare on a specific topic.
Bon courage!