Syllabus and Home Page
CS 3600 -- Computer Graphics I -- Fall 2002

Dr. Steve Cunningham, +1.209.667.3176

Class Tu/Th 2:30-3:57 pm, P-101

This course is an introduction to computer graphics, emphasizing graphics programming using OpenGL, graphical problem solving, and effective visual communication.  The course will cover the primary components of image synthesis, including geometry, transformations, lighting, shading, and texture mapping, as well as the basis of interaction such as events, callbacks, and object selection.  The course projects will emphasize applications of graphics in the sciences and mathematics.

Prerequisites : sound programming skills equivalent to successful completion of CS 2500.  Solid 3D analytic geometry and spatial thinking skills are also useful.

Course content : the course will be based on a manuscript the instructor is developing that is available online (see the links below).  It will cover all the topics above, with an emphasis on modeling and on communication. The course projects will emphasize examples of graphical programming for scientific studies and effective communication through images.  There is no formal ordering of topics for the course, but the contents of the course notes is probably a fairly good approximation of the sequence in which we will cover material.

Instructor and text:   Dr. Cunningham’s office is P-283 and his formal office hours are Wednesdays from 10am to 3pm.  The course uses the instructor's manuscript notes instead of a formal textbook; these notes are available online (see below).  In addition, you may want to get the OpenGL Programmer’s Guide and/or the OpenGL Manual from Addison-Wesley, or the OpenGL SuperBible (but watch out for Windows-only tricks in the latter!)

Dr. Cunningham regularly attends various graphics events and has served in several positions with ACM SIGGRAPH and EUROGRAPHICS, and <commercial> you are all encouraged to join ACM , ACM SIGGRAPH and EUROGRAPHICS as student members to see what is happening in the larger world of computer science and computer graphics. </commercial>

Resources and examples:

A number of materials will be posted here as the term progresses.  It is your responsibility to check this page from time to time between class meetings just in case your instructor should get ambitious and put up additional material that you could use to help you in your work.  Note that some of the materials here will require that your browser have the Acrobat Reader plug-in installed.  The chapter list is subject to rearrangement as the writing project progresses.


Projects will be somewhat different from the traditional computer science project.  After the first get-started assignment, each will ask you to identify a problem in science and discuss the graphical representation of that problem, and will then ask you to write a program that implements that representation.  When this is finished, you will be asked to discuss the graphical representation and what it tells you about the problem.  This will let you create a context for the programming that is very important in the graphical world.

Your projects will be evaluated by being compiled on the instructor's Macintosh system, so you must be careful not to use any system-dependent techniques unless you provide alternate system-independent versions and an #ifdef / #endif conditional compilation structure.  There are Macintosh systems available in the laboratory in case you want to check your code in this environment.

Project 1 : Work with a sample graphics source file to get used to the OpenGL API.  Due September 26, 2002
Project 2 : Develop an initial visualization of a science area .  Due October 8, 2002
Project 3 : Develop an improved visualization of a science area .  Due October 31, 2002
Project 4 : Develop an interactive visualization of a science area using at least two interaction modes.  Due November 14, 2002
Project 5 : Create a texture-mapped interpolation surface .  Due December 10, 2002

Grading and exams:   Your instructor will give grades based on projects and an examination at the end of the semester.  Grading standards are based on correct coding and output for projects and correct and well-thought-out responses for examinations.  Grades to be based upon course projects (50%) and an examination (50%) but that is open to discussion.  Your work must be your own; some discussion of graphics topics will naturally be permitted but the final work must be independent.  One of the measures of original work will be your ability to describe to me the design and implementation of your project if asked.  
Projects will be assigned as the semester progresses, and the examination will be given at the end of the semester at the time designated in the class schedule:  2:00-4:00 pm, Thursday, December 12.

Acknowledgements and copyright:  The course notes and many examples were developed with the support of National Science Foundation grant DUE-9950121 and with sabbatical support from California State University Stanislaus.  All opinions, findings, conclusions, and recommendations in this work are those of the author and do not necessarily reflect the views of the National Science Foundation.  The San Diego Supercomputer Center also generously provided resources to support this work.  All are gratefully acknowledged.  All the material in this course and on these pages is copyright © 2002 by Steve Cunningham unless another creator and/or copyright is specifically noted, as is the case on some files.