ECS 175
Computer Graphics

CRN #70727


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. To help you prepare for the midterm and final, we will do practice test questions in class.

Here is the formula I propose to use in determining grades:

Pre-Project 0: 2%
Project 1: 10%
Project 2: 15%
Midterm: 15%
Project 3: 15%
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.

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 67. 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 67 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 Sat, June 10, 4:00-6:00 in 223 Olson (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.

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 more credit in your project grades for finding great Web resources if you make them available to the rest of the class through the newsgroup well before the project is due!

There are a lot of code examples on the Web, which can help you learn the OpenGL commands and how to use them. 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?

You may not copy code for the core of your project from the Web, even if you acknowledge the source. Again, look all you want, understand, and then go type it in yourself.