COS 426:
Computer Graphics
Spring 2010


General | Syllabus | Assignments | Final Project | Exercises


Programming Assignments

There will be 4 programming assignments, each of which will contribute 10% to the final grade.


Final Project

There will be a final project, which will count for 20% of the final grade.


Programming Language

We will be using C++. The project files supplied with the assignments build under linux or Mac OS X (via the make command from the Unix shell), and Microsoft Visual Studio 2005 (via a solution file). Mac computers that boot either Mac OS X or Microsoft Windows are in Friend 016 and 017. You are welcome to use them or any other computer with the appropriate C++ development tools. However, your programs must compile and run on the computers in Friend 016 and 017.

Art Contest

For each of the assignments, there will be an art contest. You will get one point just for submitting something to the contest, so you definitely should participate! In addition, if you win the contest you will get up to two more points, and your entries will be posted on the web pages. Submissions may be any images or movies that somehow used your program from the assignment, including particularly interesting artistic images or movies, visualizations of your algorithm, or bloopers (funny-looking pictures that you created by accident due to bugs or logical errors). Multiple submissions are allowed from each student, although a point will be awarded only for one of them. The judges (Professor, TA) will look for creative submissions, so use your imagination!

How to Submit

Create a single archive (in .zip format) named PUID_cos426_assnN.00.zip, where PUID is your Princeton University ID and N is the assignment number, (e.g. funk_cos426_assn1.00.zip) that contains the PUID_cos426_assnN directory you have created as defined in the assignment description.

Especially, this archive should contain:

Be sure to maintain the directory structure you used when creating the zip file.

Make sure the code compiles on one of these configurations:

  • the Windows installations in Friend 016 or 017 under Visual C++
  • the Macs installations in Friend 016 or 017 using "make"

You can submit your archive via ftp to ftp.cs.princeton.edu/incoming/cos426. Log in with user anonymous and your email address as password. Windows, Mac OS and Linux come with a command line tool called ftp that you can use to submit your code. Use the cd command to change to the directory incoming/cos426, the binary command to switch to binary file transmission mode (especially important under Windows) and the put PUID_cos426_assnN.zip command to save your file.

Note that you cannot overwrite or modify a zip file once it has been uploaded. If you want to update your submission, please name it PUID_cos426_assnN.UPLOAD.zip, where UPLOAD is the two-digit number of the upload attempt (i.e., 01, 02, 03, etc.). During grading, the files will be unzipped in order of that number (so, funk_cos426_assn1.02.zip would overwrite the contents unzipped from funk_cos_assn1.01.zip etc.). Please try to keep the total number of uploads small, though, and note the special format for submitting late, as defined below.


Late Policy

Assignments are due at 11:59PM on the due date, as determined by the file date of the file upload. Late assignments are marked down 1/4 of the full grade per day. One minute late is the same as one day late. Each student can use up to a total of three "free late days" during the semester. Exceptions beyond these free days are rare -- they will be granted only for medical reasons, and only by the instructor. Important: if you decide to submit late, name the file PUID_cos426_assnN.late.zip, and submit exactly one file.

Collaboration Policy

The COS 426 collaboration policy is the same as that of Princeton's COS 126 and COS 217 courses ...

Programming in an individual creative process much like composition. You must reach your own understanding of the problem and discover a path to its solution. During this time, discussions with friends are encouraged. However, when the time comes to write code that solves the problem, such discussions are no longer appropriate - the program must be your own work. If you have a question about how to use some feature of C++, VisualStudio, etc., you can certainly ask your friends or the teaching assistants, but do not, under any circumstances, copy another person's program. Writing code for use by another or using someone else's code in any form is a violation of academic regulations. "Using someone else's code" includes using solutions or partial solutions to assignments provided by commercial web sites, instructors, preceptors, teaching assistants, friends, or students from any previous offering of this course or any other course.

You may, however, use any code from the COS 426 lectures, precepts, or course texts, providing that you explain what code you use, and cite its source in your "assignment#.html" file or in comments. For each assignment, you must also specifically describe whatever help (if any) that you received from others in your "assignment#.html" file, and write the names of any individuals with whom you collaborated. This includes help from friends, classmates, lab TAs, and COS 426 staff members.

You are responsible for keeping your solutions to the COS 426 programming assignments away from prying eyes. If someone else copies your program, we have no way to determine who's the owner and who's the copier; the Discipline Committee gets to decide. If you are working on a public cluster machine, be sure to delete your local source files and logout before leaving. You should also store all of your assignment files in a private directory.  You can create a private directory using commands similar to these:

% mkdir cos426
% chmod 700 cos426

If you have a question about what is allowed and what is not, please consult the professor. 


Facilities

We suggest that you use the machines on Friend 016 and 017 for the programming assignments. Please do not use the graphics lab (418) in the CS building for working on your projects. It is intended for research projects only.