Final
Due: Friday, December 13 at 11:59pm
No late days! Due date is a hard cut-off.
For this final, we have defined several open-ended projects that draw on concepts and themes from this course. You can choose whichever one is most interesting to you. The person in charge of the final is listed in parentheses.
- Theorem proving in Lean (Will)
- Read-Log-Update in Rust (Will)
- Verified filesystems in F-Star (Jayden and Danny)
- Machine learning DSL in OCaml (Shrey and Sicheng)
Some notes on logistics:
-
Timeline: You have three weeks from the release of this final to accomplish it. Each final comes with a significant amount of work, including background readings/tutorials along with the main coding portions. Get started early. Do not wait until finals week to begin.
-
Groups: Each final can be accomplished on your own or in groups of two. If you really want a group of three, then your group must complete an extension for your selected final, counted towards your main grade (not for extra credit). Once you have settled on a final, please have one group member fill out this form by Wednesday, November 27: https://forms.gle/Xj8BsVwvXmbfzrZa6
-
Office hours: We will continue to host limited office hours. Their main purpose is to help you deal with setting up infrastructure and learning the relevant background. As a final, you are expected to do the primary conceptual work in your group. See the calendar on the home page for particular times.
-
Picking a final: While you do not have to explicitly commit to a final, we strongly discourage swapping finals past the first week. That is, I would not allow yourself to consider “I can’t figure this out, it seems too hard, let’s try another final for a bit” as an option. That’s a recipe for last-minute disaster!
-
Submitting: Only one group member needs to submit your group’s final. But you must have filled out the group form above!