Fall 2003

Be sure to look at the calendar for readings and assignment schedules!

Basic Information for CS 559


Mike Gleicher
Office: 6385 CS&S
Office Hours: Tuesdays 10:45-11:45, Thursdays 1:30-2:15
or by appointment

Liz Osten
Office: 3310 CS&S - But will usually be in B240
Office Hours: Thursdays 4:00 - 5:00, Mondays 11:00 - 12:00
or by appointment

Class Meetings

Tuesdays and Thursdays, 2:30-3:45pm
1325 Computer Science and Statistics
Some material will be discussed in class but will not be in the readings.



Fundamentals of Computer Graphics. by Peter Shirley. Beware, there are many typos in this book. Please look at the errata page and mark the corrections in the book.

The OpenGL Programmer's Guide. by Woo et. al. This book is a really useful reference. It's also a decent explanation of many of the key concepts. Most of the content is available online, but it is still valuable to have the book around. Some chapters will be required readings.

There will be readers, available from the DOIT Tech store. These will be papers and book chapters not covered in the texts.


There will be a final exam, TBD.

There will be a midterm exam in class on October 21st.

There will not be any opportunities to reschedule the exams. Please contact me at the begining of the semester if you forsee there being a problem.


There will be three programming projects. All deadlines will be on Tuesdays.

Late projects will be accepted (for a penalty) until the following Sunday night.
Projects will include individual demonstration sessions.


There will be weekly assignments, some written and some programming. All will be due on Tuesday at the begining of class. All will be graded "Check/No Check."

Late assignments will not be accepted. However, we will drop your two "lowest" assignment scores, so if you miss one or two over the semester, there will be no penalty.


20% * 3 projects
15% final exam
10% midterm exam
15% assignments

Computing Environment

This class is not about the specific tools. However, you will need to use some tools in order to do the assignments and projects that will help in your understanding of the concepts and ideas.

All assignments must be written in C++, and must compile with the Microsoft VS.NET 2003 compiler and run on the machines in the B240 computing lab. Here are some hints on using C++ in this class

If your program runs at home, but doesn't compile and/or run in B240, it doesn't count.

For assignments, we recommend the FlTk (pronounced "full-tick") user interface toolkit. If you choose to use another one, we cannot help you. We will provide tutorials for FlTk.

We will use the OpenGL graphics toolkit for several assignments and projects.

Several projects and assignments will need to read and write images in the Targa image file format. We will provide you with a toolkit for doing this.

See the Policy on Programming Assignments for more details.

For more information See the course web pages from previous years.
Fall 2001 or Fall 2000, are most similar to this year, but all Wisconsin CS graphics classes are available here.

Should you be here?

This is a class in computer graphics. Our goal is to teach you about the science of making and manipulating images with computers. This course is not about how to use computer graphics. Put simply, our goal is to teach you to write and understand Photoshop, not to use it.

The official prerequisites are CS367 (Data Structures) and Math 320 or 340 (Linear Algebra). Basically, in this class you will need enough programming skills to build fairly large programs, and enough mathematical skills to deal with the nature of the topic.

We will require students to write their programming assignments in C or C++. The programming language used for projects really is independent of graphics, however, these are what is most convenient. To put this another way, the language of the class is English - it could be taught in Japanese, French, or Swahili, but it is more convenient for us to teach in English.

If you've never written a program in C++, you might want to invest a little energy in becoming proficient in the language before the class begins. I have some hints.

Also, the programming projects for this class are much bigger than those in an introductory class. For many students, this is the first time they have to write a substantial program, and that can be hard - this class is about graphics, not how to write substantial programs. Because people ask, I will tell you that last year's projects required about 1500-2500 lines of code to do well (and many students wrote several times that!). Your mileage will vary (and this year we may have different projects than last). If you want some hints on how to build a big program, check here.

You should be warned from the outset that this is a hard class. Like many of the upper level computer science courses, it requires a lot of programming (3 large projects and some smaller assignments). It also requires you to have a fair bit of mathematical skill.

Don't say I didn't warn you.

Many students complain about having to do too much work in this class. My teaching evaluations generally tell me there is too much work for a 3 credit class. My department chair has told me "stop trying to kill the students." However, I am a strong believer that the only way to learn this stuff is by doing it, and you get out of a class like this what you put into it. So yes, you will do a lot of work, but you will learn a lot. For every student who complains about there being too much work, there's another who thanks me for providing them with such a great class. If you think you might be in the former category, maybe you should save us both a lot of pain and drop now.