CSCI 480 / 580 - Final Project

Scott Wehrwein

Fall 2022

Overview

The final project is an opportunity to dive deep into a topic we haven’t covered in class, or one we covered on a surface level. The project must have a significant implementation component, but the topic and tools you choose to use are largely left up to you.

Scope

This project replaces a final exam and a fifth programming assignment, so in short, I expect it to be both significant and good. Your project must include a substantial implementation component, at least on a similar scale to A1 or A2. When scoping your project, keep in mind that the following extra challenges may be applicable to your project: (1) learning any concepts you need for your project that were not covered in class; and (2) implementing a codebase from scratch rather than starting from skeleton code. That said, you are working in groups of 2-3 and will have about 3 weeks to work on the project, so such a scale should be doable.

Project Ideas

Here is an incomplete list of project ideas to help get you thinking. Within these, careful attention should be paid to scope to make sure the project is substantial but achievable. You are also welcome to come up with your own ideas, but I highly recommend talking to me ahead of the proposal deadline to make sure you’re on the right track.

Substantial extensions to A1, A2, or A3:

Examples:

Implementation of a topic covered (or to be covered) in class:

Examples:

Interactive educational visualizations/demos:

Examples:

Places to look for inspiration:

Deliverables

The project consists of the following deliverables; all deadlines are 10pm unless otherwise specified:

  1. 11/2 Group Formation
  2. 11/4 Project Proposal
  3. 11/15 Milestone 1 Report
  4. 11/22 Milestone 2 Report
  5. 12/4 Code and Final Report (11:59pm)
  6. 12/4 Final Project Survey (11:59pm)
  7. 12/5 Showcase Presentation (9am, AW 305)

Please note that slip days cannot be used for any final project deadline.

1. Group Formation

Groups for the final project should be size 2-3 for 480 students, and 2 for 580 students (an odd number of 580 students may necessitate one group of 3).

