Solutions: Final Exam Solution
Scoring cap, time limit, etc
The Final exam is finally here (pardon the pun)... (available 2022-12-09 12:00 UTC). There are 9 exercises worth a total of 18 points with a 13 point cap, so you have to get 13 for 100% (no extra credit, sorry). The time limit is 4 hours. The points, time, and threshold were determined by a data-driven process based on internal testing.
Exercises are independent
The exercises are all independent and can be solved in any order. They are also not ordered in terms of difficulty, so feel free to skip around. The relative difficulty is indicated by the point values - i.e. a 3 point exercise is more complicated to solve than a 1 point exercise.
Demo Cells
Each exercise has a demo cell to help illustrate what the problem is asking for. The demo cells are not a complete test of your solution. It is certainly possible to get the correct response for a simplified demo problem and miss corner cases in the real test. We will not give any credit for solutions that do not pass the test cells as run by the grading script, even if they seem to get the correct result for the demos.
Debugging
If you run a test cell (pass or fail) the last test case will be made available to you in the form of test case variables. See Using Test Case Variables for a short example on how to use them for debugging. You will also see reminders about these helpful variables we have provided above each test cell and in some AssertionError messages. If your code fails to run, you should check the entire traceback to determine which portion of your code is failing to execute. Prints are also quite useful for debugging, just make sure you're using them judiciously or you could run into...
Excessive Printed Output
This exam will run your code multiple times against randomized test cases. Count on any print in your code getting executed at least 20 times (if not more). This means that you should not print entire data inputs, print inside of loops, or leave prints in your submissions. If you run into sluggish behavior on printed outputs see the Vocareum Troubleshooting Guide for the steps to get your notebook back into a workable state.
Troubleshooting
The time limit includes a buffer for dealing with minor platform issues. Anything that is resolved by following the steps listed in the Proctoring Troubleshooting or Vocareum Troubleshooting guides does not warrant any accommodation. Take the time to familiarize yourself with those procedures prior to starting the exam as they may be useful in the future. If you are facing platform related difficulties beyond what's covered in the guides (or you need help getting through them) please make a private Piazza post to the instructors with the details of your issue and we will help resolve it.
Potential Bugs
We take bugs in the exams very seriously. As such we will investigate all reported bugs. However, the overwhelming majority (>99.9%) of reported bugs are issues with student solution code. If you think you have found one please follow the steps listed in the Exam Rules and Policies to report it. Please keep moving on in the exam after you submit the report.
"Passed" showing in the notebook, but no points from the autograder
This could happen for a number of reasons. See the Vocareum Guide for a breakdown of the potential causes. If you believe it is a bug (after eliminating other explanations) feel free to raise it.
Timeouts
We have increased the number of random test cases in the test cells to provide more consistent grading behavior. One side effect of that is that it becomes more likely that an inefficient solution will result in timing out the grading script.