The course described on this page ended May 7, 2001
CPSC 324 should be offered again in the academic year 2002--2003.
--David Eck

CPSC 324: Computer Graphics

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Spring, 2001.

   Instructor:  David J. Eck  (

   Tuesday, Thursday, 1:30 -- 2:55.
         Room Lansing 300.
   (But meeting on alternate Tuesdays
         in the Library Multimedia Lab.)

   Course Handout:

Student Web Pages

Mayra Almonte Nathaniel Breighner Zachary Brusko Terence Costello Sasania Champagnie
Steven Cushman Sean Elliott David Geracitano Carl Harter Bradley Hirschy
Brian Lenihan Margaret Marsh Carl Morgan Eric Newsome Stuart Rotblat-Walker
  David Sugar Danial Thompson Benjamin Weiss

Lab Worksheets

Lab 1
  January 30  
Lab 2
  February 13  
Lab 3
  February 27  
Lab 4
  March 20  
Lab 5
  April 3  
Lab 6
  April 17  
Lab 7
  May 1  

On-line Resources

The Gimp
Images and Textures

Labs and assignments for CS 324, as well as other information about the
course, will be posted below as the course is taught
during the Spring term of 2001.

Fourteenth Week: May 1 and 3

As we finish up the term, we will have our final lab, Lab 7, on Tuesday. This lab deals with radiosty and ray tracing. On Thursday, everyone who wants to do so will have a chance to show off their final project. Then we will wrap up the course and do course evaluations.

The fourth and last programming project is due on Tuesday, but I have agreed to accept it on Thursday from anyone who wants to turn it in late.

Remember that your final project must be turned in by 7:00 PM on Saturday. Your Web portfolio must be in final form by 7:00 PM on Sunday. I will grade it on Sunday evening. You should have some representation of your final project in your Web portfolio by Sunday. I will email you your standing in the course after I have graded the Web portfolios on Sunday.

Thirteenth Week: April 24 and 26

There is a test on Thursday. An information sheet about the test is available.

On Tuesday, after I answer any questions that you have about the test material, we will talk about ray tracing and radiosity. We might also talk about some of the advanced features of OpenGL.

Your work for Lab 6 should be on your web site on Tuesday, but I will not be looking at it until Thursday.

Twelfth Week: April 17 and 19

Lab 6 is on Tuesday. On Thursday, we will talk about the final programming assignment. If time permits, we will begin ray tracing and radiosity. Here is a copy of the assignment.

Eleventh Week: April 10 and 12

We will be talking about texures and related topics in class this week. The OpenGL Programming Guide covers textures in chapter 9. However, most of this is advanced material which we will not cover. I suggest that you read pages 351-361, 405-413, and 418-420.

Tenth Week: April 3 and 5

Lab 5 is on Tuesday. Mostly, you will be working on blender animation. On Thursday, we will discuss the next programming assignment. Details on this assignement were sent to you by email and are also available here. Then we are going to start talking about display lists (Chapter 7) and move on to indexed face sets, which are efficient representations of polygonal meshes.

Ninth Week: March 27 and 29

You should read Chapter 5 in the OpenGL Programming Guide, except for the last section on "Lighting in Color-Index Mode".

Your work from the fourth lab should be on the Web by Tuesday. As I noted in an email message, you only have to do two out of the three exercises. However, I do expect you to do a reasonably good job on them to get full credit.

The first programming assignment with GObjects is due Tuesday of next week. There is a conceptual hurdle that you have to get over to do this assignment, and you need to think about it, work on it, and probably get help on it well before it is due. Here, again, is the project description from the handout: "For programming Assignment 2, which is due on Tuesday, April 3, you should create a 3D wireframe animation using the GObject graphics system. You might want to do some kind of attractive, complicated "mobile," for example. Your program must use a hierarchical model. There must be at least three levels in the hierarchy, and the animation must make changes on several different levels. If you do an unsegmented animation, you must have at least twelve basic objects. In a segmented animation, where your objects do different things in different parts of the animation, you can have fewer objects."

I remind you that you can use blender on the Linux computers in the CS lab. Although blender does not work well over a network, it works quite well when you are sitting in front of the machine. To start blender, just use the command blender. The same fonts that are available under Windows can be found in the directory /home/cs324/blender/fonts.

Eighth Week: March 20 and 22

On Tuesday, we will meet in the library multimedia classroom for Lab 4. This is the first of three labs on 3D graphics using blender. It would be a good idea for you to read at least the first section of the lab ("Basics") before coming to class on Tuesday.

On Thursday, I will lecture on vectors, matrices, and homogeneous coordinates. We will not go deeply into the mathematics, but there are some things that you need to know.

Assignments due this week: By Tuesday, your work from Lab 3 should be on the Web. On Thursday, you have to turn in your one-paragraph proposal for a final project.

Seventh Week: March 6 and 8

I am departing a bit from the schedule that was listed on the course handout by moving up the topic of hierarchical computer graphics, before lighting and materials. A schedule for the rest of the term is available here. This schedule includes information about the remaining programming assignemnts and about the final project.

Next week, of course, is Spring break!

Sixth Week: February 27 and March 1

This week, we just have a lab on Tuesday and a test on Thursday.

Fifth Week: February 20 and 22

This week we will continue with the important topic of geometric transformations. You should continue reading Chapter 3 in OpenGL Programming Guide. Note that you are only responsible for the material up to page 150. Furthermore, pages 143 to 150 cover a topic that we will be doing in more detail later (hierarchical computer graphics). For now, you should just be comfortable with the general idea of composing geometric transformations.

Your first programming assignment is due in class on Thursday. You should complete all the work for Lab 2 by Tuesday of next week. There will be a test on Thursday of next week.

Fourth Week: February 13 and 15

There will be a lab on Tuesday of this week. It will cover a bit of OpenGL animation, but will concentrately mainly on the GIMP. The exercises for this lab will be due in two weeks. In the meantime, you should also be working on your programming assignment, which is due next Tuesday. Don't expect to do this one the night before it's due!

On Thursday, we will start talking about three-dimensional graphics. You should begin reading Chapter 3 in the OpenGL Programming Guide. We will continue with this topic next week.

Third Week: February 6 and 8

For the first class this week, we will continue the discussion of drawing in OpenGL, and we will look at GLUT and GLUT callback functions in more detail. This will include information about how animation is done in OpenGL using the glutIdleFunc. On Thursday, we will study color in general, and talk a bit about how colors are used in the GIMP.

The reading for the week includes Appendix D (about GLUT) and Chapter 4 (about color) from the OpenGL Programming Guide. For more information on GLUT, you can check out the on-line documentation. You will find that GLUT has some capabilities that I'll never mention in class, such as pop-up menus.

For much of next week's lab, you will be working with the GIMP. While you are only really required to know what is covered in lab, you might want to start reading more about the GIMP. You could start with Chapter 1 of the on-line book Grokking the GIMP.

The exercises for Lab 1 are due on Thursday. On Tuesday, I will hand out a new, longer-term OpenGL programming assignment. (It will be to write a much improved 2D draw program based on my draw1_double example.)

Second Week: January 30 and February 1

On Tuesday of this week, we will have our first lab in the Library computer lab. The worksheet for the lab is available at Note that the exercises for this lab are due next week, on Thursday, February 8.

The reading for the week is Pages 27 through 66 of Chapter 2 from the OpenGL Programming Guide. We will not cover the remainder of Chapter 2. Note that the brief section on normal vectors, and a few of the other details, will not be relevant until we start doing three-dimensional graphics in OpenGL. In general, you are not required to memorize all the OpenGL commands. You should know that they exist, for reference, but on tests you will only need the more prominent commands, such as glBegin, glVertex, glColor, and so on. (I will give you a list before the test.)

First Week: January 23 and 25

We will not really get started on homework until after the first lab next Tuesday. However, you should read Chapter 1 of the OpenGL Programming Guide, even though you shouldn't expect to understand it completely. And before Thursday's class, you should read the handout from Scientific American that I will give you on Tuesday. You could also check out some of the above links to graphics resources on the Web.

Note that one of the requirements for this course is to make a Web site. If you don't already know how to make Web pages, please read the introductory material on HTML from Section 6.2 of my on-line Java textbook. Note that there is a directory named www in your account on Anything that you put in this directory is published on the World-Wide Web. Your home page should be a file named index.html in this directory. The address of this page on the web is either of the form or where username represents your user name. (Which address is used for your home page depends on how recently your account was created). It would be a good idea for you to have at least a basic Web page set up for yourself by next Tuesday.