To make sure that you are really learning the material, there will be a midterm and a final.
Here is the formula I propose to use in determining grades:
Project 1: 10%
Project 2: 16%
Midterm: 15%
Project 3: 16%
Project 4: 18%
Final: 25%
Alternative formulas many be introduced as the quarter progresses to compensate for unforeseen events, for example a project which almost no one manages to finish. In that case, your grade will be determined by whichever formula gives you the better grade.
A small amount of extra credit will be given at our discretion for contributing good links related to the projects, and for helping your fellow students in the Chat room and in the lab.There are many ways to get an A on a project, and hopefully one of
them will always work for you. You could add technical features to the
program, using a wider range of OpenGL commands or coding up more
advanced algorithms. Or, you could use the core functionality to make
an
interactive program that is fun to use and attractive to look at.
Grading creative projects is a little more like grading an essay in an English class than grading a multiple choice test. Two projects with the same technical content can get different grades, for instance if one runs more smoothly than the other, or if one has a model where everything fits together well and the other has little gaps, or if it looks like one author combed the Web for exactly the right textures and the other looks like the author chose the first ones that she found.
These decisions are judgment calls; they will be up to the professor and the TA. We will work together to make sure that the judgment calls are made as fairly as we can, but we will never overrule a judgment call after grades have been assigned.
When in doubt about how an idea for what to do with your project will be valued, ASK the professor or TA. After you do the work and hand in the project, it is too late to disagree with our judgment.
Since this is a graphics class, projects will be graded on their
graphics components.
This includes visual design and the elegance of
your algorithms and programming style, but does NOT include fancy
interfaces; elaborate menus or an interface language with a parser
will not get you extra points.
Your project will be graded on the machines in Kemper 71. If your
program does not compile and run on these machines it will get a zero.
So if you plan to do most of your work elsewhere, be sure to check that
your program compiles on the machines in Kemper 71 as you go along.
Projects up to one week late will lose one letter grade.
Projects more than one week late will not be accepted.
Partial credit on the midterm and final is given entirely at my
discretion. I will consider regrading midterm questions if asked to do so
within one week of when papers are returned, but not afterwards.
You are encouraged to talk to the other students about the projects. You are NOT allowed to copy their code. What constitutes copying? If you are typing while looking at the other student's work, you are copying. Obviously, if you are cutting and pasting from their file, you are copying. The goal of the course is to get knowledge into your head, not onto paper or into a file.
You may copy from the book, or from handouts or your lecture notes. Learn and understand the code you are copying.
You may (in fact you may have to) copy some elements of a project from the Web, including 3D models, textures, and maybe code to read or convert them. We will give you a good idea of what these elements are; when in doubt, ASK. Always acknowledge the source of this copying in the documentation for your project, giving the URL. We will give you extra credit for finding great Web resources if you make them available to the rest of the class through the chat room well before the project is due!
There are a lot of code examples on the Web. Be careful to stick to the OpenGL ES/2.1 subset we are using; programs using OpenGL 1.x features which have been deprecated in later versions of OpenGL will cause you to lose credit. Feel free to use more advanced features of OpenGL, just so long as a) your code compiles and runs in Kemper 71, and b) you can explain to us what the features do.
Many features, such as turning on z-buffering, are done using exactly the same commands in every program and you should use those lines too. But it is your job to understand what they mean. Can the order in which the commands are issued be changed? Why or why not? What do all the parameters in the function call mean?