This is an archive of a past semester of this course. Go to the current semester.
Final Project

The goal of the final project is for you to choose a graphics or imaging problem that is of interest to you, research ways to solve it, organize and schedule your work plan, execute a programming project of significant technical challenge that addresses your problem, present your work in front of the class, and create a final report. We are giving you wide latitude on problem selection, computing platform, and what resources and software starting point you wish to use. Have fun, and work on something that you are excited about!

Project teams will be of 1-3 members. The scope and amount of work should scale according to the team size.

Important deadlines:

  • Proposal: due no later than Friday April 15th 11:59pm.
  • Final Presentations: May 4th in Soda 306, 10:00 - 2:30pm.
  • Final Report: due [tentative: May 6th] Thursday May 5th at 11:59pm. Due to grading deadline constraints, there are absolutely no late days allowed!

For CS284A students: Recall that you need to do a substantial final project and submit a paper-style write-up, and this is worth 40% of your overall grade of the class.

1. Choosing a Project

Creating your project idea is up to you! You should check out our Project Ideas pages Part 1 and Part 2.

2. Proposal

Due date: as soon as possible, and no later than Friday April 15th 11:59pm.

Submission: please create a webpage with your proposal, and fill out this form. Only one member per team should fill out the form.

The purpose of the proposal is a deadline for you to organize your thoughts by writing them down, and to formalize your goals and plans. It also provides the information so that your course instructors can give you feedback if necessaary, regarding scope and expectations for the project.

Your proposal webpage should contain the following sections.

Title, Summary and Team Members

Provide us a descriptive title, 2-3 sentences that summarize your project, and list your team members.


Here you should provide the context for your idea. Describe the problem that you are trying to solve, why it is challenging, why it is important, why you care about it and why others should care about it as well. List what resources, e.g. books, papers and/or online resources that are reference for your project.


List the computing platform, hardware and software resources that you will use for your project. You have a wide latitude here to use what you have access to, but be aware that you will have to support and trouble-shoot on your platform yourselves. If you are starting from an existing piece of code or system, describe and provide a pointer to it here.

Goals and Deliverables

This is the most important part of your proposal. You should carefully think through what you are trying to accomplish, what results you are going for, and why you think you can accomplish those goals. For example:

  • Since this is a graphics class you will likely define the kind of images you will create (e.g. including a photo of a new lighting effect you will simulate).
  • If you are working on an interactive system, describe what demo you will create.
  • Define how you will measure the quality / performance of your system (e.g. graphs showing speedup, or quantifying accuracy). It may not be possible to define precise target metrics at this time, but we encourage you to try.
  • What questions do you plan to answer with your analysis?

You should break this section into two parts: (1) what you plan to deliver, and (2) what you hope to deliver. In (1), describe what you believe you must accomplish to have a successful project and achieve the grade you expect (i.e. your baseline plan -- planning for some unexpected problems would make sense). In (2), describe what you hope to achieve if things go well and you get ahead of schedule (your aspirational plan).


In this section you should organize and plan the tasks and subtasks that your team will execute. Since presentations are 2.5 weeks from the due-date of the proposal, we recommend that you include a task for every half week.

3. Final Presentation

The final presentations will be Wednesday May 4th starting at 9:30am. Please read important details and signup for time slots in the the class Piazza, post @732. Also, presentation tips are in Piazza post @734.

4. Final Report

Your team will write a final report as a webpage (as with your proposal) that describes what work you did, what you learned, and presents your final results. You may be able to re-use material from your proposal, updating it based on what you actually did and adding detail if necessary. The report should be about 2-3 pages long if printed. The basic structure of your report will likely include:

  • Abstract
    • A paragraph summary of the entire project.
  • Technical approach
    • A 1-2 page summary of your technical approach, techniques used, algorithms implemented, etc. (use references to papers or other resources for further detail). Highlight how your approach varied from the references used (did you implement a subset, or did you change or enhance anything), the unique decisions you made and why.
    • A description of problems encountered and how you tackled them.
    • A description of lessons learned.
  • Results
    • Your final images, animations, video of your system (whichever is relevant). You can include results that you think show off what you built but that you did not have time to go over on presentation day.
  • References
  • Contributions from each team member
    • A clear description of the work contributed by each team member.

Here are some example high-quality project reports from other classes:

Final Report Submission

Report webpage

Please create a webpage with your proposal, and fill out this form. Only one member per team should fill out the form.


Create a zip file called containing

  1. A text file website.txt containing the URL for your webpage, and
  2. A directory with all your code.

Remember that you can inspect what's inside your zip file by running

unzip -l

When your zip file is ready, copy it to the instructional machines and run

submit project

This indicates you have succeeded:

Looking for files to turn in....
The files you have submitted are:
Is this correct? [yes/no] yes
Copying submission of assignment project....
Submission complete.

The article with the instructions for using scp to copy files between machines is here.