Final Project
All that we ask is that you build something of interest to you, that you solve an actual problem, that you impact education, or that you change the world. Strive to create something that outlives this course. — from Harvard's CS50 Final Project (modified to reference education)
We see a lot of solutions without problems
— anonymous Venture Capitalist about reviewing Startup proposals
Work in teams to create a basic app for a client at Duke:
- Drone Dashboard, Duke OIT
Denver Cowan, Eileen Cai, Michael Austin
- Program Advisor, Duke Innovation and Entrepreneurship
Benita Besa, Raphael Mukondiwa
- Program Advisor, Duke Computer Science
Lisa Zhao, William Chen, Derek He
- Canvas Quiz Generator, Duke Learning Innovation
Tanner McLeod, Ryan Teachman
Focus on a Minimum Viable Product (MVP): building your app incrementally, in small manageable steps, that keep things simple, and allow you to learn about the impact of your ideas.
Your final grade will be determined subjectively based on how consistently you worked on the project and how useful the result is viewed by your client.
Weekly Progress
Each week push new app features to the main branch of the provided final_TEAM repository hosted in the course's Gitlab group.
You should endeavor to make what work you do as visible as possible (i.e., follow the Open-Source Coding Community's maxim: “Keep a history: if it isn't public, it didn't happen”).
Additionally, you should be prepared to demo your project during any class meeting.
User Test
Test your app with at least one person, ensuring they understand its purpose, context, and what kind of feedback would be helpful. Summarize the results in a Markdown file named Wireframe_Feedback.md, that includes the following:
- Direct feedback. This should be each user's direct feedback as much as possible (either their written summary or quotes) rather than your interpretation of their feedback.
- Positive notes. Summarize the top good things that users felt were important to be kept in the app. Ideally, these would be similar comments made by multiple users.
- Improvement notes. Summarize the top things that users commented critically about, regardless of whether or not you agree or they seem to contradictory. If any of these comments are made by multiple users, make sure to note that as well.
Final Submission
Use GIT to push your implementation to the main branch of the provided final_TEAM repository hosted in the course's Gitlab group:
- Tag the commit representing the submitted version of the code as
Complete
- Submit your code,
gitignore and gitattribute files, as well as any properly attributed resources (images, sounds, configuration files, etc.) your web app needs
- Submit an updated project README file that explains your project's purpose and how to deploy your app at the top-level (no separate folder)
- Submit the Software License your team agreed to at the top-level (no separate folder)
- Submit a video, as long as needed, of you using your app and provide a voice over on the video to describe what is happening in the code to show you have a basic understanding of how the app works.
There are many free screen capture tools available for any platform or free trials of some pretty powerful tools as well.
Final Presentation
During our final class meeting, your team will have 16 minutes to present you app. Everyone on the team must present some of the content, including at least:
- Elevator Pitch. clearly and concisely describe the problem your app is trying to solve (no more than 1 minute!)
- License Choice. explain which license your team choose for the app and why
- Demo. run the program from the
main branch through a planned series of steps/interactions to show off its features
- User Feedback. present one positive and one critical thing learned (including user quotes is encouraged), if you were able to complete a user test
- Prompt. show any LLM prompts embedded in your app and explain how you determined what to include and how to incorporate the user's input
- Testing. show any automated testing you implemented or discuss what you think makes your app challenging to test automatically
- Security. show any security reports for your app or discuss at least two security or data concerns that might be present in your app
- Ethics. discuss at least three ethical concerns or possible negative impacts of your app if it were adopted by Duke University for all members of its community
- Learning. share one thing each person learned about developing software while working on this project
Resources
- Advice
- Examples worth watching
- Inventing on Principle, Bret Victor, 2012 (the first 35 minutes primarily)
- Original iPhone demo, Steve Jobs, Apple, 2007 (and a study of the talk)
- The Mother of All Demos, Douglas Engelbart, Xerox PARC, 1968 (and its lasting impact) — LONG, but worth watching!
- Sketchpad, Ivan Sutherland, MIT PhD Thesis, 1963 (the first interactive graphics program, non-procedural programming language, and object oriented software system)
Giving demos is a skill you can work on!