Week 10: The Final Project
No more problem sets: choosing your own project, designing it before you code it, and where the road goes after CS50 ends.
5 topics · 17 questions
Each topic is a path, not a menu: work down it in order and every question builds on the one above. Click any of them to watch the answer draw itself.
Choosing a Final Project
- How it worksHow does scoping a project down to something finishable in a few weeks beat an ambitious idea that never ships?
- Common mistakeWhy isn't picking the most impressive-sounding idea actually the smartest way to choose a final project?
- Going furtherWhat happens to a final project's odds of finishing once its scope has been deliberately cut in half?
Your turn1 of 2
A student's ambitious project idea has 29 planned features. After deliberately cutting the scope in half to make it finishable, about how many features remain?Planning and Designing Your Project
- How it worksHow does breaking a final project into small, testable pieces mirror how a problem set is already broken into functions?
- Common mistakeWhy isn't opening a text editor and starting to type the fastest way to actually build a working project?
- Going furtherWhat happens to a project's design the moment you actually try to implement the piece you were most unsure about?
- Ties togetherHow does designing a final project pull correctness, design, and style from week 1 into one real piece of software?
Your turn1 of 2
A final project is broken into 15 small, independently testable pieces, and 2 of them are already working. How many pieces are left to build and test?Presenting a Finished Project
- Worked exampleWalk me through a 3-minute demo that shows a project's core feature working before explaining any of its code.
- Common mistakeWhy isn't listing every technology you used the most convincing way to present a finished project?
- Going furtherWhat happens to an audience's understanding of a project when the demo is shown before the explanation, not after?
Your turn1 of 2
A student's demo has 11 total minutes, and 2 of those minutes are spent explaining code before the working feature is ever shown. How many minutes are left to actually show the feature working?Where to Go After CS50
- How it worksHow does CS50's mix of C, Python, SQL, and web development map onto the specialized courses that follow it?
- Going furtherWhat changes about how you read new code once you've built something of your own from an empty file to a finished project?
- Ties togetherHow does the memory intuition built in week 4 connect forward into a future course on operating systems?
Your turn1 of 2
CS50 covers 13 major topics across the course, and a student wants to go deeper into just 3 of them next. How many of the original topics is the student setting aside for now?Reading Other People's Code
- How it worksHow does tracing through unfamiliar code one function call at a time rebuild the mental model the original author had?
- Worked exampleWalk me through tracing what an unfamiliar function does by testing it on one small, concrete input first.
- Going furtherWhat happens to how fast you can read new code once you've built several projects of your own?
- Ties togetherHow does reading someone else's code for the first time connect back to reading a debugger's output in week 2?
Your turn1 of 2
An unfamiliar function is tested by trying it on 15 different small, concrete inputs one at a time, and its behavior becomes clear after the 2-th input tried. How many of the remaining inputs would have been unnecessary to try, beyond that 2-th one?