Programming Assignment Group (a.k.a. Project) 1

by Mike Gleicher on September 2, 2015

A reminder on how this works…

We prefer to think of this as a sequence of 4 small programming assignments that gradually build on each other with a common theme. At the end, you’ll have done something bigger.

Each week, there is a programming assignment that is graded check/no check. (and you can sometimes get a “gold star” for doing meeting the basic requirements in a creative way).

For some of the assignments, there are optional parts. Completing these get you “project points.”

If you get a check for all (or almost all) of the programming assignments, you will get (at least) a B for the class. Doing other things (getting gold stars and project points) won’t make up for missing programming assignments.

To get a grade better than a B, you must first complete the requriements for a B (getting all the checks), and then accumulate enough project points over the course of the semester.

“Gold Stars” are given for doing things that are outside of the requirements of the class – like making a picture that is particularly artistic, or having a cool user interface. Since we try not to grade you on your artistic talent, these kinds of things don’t influence your grade as much (but we will take them into account). However, doing these extras does make things more fun.

We’ll describe the assignments in a group together, so you can plan ahead. If you are aware of what you’re doing next, you might be better able to program in a way that you can re-use your work.

Programming Assignment Group 1

For the first 4 programming assignments, we’ll use the 2D drawing element of the web browser (called an HTML5 Canvas). You might want to read the tutorial on Canvas What and Why.

The goals are to get started with graphics programming in the web browser, to practice using transformations in 2D, and to see how the operations of the 3D pipeline work.

Programming Assignment 1 (due Thursday, September 10th): Canvas
For this assignment, you’ll make a picture. You get a check if you write a program that draws a picture. You get a gold star if you make a cool picture.

Programming Assignment 2 (due Thursday, September 17th): QuadCopter
For this assignment, you’ll make a picture of an object that has hierarchy, and make it move around. You get a check for having a hierarchical object that moves. A QuadCopter will fit the bill nicely, but there are other choices (like a robot or stick man). You’ll get a gold star if you do something particularly creative.

Programming Assignment 3 (due Thursday, September 24th): Wireframe
For this assignment, you’ll draw in 3D! Since you’re using the 2D Canvas, you’ll need to do the drawing operations yourself. You’ll need to provide for some interaction. You’ll get a check if you successfully draw 3D shapes that move correctly when you move the camera. You can earn a gold star for doing that well, or having creative things.

You can earn project points for:

  • Having your program be able to switch between orthographic and perspective projection
  • Providing a better interface (to control the camera or geometry)

Note: you can earn these project points for either Programming assignment 3 or assignment 4 – but only for the first time you do them.

Programming Assignment 4 (due Thursday, October 1st): Solid
For this assignment, your 3D drawing will look more realistic. You’ll draw triangles so your objects might look solid if you do it correctly. In addition to drawing the triangles, you will need to compute their normals.

You can get project points for:

  • Using the normal vectors to create diffuse lighting (basic shading).
  • Having the normal vectors be computed correctly when the objects are part of a hierarchy (which means you need to have objects moving in a hierarchy).
  • For implementing the painter’s algorithm to perform hidden surface removal.
  • With maximum points for having this all work together (you’ll have a 3D hierarchical object that works with shading and hidden surface removal).

There will be a bit more description, and some extra tutorials and programming resources for each assignment as they come up.

Print Friendly, PDF & Email

Previous post:

Next post: