CPSC 324:
Fundamentals of Computer Graphics

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Spring, 2001.

   Instructor:  David J. Eck (eck@hws.edu).

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

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 or 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, third edition, from the OpenGL Architecture Review Board. In addition to the programming, this book also covers some of the theory of three-dimensional graphics. We will cover parts of this material, and I will supplement it with additional material in lectures.

In addition to doing your own programming, you will be working with several advanced graphics programs: Gimp, Blender, and POV-Ray. All three of these programs are free. Gimp is a program for two-dimensional image manipulation. It is similar in its capabilities to the commercial program, Photoshop. Blender is a three-D modeling and animation program. POV-Ray produces images of three-dimensional scenes using a technique called ray tracing. Readings about these programs will primarily come from on-line sources. See the Web page for this course at http://math.hws.edu/eck/cs324/ for more information.


Labs and Homework

Seven of the classes for this course will be "labs" which will take place in the Library Multimedia Classroom. Most (perhaps all) of the homework assignments for the course will start as lab exercises. You will begin working on these exercises during the labs, and will complete them for homework. Some exercises will be OpenGL programming problems, while others will involve creating images and animations with Gimp, Blender, and POV-Ray. There might be a few essay/research questions.


Web Portfolio

You are required to make a Web portfolio of the work you do for this course. This portfolio will consist of Web pages on math.hws.edu. You can post images that you create with Gimp, Blender, and POV-Ray. You can post screen-shots of your OpenGL programs in action. You can post the source code of your programs -- but only after the program is due, of course. Your final project for the course, as described below, will be posted on the Web. I expect that the collection of Web pages for all the students in the class will serve as a permanent example of what can be accomplished by computer science students at HWS. Your graphics Web portfolio might also be useful to you as a part of your on-line resumé.

All the pieces of your Web portfolio will be graded individually. However, to encourage you to do a good job on your site, your web portfolio as a whole will be graded at the end of the term for completeness, organization, presentation, and aesthetics. This grade will count for 10% of your total grade for the course.


Final Project

In addition to the regular homework for this course, there will be a larger-scale final project. You will select your project in consultation with me. It is due on the last day of classes, Friday, May 4. You can start working on it at any time, and you should certainly begin by the middle of the term.

The project can take a variety of forms. One possibility is an OpenGL program. You could also look at some other graphics API, such as Java 3D. However, the project does not have to involve programming. You might research some advanced aspect of computer graphics and write a paper on it. Another possibility would be to learn a graphics programs such as Gimp or Blender in more depth and produce a gallery of examples. (This would be especially appropriate for someone who wants to use this course to fulfill the Colleges' fine arts goal.) Or you might create a detailed tutorial on some advanced aspect of one of these programs.

Whatever you decide to do for your project, it should end up on the Web as part of your graphics portfolio. This is true even for a research paper, which can be converted to HTML format for posting on the Web.


Tests and Grading

There will be two in-class tests, which will be given on March 1 and April 19. There will also be a cumulative final exam, which will take place during the regularly scheduled time, on Monday, May 7, from 7:00 to 10:00 PM.

Your grade for the course will be computed as follows:

            First Test:        15%
            Second Test:       15%
            Final Exam:        20%
            Labs/Homework:     25%
            Final Project:     15%
            Web Portfolio:     10%

Office Hours, E-mail, and WWW

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@hws.edu. E-mail is good way to communicate with me, since I usually answer messages the day I receive them.

The Web page for this course is at http://math.hws.edu/eck/cs324/. This page will contain links to on-line readings and other on-line resources, links to each student's graphics web pages, and information about weekly assignments and labs.


Tentative Schedule

Here is a tentative schedule for the course. While we will certainly cover all the major topics on this schedule, I expect to make changes to this schedule as the term proceeds. See the course web page for updated weekly information.

Date What's Happening
Tuesday, January 23 Overview of computer graphics
Thursday, January 25 Introduction to OpenGL programming (Chapter 1)
Tuesday, January 30 Lab: Introducing OpenGL, Gimp, and Blender
Thursday, February 1 OpenGL drawing basics (Chapter 2)
Tuesday, February 6 GLUT basics (Appendix D)
Thursday, February 8 Color (Chapter 4); Gimp layers and channels
Tuesday, February 13 Lab: Gimp basics; animation in OpenGL
Thursday, February 15 Viewing and modeling in OpenGL (Chapter 3)
Tuesday, February 20 More on modeling, viewing, and matrices
Thursday, February 22 More on Gimp; more on modeling and viewing
Tuesday, February 27 Lab: Image composition with the Gimp
Thursday, March 1 Test
Tuesday, March 6 Lighting and materials in OpenGL (Chapter 5)
Thursday, March 8 More on materials
March 13 and 15 Spring Break
Tuesday, March 20 Lab: Working in 3D with OpenGL and Blender
Thursday, March 22 Finishing up lighting and material
Tuesday, March 27 Tectures and texture mapping (Chapter 9)
Thursday, March 29 More on Blender; keyframe animation
Tuesday, April 3 Lab: Textures and animation in Blender
Thursday, April 5 Hierarchical computer graphics
Tuesday, April 10 More on hierarchical modeling
Thursday, April 12 Some information on low-level implementation
Tuesday, April 17 Lab: Hierarchical graphics in Blender and OpenGL
Thursday, April 19 Test
Tuesday, April 24 Some advanced features of OpenGL (Chapter 10)
Thursday, April 26 Advanced rendering: ray tracing and radiosity
Tuesday, May 1 Lab: Ray tracing with POV-Ray
Thursday, May 3 A look at advanced graphics techniques
Monday, May 7 Final Exam, 7:00 PM