CPSC 324:
Fundamentals of Computer Graphics

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Winter, 1999.

   Instructor:  David J. Eck.

   Monday, Wednesday, Friday, 1:20 -- 2:30.
   Room Napier 102.

About CS324

Computer graphics is simply the art/science of producing and manipulating images on a computer. It is one of the most visible and exciting aspects of computer science. And unlike some fields of computer science, it has a rigorous foundation in theory and mathematics (some of which will be covered in the course).

For graphics programming, we will be using OpenGL, which is probably the most widely supported 2D and 3D graphics API. We will be using a free implementation of OpenGL called Mesa, which runs under Linux. The programming will be done in the C programming language. OpenGL is available on just about every system, and is implemented in hardware on many graphics cards. As a textbook on OpenGL, we will use the OpenGL Programming Guide, second edition, from the OpenGL Architecture Review Board.

As a supplement to OpenGL, we will spend some time on VRML (Virtual Reality Markup Language). VRML is based to a great extent on OpenGL, but it allows a more conceptual, higher-level approach to the construction of complex three-dimensional models. The textbook for this part of the course is Teach Yourself VRML 2.0 in 21 Days.


There will be two tests in this course. The first will be an in-class mid-term exam on Monday, February 8. The second is the final exam, which will be given during the scheduled final examination period, on Monday, March 15, at 1:30 PM. The final exam will not be canceled or made optional.

Programming Assignments

I will ask you to write six to eight programs covering various aspects of computer graphics. Some of these will be individual assignments, while on others, you will be allowed to work in pairs or groups.

Programming assignments that are turned in up to one week late will lose 20% of their grades as a penalty. Programs will not ordinarily be accepted later than one week after they are due. Even if your program is not complete or not working properly, you should still turn it in to receive partial credit.

Final Project

As a final project for the course, you will choose some topic in computer graphics and investigate it. The topic should be something that we do not cover, or cover only briefly, in class. Ideally, each person in the class would choose a different topic. Because of the size of the class, this might not be feasible, but I do not want to have more than 2 or 3 people working on any given topic.

Your project must be a substantial effort. The details are subject to negotiation. For some topics, a long research paper (about 20 pages) might be the only thing you turn in. For others, a short paper (about 5 pages) and a significant programming project might be appropriate. Or, instead of the programming project, you might create a gallery of images or animations. Instead of doing a traditional paper, you might want to do a Web presentation.

Some possible topics include: Ray tracing, radiosity, particle systems, volumetric rendering, hidden surface removal with binary spatial partition trees, the Java 3D API, Direct X, image processing with Photoshop or Gimp, Quicktime VR, virtual reality, 3D game programming techniques, computer graphics in movies, applications of computer graphics to scientific visualization, human animation with a program such as Poser, fractals, 3D images using stereo pairs, stereograms, using Java or VRMLscript with VRML, and graphics standards such as JPEG and MPEG.


Your grade for the course will be computed as follows:

            Midterm Exam:      20%
            Final Exam:        25%
            Programs:          35%
            Final Project:     20%

Office Hours and E-mail

My office is room 301 in Lansing Hall. My office phone extension is 3398. I am on campus most days, and you are welcome to come in anytime you can find me there. I will announce regular office hours (when I promise to try my best to definitely be in my office) as soon as I schedule them.

My e-mail address is ECK (or eck@hws.edu from off-campus). E-mail is good way to communicate with me, since I usually answer messages the day I receive them.