Final Project

Deliverables

Grading

The final project will be evaluated on two broad categories:

  1. Scope: The scope of your project will determine the maximum grade you can receive. For examples of projects that would receive full points for scope (and therefore have a maximum possible grade of 100%), see below.

  2. Execution: How well you deliver on the promised scope of your project. This includes the video, write-up, and code deliverables and determines your final grade on the assignment.

At least one person from each group must attend their precept to double check for your project to be approved and assigned a maximum grade for the scope.

Example Projects

Here are 8 example projects and their maximum grade:

  1. Extending assignment 4 (DORM) to support arbitrary SQL queries. Max grade 85%
  2. Implementing and evaluating a non-queue-based caching algorithm. Examples of such algorithms include: LIRS, ARCS, and Hyperbolic. Max grade 85%

  3. Implementing and evaluating a machine learning-based caching algorithm. Examples you could use for inspiration include: Cacheus, LRB, and LeCaR - Max grade 85%

  4. Building a shell in Go (or another language of your choice) that supports process backgrounding. See this page for help/guidance getting started on implementing a linux shell - Max grade up to 100%, depending on completeness of shell

  5. Build a browser plugin that does something cool. There are lots of options here: analyzing a user’s traffic, encrypting/decrypting form inputs, etc - Max grade up to 100%, depending on creativity and implementation difficulty

  6. Build an IPTables-like application in Go. See the Basic Concepts section on this page for an overview of what IPTables does. You do not need to replicate all this functionality - a very basic firewall will suffice. - Max grade up to 100%

  7. Build a cache for some other medium such as a file system, SSD, or Hard Drive - Max grade up to to 100% depending on details

FAQs

I want to do one of the example projects but don’t know how to get started!

Come to office hours, make an Ed Post, or send us an email! We’re happy to help you get off the ground.

How much work should we put into the final project?

About twice as much as the average programming assignment.

Does our project fulfill the expected scope for the course?

Come to precept and we’ll tell you

I want to work on a project that isn’t included in the examples

Please do! Get approval from your preceptor

What should we include in our video?

The video should be 5 minutes or shorter, should include a screen share demonstrating your project’s functionality (if applicable), and explain how and why it works. If you want to show specific code snippets that’s fine as well. The goal is for you to show us that you built something systems-y that works.