Computer Science 424:
Fundamentals of Computer Graphics

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Spring 2010.

   Instructor:  David J. Eck  (
   Monday, Wednesday, Friday, 1:55 -- 2:50
        Room Lansing 301.

   Lab: Tuesday, 11:55 -- 1:20
        Lansing 310

About The Course

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).

Although we will spend some time on two-dimensional graphics, most of our time and effort will be spent on 3D using OpenGL. OpenGL is a graphics standard that is available on a wide variety of computers, and is implemented in hardware on almost all graphics cards. It has been used for many computer games. It can be used for programming 3D graphics on the iPhone and on Android-based phones. For the programmer, OpenGL is just a large library of subroutines. OpenGL is most commonly programmed in C, and the documentation is mostly written with the C interface to OpenGL in mind. However, OpenGL can be used from other languages. (There is, for example a project to create a JavaScript binding for OpenGL that will integrate OpenGL directly into web browsers.) In this course, we will be using Jogl, the Java interface to OpenGL.

There is no regular textbook for this course. I will be writing a set of notes as the semester progresses that will be available at In addition, many on-line resources are available for OpenGL. Links to some of them can be found on the course web page.

Computer Labs

Weekly computer labs are an essential part of this course. All homework assignments will be started in lab. The majority of these will be programming assignments. Some of the assignments will be based on using computer graphics applications such as Gimp and Blender. In all cases where we use these applications, the main point will be to help you learn computer graphics concepts. (That is, this is not meant to be vocational training.) Labs will count for 28% of the grade for the course.


In addition to the assignments associated with computer labs, the work for the course will consist of three projects.

The first project is a research project. You will pick a topic related to OpenGL (or possibly some other aspect of computer graphics), do some research on it, write a short paper, and do a 15 or 20 minute presentation to the class. This is not meant to be a major project. It is mostly a way of bringing a few extra topics into the course. Possible topics include WebGL, OpenGL for mobile devices such as Android and the iPhone, OpenGL-based computer game engines, and computer graphics techniques such as stereo viewing or Binary Space Partition trees. I expect you to complete the research project some time between the fourth and tenth weeks of the course. You can start thinking about it anytime! The research project will be worth 5% of the overall grade for the course.

The second project will be to create a Blender animation. Blender is a 3D modeling and animation program that will be used in several labs. This project will be due near the end of the semester, probably in the last week of classes. More information will be available later in the course. The Blender animation project will count for 10% of the overall grade for the course.

The third project will be to create an OpenGL application. This major programming project will be the final project for the course and will be due at the scheduled final exam period. You will be responsible for finding a project that you want to work on and for designing a program to solve that problem. The OpenGL programming project will count for 15% of the grade for the course.

Web Portfolio

Over the course of the semester, you will create a portfolio of your work on the web. Most labs will ask you to post some of your work on the web, and information on constructing the web site will be part of the second lab. I will also ask you to post your research paper on the web, or to write it as a web page in the first place.

Web portfolio assignments for the labs will be graded as part of those labs. To encourage you to work on the overall content and appearance of the portfolio, there will also be a final evaluation of it at the end of the semester that will count for 4% of the grade for the course.

Tests and Grading

There will be two in-class tests, which will be given on Wednesday, February 24 and Friday, April 21. There is no final exam, but we will have a final class meeting during part of the scheduled final exam period, which is Sunday, May 9, 7:00 -- 10:00 PM. Final projects will be due at that time, and web portfolios must be in final form.

Your numerical grade for the course will be determined as follows:

             First Test:            19%
             Second Test:           19%
             Labs:                  28%
             Web Portfolio:          4%
             Research Project:       5%   
             Blender Project:       10%
             OpenGL Project:        15%

Attendance Policy

Don't miss class. Especially, don't miss lab.

Office Hours, E-mail, WWW

My office is room 313 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 office hours and post them on my web page as soon as my schedule is determined, but note that your office visits are certainly not restricted to my regular office hours!

My e-mail address is E-mail is good way to communicate with me, since I usually answer messages within a day of receiving them.

The home page for this course is located at

Tentative Schedule

The schedule for this course is very much up in the air. Here is a very approximate schedule of topics and the time that we might spend on them:

Introduction to the Course   1 Class
2D Graphics with Java  1 Week
Overview of OpenGL and Jogl  2.5 Weeks
Geometric Modeling and Viewing  2 Weeks
Color, Materials, and Lighting  2 Weeks
Textures  1.5 Weeks
The OpenGL Shading Language  2 Weeks
Additional Topics  2 Weeks

We will begin by spending some time on Java Graphics2D, concentrating on transformations and geometric modeling. We will then move on to OpenGL and 3D, with an overview that will allow you to draw individual objects, with some basic coloring and lighting. We will then go through geometric modeling, materials, and lighting in more depth, and we will introduce texturing. Finally, we will complete our survey of OpenGL by looking at the OpenGL Shading Language, which allows you to program features that are not part of standard OpenGL processing. For the two weeks after the second test, we will work on additional topics. The choice of topics will depend on student interest.