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. Groups with particularly clean or efficient code will also receive a bonus. On the point cloud retrieval assignment, those with the highest accuracy will also receive a bonus.
There will also be an "art contest" for all of the large assignments and some 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, with one notable exception in Python for the point cloud classification assignment. 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).
Group Programming Assignments
There will be three large programming assignments spaced as equally as possible throughout the semester. Each 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 Piazza. This also allows for more exploration and a better final product
- Group Assignment 1: Image Sources for Acoustic Simulations (100 Points)
Groups will use the image sources algorithm to model all specular reflections in a virtual environment modeled by a scene graph of polygon meshes. At the end it will be possible to hear what music sounds like played on arbitrarily-placed boom box in many different types of environments, including large cities, elliptical whisper chambers, and high reverb rooms
Click here to see the art contest results!
- Group Assignment 2: "Shape Google": Point Cloud Descriptors for Shape Retrieval (100 Points)
Groups will apply their knowledge of point cloud descriptors to develop algorithms to classify point clouds into shape categories, and there will be a competition to see which group can best classify an unknown set of point clouds by combining different descriptors and figuring out which distance metrics are the most discriminative. This is the only assignment that will be done in Python/Numpy/Scipy instead of Javascript due to its highly numerical nature and the present lack of refined numerical tools for Javascript
Click here to see the classification contest results!
- Group Assignment 3: Laplacian Meshes (100 Points)
Groups will create an interactive application which allows users to click and drag points on a surface to induce graceful nonrigid deformations. With this implemented, students will be able to do things such as make the wings on a 3D bird flap or make a person's nose into a "Pinnocchio nose." They will also be able to smoothly color the surface of the mesh, simulate heat flowing across it, and wrap textures around it, to name a few other applications in the assignment
Click here to see the art contest results!
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. These 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 bolded assignments
Unit 1: Geometric Primitives and Shape Transformations
Unit 2: Point Clouds and Shape Matching
-->