Your final project is to build some new system functionality. It is open-ended, you get to define your project. Its scope should be similar to what you’ve done in the programming assignments throughout the course. You can work in a group of 2 or individually.
Your project can either be related to one of our previous programming assignments, or it can be related to a real system. You will likely find it easier to build on one of our previous assignments because you are already familiar with their structure, go, the build process, and the testing process. Our wonderful TAs will help you select and refine your final project topic during precepts.
You will have three deliverables due on Dean’s Date: 5pm Princeton Time on December 8, 2020. They are:
Your tarball should contain your code, including your tests. If your code is in a directory called
code, you can create a tarball with this command while in the parent directory:
tar -czvf code.tgz code.
Project Report Your 2 page project report must include the following 4 sections:
Video Demo Your video demo should be at most 5 minutes long. (Shorter is fine.) It should show your code running with you explaining what is happening. One easy way to record this video is in a zoom meeting by yourself, see instructions from Zoom here
You will submit your deliverables using tiger file.
Assignment 2 (routing): An alternative routing scheme, for example, for hierarchical/nested controllers.
Assignment 3 (in-memory cache):
Assignment 4 (ORM): Add selection and projection operations
Assignment 5 (connection pool): Compare a mutex vs. channel based implementation of a pool
Assignment 6 (access control): Client or server side of an Single-Sign-On SSO protocol (e.g., CAS, OAuth, OpenID)