By 10pm Wednesday, November 2nd, you should have settled on your group members. Create a repository by following the Github Classroom invitation link in the FP Group Formation assignment on Canvas. Name your team using the same convention we’ve used for prior group assignments: universal usernames of all group members, sorted lexicographically, and concatenated with underscores ('_'.join(sorted(usernames), if you speak Python).

In the root directory of your repository, you will create a reports folder where you will put most of the deliverables for the project. For the group formation deadline, please include a file reports/1102_topic.txt with a very brief description of your final project topic. This can be tentative and high-level, but you should have some direction that all your group members have agreed on.

2. Project Proposal

Your project proposal lays out what you hope to achieve for your final project, and your plan for doing so. Make it as short or long as needed (ideally no longer than needed), but I expect these to be about 1 page. The document should be added to your repository as reports/1104_proposal.pdf. The proposal needs to include the following sections:

  1. Group members

  2. Project Manager: one group member should be the designated project manager. This member is responsible for making sure the group is making progress, coordinating tasks, and consulting with me if project goals or scope need to change. Their implementation workload should be somewhat reduced (reflected in the roadmap) to account for this extra responsibility.

  3. Final deliverable: as concretely as possible, describe what you are you planning to build by Monday, March 15th.

  4. Milestone 1 deliverable: describe what state you will have the project in at the first milestone deadline, Monday March 1st. This milestone is at the one-third mark of the time you have to work on the project.

  5. Milestone 2 deliverable: describe what state you will have the project in at the second milestone deadline, Monday March 8th. This milestone is at the two-thirds mark of the time you have to work on the project.

  6. Roadmap: do your best to break the project into subtasks that will take one group member no more than a week to accomplish. Be sure to account for things you need to learn as well as things you need to build. For each task, give a tentative allocation of which group member(s) will accomplish it and when it will be done.

  7. Resources: if you have used, plan to use, or drew project idea inspiration from any resources (papers, websites, blog posts, videos, etc), please include links or references to them.

Grad (580) group proposals should have an additional section proposing their lecture topic:

  1. Proposed lecture topic: Grad final project groups will give a lecture during the second-to-last week of classes. The topic of your lecture need not coincide with your final project topic, but it may; it can be anything graphics-related that we haven’t covered in class. Plan on a 20-30 minute lecture.

3-4. Milestone Reports

For each milestone, you will add a milestone report to your repository’s reports directory. The report should be in PDF, HTML, or markdown format. The documents should be called (if submitting a PDF) 1115_milestone1.pdf (for the first milestone) and 1122_milestone2.pdf (for the second). Each milestone report should contain the following information:

  1. Briefly describe your progress. Address all items that were in your project proposal for this milestone.

  2. Include some form of visual evidence of the results you’ve achieved so far: this could be output images, result videos, or screenshots of your progress; if your project is WebGL-based and opening your HTML file shows your current results, that will suffice, but make sure it’s clear which file I should look at.

  3. Provide instructions for running your code, and a description of what I should expect to see when I do so.

  4. If the project’s goals need to change at all (e.g., to adjust scope to account for unforeseen challenges, or to further clarify goals), provide an updated set of goals for your final deliverable. Explain each change with respect to your original goals.

5. Code and Final Report

Format

Your report should be eitehr a PDF or a webpage (html and associated files). If your project has video results or your implementation uses WebGL, a webpage with embedded videos/WebGL canvas is highly encouraged. Push the report to your repository’s reports directory in a file called 1204_report.[pdf or html].

Contents

Your report should include the following information:

  1. Title, group members, and a link to your github repository.

  2. Summary of accomplishments. Describe what you achieved, again being sure to address each of your goals as stated in your proposal (or milestone report, if any goals were adjusted).

  3. Results. Embed images or videos illustrating the results described in the summary. If your project is implemented using WebGL, you can instead just embed your canvas at this point in your webpage.

  4. Instructions for running and using your code. Your instructions should tell me everything I need to know to be able to reproduce your results. If your project is interactive, provide instructions on how to use it (keyboard controls, game mechanics, etc. as applicable).

  5. Code guide. Describe the high-level structure of your code. Include information like which pieces are implemented in which files/classes, what design decisions you made, and anything else another developer might find helpful to know before dive in and start understanding it.

6. Final Project Survey

Each group member should fill out the Final Project Survey on Canvas by the deadline for the code and final report.

7. Showcase Presentation

We’ll meet during the second hour of our final exam slot (9-10am) on Monday, 12/5 to see all the cool stuff you’ve done! Be prepared to give a (very) short and informal 5-or-less-minute presentation to showcase your final project’s results.

Graduate Presentations

Grad final project groups will give a 20-25 minute lecture during the second-to-last week of classes (11/28-12/2). Once topics are settled, I’ll make up a presentation schedule and send it out so you know when you’ll present. The topic of grad lectures can, but need not coincide with final project topics; it can be anything graphics-related that we haven’t covered in class. We will likely need to run two presentations per class period, so please plan on a hard cap of 25 minutes. Your presentation should, ideally, include some sort of interactive component (poll questions, group work, etc) in your lecture.

I can print materials for you if you email them to me the day before your presentation. You can present from your own computer, the classroom computer, or from mine; if you want to use mine, please send me your slides ahead.

There will be a short survey for all students (480 and 580) to complete after each grad lecture and before the following class.

Grading

Each project is unique, so it’s difficult to provide a proper rubric. The goal of the final project is for you to complete a significant implementation of something we covered in class, or to learn and implement a graphics-related topic that we did not cover. Your grade will be primarily based on how well you achieved your project’s goals, modulated by how ambitious those goals were. Attention to detail and polished results are particularly valued in computer graphics.

Please note that although the intermediate deadlines have only small point values associated with them on Canvas, your Final Project Report grade will take the quality, timeliness, etc. of intermediate deliverables into consideration.