Learning goals
Your end-quarter deliverable is to complete a project of your own choosing. The goal of the project is to consolidate your knowledge of key concepts from CS107e 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 May 25
Connect with a project partner. We've observed that 2-person teams work best. If you have a project in mind that could work as a solo effort or hefty enough to require a team of three, please come talk it over with us.
Need help connecting with a partner? Check in with your peers in lecture/lab/OH, make a post on Ed, or ask the staff to make introductions to others who are unpaired.
Submit your team using this Google form. We will create a new GitHub repository shared by the team.
Project lab 1 (Week 9)
Lab sessions in weeks 9 and 10 are used as working team meetings. You and your partner 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 May 28
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 is 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 Wed June 10 9-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!
The project demo session is an in-person event and participation is required for all students. There is no virtual option or alternate schedule.
Project code/writeup submission due Wed June 10 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.
Your writeup should also clearly cite any external resources you used as part of your project. Unless you state otherwise, we will expect that all code submitted in your project repo is your independent creation. If instead you have incorported code written by others or generated/assisted by an AI tool, you must cite where the code came from, who authored it, and what changes you made. Be very clear about which contributions are your work. Our grading will focus on the portions that were your contributions, not the work that you built on.
Topics and scope
The project is a capstone experience of the course. This is your opportunitiy to show your growing mastery, problem-solving and debugging skills, and system design thinking via a result you can confidently explain and demo.
Choose a project that flexes 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. A team of two over 2-3 weeks can take things to the next level! Set your sights on a result that represents a gratifying accomplishment that can reasonably be 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 an 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 challenges should tie in well to the course learning goals. The technical demands should drawn on your new skills and inspire you to further your mastery and deepen your understanding 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 execution on delivering on the project's goals. The expectation is that the core functionality is operational and you have a successful demo at the project session. 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 want to nudge you toward a project that is uniquely your own, that mixes your interests and inspirations in imaginative ways or provides something delightful or purposeful to you. We round out the project evaluation with a small nod to its creativity and rewarding the thoughtful touches that make your project elegant, purposeful, or engaging.
Additional resources
- Browse our project gallery of past projects
- Project musings and inspiration
- Exploring components and sensors
- Advice on choosing hardware
- Available support code