Assignments

General Policies

Batch Tests

A portion of the grade for each assignment involving programming will be determined automatically by running batch tests on the submitted code and comparing to the correct solutions. The tests will not be known ahead of time, but they will be published after everyone has submitted their assignments, following a model similar to Top Coder. Failing those tests will impact the final score of the assignment, but partial credit may still be awarded.

Art Contests

There will also be an "art contest" for both of the group assignments and many of the small ones. This can include "bloopers" (bugs in 3D code tend to look pretty interesting) or an intentional creative use of the assignment. Students will receive raffle points for any submission whatsoever into the art contest, and the winner (as determined by a panel of anonymous judges) will receive additional raffle points. As explained on the general overview page, the programming language of choice will be Javascript. As a result, all art contest submissions can (and should) run in the browser. Art contest and competition results will be showcased on the course web site along with student names (or pseudonyms if preferred). Students will have a chance to consent to public sharing of the assignments upon submission.


Group Programming Assignments

There will be two large programming assignments: one for 3D rendering (a real-time ray tracing assignment) and one for 3D shape representations (polygon mesh processing). Each group assignment will have a mandatory set of tasks and an optional set of tasks, each with a different score, from which a total number of points must be reached. This will allow students to explore their interests beyond the basics of each assignment. Any extra points will go towards an exponentially decreasing amount of extra credit. The assignments will be done in groups of 2 or 3. Groups of 3 will be expected to complete a higher number of baseline points. Do not save these assignments for the last minute. Groups are given several weeks for each assignment, anticipating some possible hefty debugging, which will be facilitated by group discussions on Microsoft Teams. This also allows for more exploration and a better final product.

  • Group Assignment 1: Real-Time Ray Tracing (120 Points)
  • Group Assignment 2: Polygon Mesh Processing (100 Points)


Individual Mini Assignments

In addition to the larger group assignments which take a few weeks, there will also be a number of small individual assignments peppered throughout the course to keep everyone on the same page. They will often serve as warmups for harder tasks on the group assignments. These mini assignments are expected to take roughly one week each, and they will include a smaller amount of programming and/or some pen and paper (or LaTeX!) math.

Below are the list of mini assignments by unit (list evolving). Art contests will be held for the starred assignments.

Unit 1: Geometric Primitives and Shape Transformations

Unit 2: 3D Rendering

  • (*) Shaders and GLSL (30 Points)

Unit 3: 3D Shape Representations

  • (*) Implicit Surfaces (25 Points)

Unit 4: 3D Animation