Info Assignments Office Hours Hall of Fame Notes
Info Assignments Office Hours Hall of Fame Notes

Final Project

Assigned: 2020-11-11
Due Date: 2020-12-8 by 11:59PM U.S. Central Time


This is it, the culmination of an entire semester of hard work! Now it's time to show off what you've learned and create something from scratch.

Assignment Spec

Goals:

Gradescope

You will need to submit your GitHub repository to Gradescope every week on Tuesday @ 11:59 PM CT. You should also submit a pull request detailing the changes you've made over the week. More about this later.

You can still make additional submissions after this deadline without a late penalty if you want. This may allow your mod to prepare more relavant feedback before your code review.

Part 0: Getting Started

You should already have your assignment repo from when you submitted your project proposal.

This assignment will continue to use the Cinder framework from last week.

You will find the guide on CMake helpful.

Schedule for the Final Project

Week 0 (11/11 - 11/17)

Begin work on your project.

If you are using any external libraries, demonstrate Cinder and your external library compiling and linking fine. This means that not only are you able to include your external library's header file, but you are able to show usage of the basic functionality.

Don't forget your weekly pull request!

Code reviews will still take place. You will be graded based on your progress and adherence to the timeline you outlined in your project proposal.

Week 1 (11/18 - 12/1)

Continue to work on your final project.

Don't forget your weekly pull request!

Code reviews will still take place.

Week 2 (12/2 - 12/8)

Continue to work on your final project, with a special effort on finishing it up.

Don't forget your final pull request!

The final project is due December 8th @ 11:59 PM CDT on Gradescope.

Project Presentations

What good is a final project if you don't show off what you've made?

The week of December 8th, every everyone will give a very short (5 minutes) presentation of their final project during their code review time; You don't have to show any code; just the working application by itself.

Grading and Deliverables

Each week, you must demonstrate that:

At the end of the semester, you must have:

And you must give your very short presentation of the final product.

Weekly pull requests

You should make a pull request for each weeks changes. It should give a brief overview of what was changed as a whole.

NOTE: This is not the same as a Git commit history! Git commits are more for describing changes made to a single text file; this development log is about describing the progress made on your entire project.

README.md

You'll also need to write a README.md so that other people who use your project know a) what the project is, and b) how to build and use it.

Here is an example of a good README.md: https://github.com/tsoding/nothing.

The more appealing your README.md is, the more likely it is that developers will want to use your application/library.

It's O.K. if your project isn't cross-platform, i.e "You must have Visual Studio 2017 on Microsoft Windows to build this project" is fine. Just make sure people know what libraries/tools they need in order to compile your program.

Your Project Proposal

If your moderator has requested changes made to your proposal, or if you change your mind on some details of your project, you should keep your proposal up-to-date (You shouldn't need to edit this file very often, if at all.). It's O.K. if the actual development deviates a bit from what you wrote out in your proposal; once "what you want to do" is in your proposal you don't have to edit it anymore.

FAQs

Can I work past the deadline on Tuesdays?

Yes! There is no deadline or late penalty for your commits each week, other than the final deadline for the entire project, which is at 11:59 PM on December 8th. You can add more commits to your project at any time prior to that final deadline.

From now until the last day of classes, you can commit whenever you want.

Do I need to follow the Google C++ Style Guide?

Please try your best to follow the Google Style Guide.

Do I need to write tests?

Yes, and no. We won't require testing for any GUI or graphics-related code from Cinder, but you should still strive to write your code so that most of it is testable. We expect to see a reasonable amount of effort put into testing. The code in the apps/ directory will not be able to be tested with the default project layout.

Don't neglect to write any unit tests, and don't wait until the very end to add them.

What are we doing in code reviews?

Code reviews are now about giving your group and moderator a status update on your project; you'll demonstrate the code and features you've written since the last time, and you'll receive feedback that can help you improve your code and steer you towards finishing your project.