You may work with one partner on the final project. The design of your final project is up to you. The timeline is below
- Monday 17 November 5pm, Written Proposals Due
- Tuesday 25 November 11:59pm, First Progress report
- Monday 8 December 11:59pm , Second Progress report
- Friday 19 December 9am-Noon, presentations/demos
- Friday 19 December 5pm, Final report.
Getting started
Use the
setup40 script to set up the appropriate git repos with the right permissions set for partners and instructors. Suppose users
molly and
tejas which to work together. Molly can start by running
[~]$ setup40 projects/final tejas
Once the script finishes, Tejas should run
[~]$ setup40 projects/final molly
Please note that the script tries its best to ease the initial creation and cloning of git repos and it tries to be smart and check that each partner agrees that they are partners. That said, there are some race conditions and if there are uncooperative formations of partners, the script and the instructor will get confused. If you play nice with the script, it will play nice with you.
If all goes well, Tejas and Molly should each have a local clone of a common git repo in their own ~cs40/projects/final directory. You can use git status to confirm this.
If you wish to work by yourself (not recommended), use the syntax
[~]$ setup40 projects/final none
Copying starter code
Both partners should modify their own
~/cs40/projects/CMakeLists.txt as this file is not under version control. Just add the line
add_subdirectory(final)
to the end of the file and save.
For the next step only one partner should copy over the starting code
[~]$ cd ~/cs40/projects/final
[final]$ cp -r ~adanner/public/cs40/projects/final/* ./
Now push the changes to your partner
[final]$ git add paper
[final]$ git commit -m "final project start"
[final]$ git push
Even if your are working by yourself, you must run
git push or I can't see/grade your work. If you are working with a partner, your partner can now pull the changes. In this case if Tejas wishes to get files Molly pushed, he would run
[~]$ cd ~/cs40/projects/final
[final]$ git pull
Project proposal (Nov 17th, 5pm)
You should write your proposal in latex using the provided template. The proposal should be roughly 2 pages of text (1.5+ pages). You proposal should include the following elements
- A high level description of the project and your motivation for pursuing this topic
- A description of ideas that you will be using from class and new ideas you will be exploring
- A list of software tools you will be using. You may leverage third party packages, but be sure to list what code you will be writing and what code you will be importing.
- A list of short term, long term, and reach goals. Short term goals should represent incremental progress you can make in a week. Long term goals should describe what you would consider a successful implementation of your project. Reach goals can be something that might be a nice addition, time permitting, but may not be possible if there are snags in the early stages
- A description on how you plan to evaluate the success of your project.
Intermediate reports
Demo
Final submission
You final submission should include
- Code implementing your project
- Instructions on how to run your project
- A write-up 4-8 pages, describing the main technical highlights of your implementation.
- A list of references used. This could include web sites, books, or papers.
- If you used any third party code, be sure to document this in your references.
Ideas
You project should combine some previous topics from the course and explore at least one new topic. You can aim for realism, efficiency, or artistic effect.
Below are just a few ideas.
- Scene Graph, hierarchical modeling
- 3D game with collision detection, interaction
- Efficient raytracing with data structures
- Parallel raytracing
- Photon mapping
- Physical systems - Cloth, water.
- Terrain modeling
- B-splines, NURBS
- Simplex Noise / HyperTextures
- Non-photorealistic rendering
Submit
You should regularly commit your changes and occasionally push to your shared remote. Note you must push to your remote to share updates with your partner. Ideally you should commit changes at the end of every session of working on the project. You will be graded on work that appears in your remote by the project deadline.