CPSC 324:
Fundamentals of Computer Graphics

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Fall, 2002.

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

   Monday and Friday, 10:10 -- 11:05.
         Room Lansing 300.
         
   Wednesday, 10:10 -- 11:05.
         Library Multimedia 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 three 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 Windows versions. You might want to install them 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, 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.


Labs, Homework, and Programming Assignments

Every Wednesday, we will have a "lab" in the Multimedia Classroom in the Library. 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 some 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 will contain 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 September 30, November 4, and December 9. There is no final exam, but your final project is due at the scheduled final exam period at 7:00 PM on Thursday, December 19.

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 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/index_f02. 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
Sep. 2, 4, 6 Introduction to graphics.
Lab: Basic 2D Painting with the GIMP.
Sep. 9, 11, 13 Introduction to OpenGL and GLUT.
Lab: 2D Graphics with OpenGL and GLUT.
Sep. 16, 18, 22 More on OpenGL programming; Introduction to 3D.
Lab: Basic 3D Modeling in Blender.
Sep. 23, 25, 27 Color; Image manipulation with the GIMP.
Lab: GIMP Filters and Channels.
Sep. 30; Oct. 2, 4 Color in OpenGL; More on the GIMP.
Test on Monday
Lab: GIMP Layers and Selections.
Oct. 7, 9, 11 Three-dimensional objects and transformations.
Lab: Blender Viewing and Animation.
Oct. 16, 18 More on 3D geometry; Scene description languages.
Fall Break; no class Monday.
Lab: POV-Ray Scene Description Language.
Oct. 21, 23, 25 Viewing in 3D.
Lab: 3D Graphics in OpenGL.
28, 30; Nov. 1 Lighting and materials.
Lab: Lighting and Materials in OpenGL.
Nov. 4, 6, 8 More on lighting, materials and textures.
Test on Monday
Lab: Textures in Blender and POV-Ray.
Nov. 11, 13, 15 Hierarchical modeling.
Lab: Hierarchical Modeling in Blender and POV-Ray.
Nov. 18, 20, 22 More on hierarchical modeling; Rendering.
Lab: Hierarchical Modeling in OpenGL.
Nov. 25 More on the theory of rendering.
Thanksgiving break; no class Wednesday or Friday.
Dec. 2, 4, 6 More on rendering, ray-tracing, and radiosity.
Lab: Blender Particle Systems, etc.
Dec. 9, 11, 13 Wrapping up the course.
Test on Monday
Lab: POV-Ray Radiosity, etc.
Dec. 19 Thursday, December 19, 7:00 PM,
Scheduled Final Exam Period.
Final project and Web portfolio are due.