ECS 175
Computer Graphics

Spring 2010
CRN #93803


This class will cover the basics of interactive computer graphics. It will mainly be taught through four projects: we will learn how to do them in the lectures and discussion sections, and from the reading. Most of the projects are designed to encourage you to do something creative, which means that everyone's program should run differently and make different pictures.

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.

Grading projects

Each project will have a well defined core of things that it has to do. If you do the core project well you will get at least a B. If you do not do the core project well you will get at most a B, whatever other wonderful things you do.

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.


The midterm will be in class, date to be announced. The final will be Tuesday, June 12, 3:30-5:30 in 166 Chemistry (our regular room). A well-documented emergency or serious health problem is the only acceptable reason to miss the midterm or final. Do not plan to leave town before the final; that would cause you to fail the course.

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.


We will not take attendance at lectures, but you are responsible for all information conveyed at lectures, including announcements as well as technical material.

There is no eating during lecture.

Academic dishonesty

You are required to do your own work.

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?