CPSC 324:
Fundamentals of Computer Graphics

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Spring, 2004.

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

   Monday and Friday, 12:20--1:15.
         Room Lansing 300.
   Wednesday, 12:20--1:15.
         Room Lansing 312 (Math/CS Computer Lab).

About CS324

Computer graphics is simply the art and 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).

Computer graphics is a very large field, and this course is only a survey of some of the most important ideas. We will cover both two dimensional and three dimensional graphics and animation. We will cover graphics programming, theory, and techniques. We will look at several sophisticated graphics application programs. The major topics that you will encounter include:

The three graphics programs -- Gimp, Blender, and POV-Ray -- are available for both Windows and Linux, and they are all free. In lab, you will use the Linux versions. You might want to install the Windows versions on your own computer. For OpenGL programming, we will be using a free Linux version known as Mesa. Mesa is a full implementation of OpenGL but doesn't use the name because of trademark issues.

As a textbook on OpenGL, we will use the OpenGL Programming Guide, fourth edition, from the OpenGL Architecture Review Board. An older edition of the book should also be OK, since there have been few changes in the parts of the book that we will use. In addition to the programming, this book also covers some of the theory of three-dimensional graphics.

Labs, Homework, and Programming Assignments

Every Wednesday, we will have a "lab" in the Math/CS Computer Lab, Lansing 312. Labs will cover OpenGL programming, as well as the graphics applications Gimp, Blender, and POV-Ray. Many of the labs will include exercises that you can start in lab and finish for homework. Some of the exercises will be fairly large-scale programming assignments that you will have several weeks to complete. Non-programming exercises will generally be due within a week after the lab.

Final Project

In addition to other assignments, there will be a final project for this course. The final project replaces the final exam and is due no later than the scheduled final exam period for this course. You will select your own final project. I encourage you to start thinking about it soon. I will have more information for you later in the term, but here are some ideas about the kinds of projects you might do:

Web Portfolio

You are required to make a Web portfolio of the work you do for this course. Your portfolio will include material from the labs and from your final project. For much of the work that you do in the labs, the only thing that you turn in for grading will be material in your Web portfolio. At the end of the term, there will also be an overall grade for the portfolio. The grading at that point will be very simple: If you have fulfilled the basic requirements, you get 6 points. Extra effort or particularly nice appearance will get you a 7 or 8. If material is missing or obviously sub-standard, you will get less than 6 points.

To begin your Web portfolio, create a directory named cs324 inside the www directory in your Linux account. Put a file named index.html in your cs324 directory. This will be the home page for your site and will be accessible on the Web at the URL http://math.hws.edu/~username/cs324/ where username is your user name. The main index.html page should have links to other pages that contain your work. Details about what should be on your pages will be forthcoming in labs and assignments. Your web portfolio must be in final form by the scheduled final exam period for this course.

I do not expect you to use very fancy HTML for your pages. However, I do expects them to be attractive and well-organized. If you don't know anything about HTML, you can find the basics in Section 6.2 of my on-line Java textbook, at http://math.hws.edu/javanotes/c6/s2.html.

Tests and Grading

There will be three in-class tests, which will be given on Monday, February 16; Monday, March 29; and Friday, April 30. There is no final exam, but the final project is due at the scheduled final exam period, 8:30 AM on Monday, May 10.

Your grade for the course will be computed as follows:

            First Test:        15%
            Second Test:       15%
            Third Test:        15%
            Labs/Homework:     30%
            Final Project:     17%
            Web Portfolio:     8%

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 any time 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 Weekly Schedule

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

Dates What's Happening
Jan. 19, 21, 23 Introduction to graphics.
Lab: Basic 2D Painting with the GIMP.
Jan. 26, 28, 30 Introduction to OpenGL and GLUT.
Lab: 2D Graphics with OpenGL and GLUT.
Feb. 2, 4, 6 More on OpenGL programming; Introduction to 3D.
Lab: Basic 3D Modeling in Blender and POV-Ray.
Feb. 9, 11, 13 Color; Image manipulation with the GIMP.
Lab: GIMP Color and Selections.
Feb. 16, 18, 20 More on the GIMP; Moving to 3D.
Test on Monday
Lab: GIMP Image Processing.
Feb. 23, 25, 27 Three-dimensional objects and transformations.
Lab: Blender Viewing and Modeling.
Mar. 1, 3, 5 More on 3D geometry; Scene description languages.
Lab: Blender Animation.
Mar. 8, 10 Viewing in 3D.
Lab: 3D Graphics in OpenGL.
Spring Break
Friday March 12 -- Sunday, March 21
Mar. 22, 24, 28 Lighting and materials.
Lab: Lighting and Materials in OpenGL.
Mar. 29, 31; Apr. 2 More on lighting, materials and textures.
Test on Monday
Lab: Materials and textures in Blender.
Apr. 5, 7, 9 Hierarchical modeling.
Lab: Hierarchical Modeling in OpenGL
Apr. 12, 14, 16 More on hierarchical modeling.
Lab: Blender particle systems, etc.
Apr. 19, 21, 23 Rendering and ray-tracing.
Lab: POV-Ray.
Apr. 26, 28, 30 More rendering and radiosity.
Test on Friday
Lab: More on POV-Ray.
May 3 Last day of class.
Wrapping up the course.
May 10 Monday, May 10, 8:30--11:30 AM,
Scheduled Final Exam Period.
Final project and Web portfolio are due.