The final project must be done in groups of 2 (or 3 or 1 with permission).
The project can be anything you'd like to build in C++. You are allowed to use any libraries you like. The only requirement is that you use some of the C++ features taught in the class.
The scale of your project should be about the order of complexity of the Minesweeper project (~1000 lines of code? There is no strict requirement on number of lines. Your project should just be nontrivial.) If you have a group of 3, the project should be a little more complex to compensate.
Examples of past projects include small games (battleship, hangman), real-time photo effects (e.g. dog filter) using OpenCV, an emulator for an ancient game console, and a networked chat server/client. For games that were too simple, we required that they add some additional features like a GUI or networked multiplayer.
- Proposal: Due Monday Nov 28, 10 PM
- Checkpoint: Short meeting during class, Dec 5
- Completed project and presentation: Due in class, Dec 12
There are no late submissions for these deadlines, start early!
- Proposal 10%
- Checkpoint 20%
- Project 50%
- Presentation 20%
Write a short proposal (<500 words) describing your project. In particular, describe any libraries or frameworks you plan to use. Talk about what features of C++ you expect to use, and how you plan to structure your project (Does it have a class hierarchy? Is it a series of class templates?). Provide an estimate for the time you expect to spend on different parts of the project, and how you expect the work will be split within your group.
Make a Github repo for your project (it can be either public or private), and add the course staff.
Our Github usernames are Grain
and yiyunliu
.
Include the proposal in the Github repo, so we can make comments in a pull request.
We can also make a repo for you if you want it to be under the CIS1900
account.
Grading will be based solely on completeness of these requirements. You may need to answer some follow-up questions if your proposal is not detailed enough. One of the course staff will be your project advisor, and they will provide feedback about your proposal as soon as possible.
This checkpoint will be an in-class meeting during class on Dec 5. You will discuss any issues you may be having with the project so far. If needed, we can discuss any changes you need to make to your plan. The goal of this checkpoint is just to make sure you make some progress by this time, and not leave the project to the last minute.
Grading will be based on whether you have made some amount of progress based on your proposal. You must have started coding by now. Again, be sure to start early so you don't get stuck on installing libraries!
Before the last class, make sure all your code is pushed. Since there are a variety of OSes and build environments used in the class, there is no requirement that your project build on our machines.
The project will be graded for completeness, based on the goals from the proposal and the checkpoint meeting. Points will be deducted if your project is overly simple (hopefully this is not the case based on the proposal and the checkpoint). Remember the features we covered! Things like smart pointers and RAII are very useful. Marks may be deducted if your code is not very idiomatic, and if you ignore the things we learned in favor of C- or Java-style coding.
Try to build features incrementally! If you fail to finish the entire project, the parts you did finish should be demoable. Otherwise, it will be very hard to grade.
You will demo your project in the last class of the semester. The demo should be fairly short (about 5 min or less). Show off your project (or your code if you wish), and talk about any interesting parts of the development process. Did you have any really difficult bugs to work out, or any interesting design decisions that you made?
Grading will be based on completeness, whether you talked about these things during the presentation.