Fall 2005


Sample Code

Project 1
Project 2
Project 3

Basic Info

C++ hints

Basic Information for CS 559

Should you be here? Basic Facts Course Policies

Basic Facts

Instructor Michael Gleicher
Office: 6385 CS&S
Office Hours: Tuesdays 1:45-2:30, Thursdays 11:00-11:45
or by appointment
TA Yu-Chi Lai
Office: 1345 CS&S
Office Hours: Mondays 2-3, Fridays 1-2 or by appointment
Class Meetings

Tuesdays and Thursdays 9:30-10:45
2540 Engineering (west edge of the building)

Note: you are responsible for information discussed in class. Not everything in lectures will be in the readings, and not everything in the readings will be discussed in class.

Mailing List There is a course mailing list, run by DOIT: compsci559-1-f05 @ lists.wisc.edu
In general, announcements will be made to the course web site.
Required Books

Peter Shirley. Fundamentals of Computer Graphics, 2ed
note: the new 2nd edition is considerably different - be sure to get it!

Mason Woo, et al. The OpenGL Programmer's Guide.
This is sometimes known as the "red book."
The current edition is the 4th edition (version 1.4), but for the purposes of this class an older edition would be OK too. There will be some readings from this book, and its an important reference.
In fact, an old version is available on the web:
http://www.opengl.org/documentation/red_book_1.0/ that should be sufficient. However, if you plan to work in graphics beyond the class, you probably will want to own an up-to-date copy of the book.


There will be a final exam, in the time slot given by the registrar. Currently, this is scheduled for Thursday December 22nd. The registrar sometimes changes this.

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

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.


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

See the policy page for more details.

Computing Environment

Programming assignments and projects for this class are to be done under Windows using Microsoft Visual Studio .NET2003 (C++) on the machines in the "Storm Lab" (B240 Comp Sci).

You may do your work elsewhere (for example on your home PC), but if it doesn't build and run on a machine in the Storm lab, we consider it as not working. If you do work elsewhere, be sure to check to make sure your code does work on a Storm.

For programming assignments and projects, you will need to use a user interface toolkit and image I/O library. We recommend (and provide support for) the FlTk (pronounced "full-tick") user interface toolkit and libTarga image I/O library. If you choose to use another one, we cannot help you. We will provide tutorials.

See the policy page for more details.


There will be (almost) weekly written or programming assignments. Assignments are always due Tuesdays at the beginning of class. Late assignments will be accepted (for a penalty) at the discretion of the TA.

Assignments will be graded "Check/No Check." (where a "no check" means "turned in something unacceptable"). Particularly good assignments may be noted, but do not directly effect your score.

Programming Projects There will be three (fairly sizeable) programming projects. The due dates are scheduled so that you can plan ahead.
For More Information See the course web pages from previous years.
Fall 2003 will be the most similar to this year's offering.

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.