Final Project


Learning goals

Your end-quarter deliverable is to complete a project of your own choosing. The goal is to consolidate your knowledge of the key concepts covered in the CS107e course and do something creative with your Mango Pi. We hope you find the project a fun and satisfying way to put your new knowledge and skills into action and build something you are truly proud of!

Project schedule and deliverables

Submit Google form for project team repo by Mon Nov 18

Find a project partner. We've observed that 2-person teams work best, so that is our strong recommendation. If you have a project in mind that would be better run as a solo effort or requires a team of three, please come talk through your plans with us first.

Looking for like-minded folks to team up with? Check in with your peers in lecture, lab, OH, and Ed or ask the staff for help connecting to others looking for a pairing.

Submit your team using this Google form. We will create a new GitHub repository for the project that will be shared by the team.

Project lab 1 (Week 9)

The labs in weeks 9 and 10 are used as working team meetings. You and your teammates should arrange to attend the same lab session.

In first project lab, your team will brainstorm options and refine your ideas into a project plan. Review the plan with us to confirm your direction, scope, and schedule are aligned for a great outcome. You're now ready to draft and submit your project proposal.

Project proposal due Thu Nov 21 11:59pm

In your project repository, there is a template file Proposal.md. Edit this file for your project proposal, commit and push to Github to submit.

The project proposal should include:

  • Project name
  • Description of project goals
    • What you hope to learn, explore, or do in completing your project
    • Identify the core features you are aiming to reach
    • Include options for stretch and backup goals you would consider if need to make adjustments
  • Resources needed, where you can source materials, projected budget
    • Ordering parts can take time, so figure out what you need and place the order ASAP
    • We can reimburse components up to $20/person, save your receipts
  • Team members and their responsibilities
    • Each team member should be responsible for a clearly identifiable part of the project
    • Describe how your team will manage coordination/integration
  • Schedule
    • Decompose problem into tasks, arrange timeline for steady progress across full project period
    • Order tasks so as to resolve unknowns/risks sooner than later
    • Include specific midpoint milestones for check-in during second project lab
    • Review milestones with us and adjust/refine end goals to ensure success in final push

Project lab 2 (Week 10)

The second project lab ia another working meeting of your team. Check in with us to review progress on meeting midpoint milestones and ensure you are on-track for completing the remaining work.

Project demo session Friday Dec 13th 9am-11am

Each group should prepare a short demo of the project to deliver to the class. This is a fun event where you get to show off your work and see all the cool things done by your peers. There is much to celebrate!

Project code/writeup submission due Friday Dec 13th 11:59pm

Your team's github repository is used for coordinating the work throughout the project. Be sure to keep up regular commits as you progress. The final submission of all of the code must be submitted by the deadline.

As part of your final submission, edit the README.md file of your repository for the writeup of your completed project. The writeup should include a short description of what work was performed by each member of the team.

If your project was influenced by ideas or work of other people, you must properly attribute those contributions in the writeup. In particular, if incorporating code from others, you must reference where you got the code, and what changes you made. It should be clear what you did, and what others did. Our grading will focus mainly on those portions that you contributed, not the work that you built on.

Topics and scope

We hope the hard work you have put into your assignments has given you a solid foundation in computer systems and helped you achieve the course learning goals.

The project is a capstone experience where you apply your newly-gained knowledge and skills toward a system of your own design. A good choice of project is one that allows you to flex the engineering muscles that you have built this quarter and has its primary challenges in the CS107e arena, i.e. demonstrates and celebrates your achievement of the course learning goals. There can also be a fun synergy when your project additionally draws on your outside strengths (say, experience in mechanical design or musical knowledge), but we caution against committing to major explorations on outside topics that are new to you.

In terms of scope, think of it in terms of "mega"-assignment. The console application was seven weeks of steady work for one person and ends with a complete libmymango code base. Your project starts by building on that body of code and knowledge. Investing an additional four to six person-weeks can really take things to the next level! Set your sights on a result that represents a gratifying accomplishment for your team and one that can be reasonably achieved with steady, consistent effort. Throw in a stretch goal to reach for if progress is going gangbusters. Add a fallback option in case you hit insurmountable snag and need to scale down your ambitions.

Grading

Our rubric for evaluating final projects considers two major areas and one bonus opportunity:

  • Challenge/Technical Achievement. This category evaluates the ambitiousness and technical achievement of the project. The primary technical accomplishments should tie in well to the course learning goals. A good level of challenge for the project is one that allows you to show off the expertise you have earned as well as inspires you to further your skills and deepen your study of computer systems. Researching novel hardware, mastering advanced software techniques, digging in to debug and overcome obstacles, and otherwise meeting additional challenges in designing and building your system are all examples of efforts that will be further recognized in this category.

  • Execution. This category evaluates the team’s execution on delivering on the project's goals. The basic expectation is that the core functionality is operational and you have a successful demo at the project session. Your further efforts to develop a fully complete set of features, add a high level of polish, design a system that is pleasing to use, build in robustness, and so on will be acknowledged as going above and beyond in the execution category. Execution success is highly correlated with strong teamwork, so your upfront investment in thoughtful planning, time management, and good engineering practice will pay off here.

  • Originality/Artistry. We also want to nudge you toward a project that is uniquely your own, that mixes your interests and inspirations in imaginative ways or builds something particularly delightful or purposeful to you. We round out the project evaluation with a small nod to its creativity and a reward for your efforts to bring beauty, purpose, joy, elegance, inspiration, or fun to the task.

Additional resources