Computer graphics is (usually) a
team sport. In fact, learning computer graphics (and, arguably, learning in
general) is best done in collaboration with others. Unfortunately, in a
university class setting, we have the unfortunate constraint that we must grade
individuals independently, so we need to have people work independently on
graded assignments so that we can assess them. Therefore, there is a fine line
between "collaboration" and "academic misconduct".
we want to encourage collaboration. However, we also need to make sure that each
individual gets appropriate credit for there work.
encouraged to discuss class topics and assignments with other students, subject
to the following rules.
- If you are unsure if something is collaboration or academic misconduct,
please ask the instructor or TA for clarification.
- No collaboration is allowed on the exams.
- Ultimately, each student is responsible for the material. Projects and
exams will require you to understand the assignments, so be careful not to
rely on help since at some point you might need to do it your self.
- Collaboration must be a two way street. The person giving help must OK it.
(e.g. don't look at someone else's work without their permission).
- It is not OK
to broadcast help. Its OK to answer someone who asks for a hint, but its not
OK to post a hint to a mailing list. If you have something that you would like
to offer to the class, please send it to the instructor.
- Every student must turn in their own assignment, and is responsible for
- Projects must be "substantially" written by the student handing it in. In
particular, the "meat" of the project must be completed by the student handing
in the project.
- Any code that you didn't write must
be given proper attribution. If
you grab a piece of code from the web (including the class sample code!),
another student, some book, ... - YOU MUST SAY SO! It is OK to use pieces of
sample code - providing that you give proper credit to the author.
- We will give you large amounts of example code to work with for various
assignments and projects. Be sure to give it proper attribution.
- It is OK to ask a classmate for help on one of the questions on a written
assignment. It is not OK to "borrow" their assignment and copy it without
their permission. It is not OK to just copy it without understanding it (since
you won't learn the material).
- It is OK to ask a classmate for help looking over your code to find a bug.
It is not OK to use a piece of their code without giving them proper
attribution, or if its an important part of a project.
- It is OK to use the provided example code, or a data structure
implementation you find on the web PROVIDED THAT YOU GIVE PROPER ATTRIBUTION.
It is not OK to use a piece of code on the web for a central piece of an
assignment (like a required image processing routine)
2. Computing Policies
This class has been assigned to
the "Storm" laboratory in Room 1366 Computer Sciences. CS559 (Computer Graphics)
and CS679 (Computer Game Technology) students have priority on these machines
except during CS302 scheduled labs.
You are free to
work on other machines (such as your home computer or laptop) subject to the
- Your code must build and run on the Storm machines. As far as we are
concerned, if it doesn't compile and run on a Storm, it doesn't run.
- Working in the lab can be a good collaborative experience, and we
encourage this kind of collaboration (see below).
must be written in C++ (since C is a proper subset of C++, that's OK too). For
some thoughts on C++, see the C++
provided by the CSL for the storm labs is Microsoft Visual Studio .NET 2005. The
department has a site license for Visual Studio that allows you to install it on
your home machine/laptops. Contact theTAs to
borrow the disks.
Note: that if
you choose to develop your software using another compiler (or on a different
machine), you still need to be able to compile your code in the storm labs. We
cannot provide any help to you if you choose to use other tools.
support the sample code on machines other than Windows.
Please see the FAQ as
be graded in three parts: the check-points and preliminary written assignments,
an in-person demo (where the student will demonstrate their programs to the
instructor or TA) and a grader's "reading" of the project.
responsible for coming to their demo appointments. If you cannot make your
appointment, make an arrangement before the
day of the demo. Students who simply do not show up for the demos will get half
credit at most.
deadline is strictly enforced. Late turn-ins are accepted at a penalty. Each
late day will cost you 20% of the total score; that is, after first day, you get
80%, second day, 60%, ... fifth day, 0%. The penalty is prorated hourly. There is
one situation you can recover the penalty: if an assignment is an
intermediate step toward a big project, you can recover the late penalty of the
intermediate assignments by finishing
the basic requirements of the final project
During the semester, you also have one chance of being late free of penalty.
However, under no circumstances should you be later than the demo deadline,
which is usually a week after turnin deadline.
4. Some Standards on Project Evaluation
It is MUCH more important to do
the basic/required parts of the assignment correctly than to have bells and
whistles. It is very depressing to give someone an F for failing to meet the
basic requirements when they have written 5000 lines of code to make a spiffy
You must be
able to use your program. Generally, the main part of grading projects will be a
demo session where you drive your program to show us what it can do.
We will look at
your code. Therefore, it is important that it is well documented. For example,
we might check to see if we can find the place where you implement a certain
A program that
dies gracefully (prints an error message) is much better than one that crashes.
Do everything you can to make sure your programs do not crash.
should be robust in the face of bogus inputs. Expect us to test this.
5. Turning in Programs
Programming assignments and
projects are to be handed in by placing them in a specified directory. The exact
name of this directory will be given in the assignment, but it will generally
have the form:
where "yourid" is your CS login
id, and "a1" is the name of the assignment (a1 = programming assignment 1, p2 =
project 2). If your directory does not exist, or if the permissions are set
incorrectly (such that either you cannot write files in it), please contact the
You must turn
in all files required to build your program. This includes the source files, the
header files, the visual studio project files, and the visual studio solution
files. If you use some libraries other than the ones we provide, please make
arrangements with us.
You are NOT to
turn in executables. Just the source code (and the project files),
documentation, and any extra things explicitly asked for in the assignment.
document your code. Everything you hand in should have a "readme.txt" file
explaining what each file is. Every file should have a "head" comment explaining
what's in it. If you use code written by others as part of your program, you
must give proper attribution in both the readme file and the code files
If you do use
code written by someone else (including the instructor or TA or web resource),
you should be sure to give that person credit in both your readme file and mark
the borrowed code clearly.
Do not work in
the handin directory. Copy your files there once the program is working. (there
won't be enough disk space for everyone to put all of their working files in the
handin directory). You should only copy the following files into the directory:
- the C++ source and header files
- the fluid source files (.fl) if you use fluid (if you don't know what
fluid is, don't worry)
- your Visual Studio solution file
- your Visual Studio project file
- any other source files (for example, if you use MFC you would have
resource files, or if you used fluid, you would have an ".fl")
- a readme.txt file that explains what your program is, what it does, how to
build it, how to use it, what pieces you "borrowed," what each of the files
In short, we
need all the files necessary to build your program (and a readme file). We do
not want the executable, the debugging information, the .obj files, ...
Also, you need
to configure things so they will compile in the CS environment. If you build
your programs at home or somewhere besides a CS machine, you will probably need
to change your project settings.
6. Extra Credit
We encourage students to work
above and beyond the minimum requirements. For example:
- We may give extra readings beyond the standard course material. (This
material will NOT be tested on the exams).
- You may submit a programming assignment that does something cool.
- You may add additional features to your projects, or do more parts of the
project than required.
- You may participate as a subject in a graphics group research experiment.
credit does not directly affect your grade. You
cannot score better than an "A" on any project or exam (or a "check" on an
assignment). Doing something extra on one thing will not make up for a
deficiency on another.
You should do
extra work because you want to learn more and gain more experience with the
topic. Not because it will help with your grade. We will (usually) note extra
work and thank you for doing it (since it makes our lives more interesting).