CSc 433: Computer Graphics (Fall, 2002)
[ Syllabus ]


Course page

Instructor:
Kobus Barnard, Gould-Simpson 730
Office Hours: 2:00-3:00, Tuesday and Thursday, or by appointment.
Email: kobus@cs.arizona.edu

Teaching Assistant
Mingde Qiu
office hours: TBA
Email: mingde@cs.arizona.edu

Graphics Lab Facility:
Students are welcome to make use of the graphics lab in BioScience East 328. There are currently 11 workstations which are largely available for this course this semester. Anytime access with CAT card.

Prerequisites:
C SC 335 , C SC 342 , C SC 352 , Math 215

Text:
J.D. Foley, A. van Dam, S. Feiner, J. Hughes, and R. Phillips. Introduction to Computer Graphics. Addison-Wesley (1994).

Other books that my be useful:
(This list will likely get longer. Reserved access to 24 hour loan from the library could be arranged if sufficient interest)

Overview:
Computer graphics is the art and science of creating digital images from abstract computer encoded models. We will consider both the reduction of models to images (rendering) and model creation (modeling). We will also touch upon issues for both these aspects when sequences of images are to be created (animation).

This course will make extensive use of basic linear algebra and geometry. A sound understanding of using matrices to represent transformations will be very helpful. You should be comfortable thinking about problems such as: Given a point, is it in the plane of a polygon? If so, and if the polygon is convex, is the point inside the polygon? What are the points of intersection of two polygons? I will go over the requisite math as it arises, but if you are not confident with your background, you may wish to contact the instructor to discuss it.

This course will have a heavy programming component.

Topics:
This is a very tentative outline of the material to be covered. The topics and their depth will be adjusted as needed. In parenthesis I have put an estimate of the number of lectures that will be used for that general topic area. There are 29 lectures in this term. I have left 1 lecture for a midterm, 2 for review/assignment issues, 1 for a non-testable bonus lecture, and 2 for important topics I have forgotten and/or schedule slippage.

Course orientation. Introduction to graphics. Graphics primitives. Introduction to OpenGl. Event processing via callbacks for interactive graphics programs. How images are made to appear on computer monitors (2).

Basic algorithms for drawing lines, anti-aliasing, filling polygons, etc. (2).

2D Clipping (1).

2D transformations. Mapping to view-port. Homogeneous coordinates (2).

3D transformations (1).

Projecting from 3D to 2D, 3D clipping (3).

Basic color, shading and surface models (Lambertian, Phong) (1).

3D visibility (back plane culling, Z buffer, ray casting, etc) (2).

Ray tracing (1).

Modeling basics. Hierarchical modeling; Introduction to constructive solid geometry (2).

Curves and curved surfaces. Fractals (2).

Shading and surface models revisited, Gouraud shading, Radiosity (2).

Animation (1).

Color revisited (1).

Grading:
Assignments: 70% Midterm: 10% Final: 20%

I reserve some flexibility for shuffling the weights.

Assignments:
There will 4-5 programing assignments, and 1-3 written assignments. The written assignments may overlap the programing assignments in order to give students lots of time for the later.

Programming assignments will be handed in electronically, and thus will be time stamped. Material to be submitted will include source code, a makefile, an executable, and likely other files as explained in the instructions for each given assignment.

The programs must build (and the executable must run) on Linux. The installations available on the machines in the graphics lab will be used as reference systems for submitted material. If programs are developed elsewhere, or on other OS's, they should be checked on these machines before being handed in.

The programming assignments are designed to both provide experience in writing interactive graphics software, and to help students learn specific theoretical material.

Exams:
There will be two exams, one midterm (date TBA), and one final. The final is on Thursday, December 19, 2 p.m.-4 p.m. Tentatively the breakdown is 20% on the final and 10% on the midterm. The format of each of the two exams is yet to be decided. Anything from take home to completely closed book is possible.

The exams will include material which is not part of the programming assignments.

Policies:
Attendance will be noted, especially in the beginning weeks, but will not formally count towards a grade. (Extreme absenteeism may result in E-mail asking if you would like to be removed from the course with the default non-reply answer being "yes"). Students are responsible for all material presented in class. Class notes and slides will be made available, but note that these are only an overview of the material--some details will only be presented in class.

Exams must be attended at their appointed time unless you have permission in advance to do otherwise.

Assignment late policy: Late assignments will be accepted until the TA has finished with the marking, or five days late, whichever comes later. From that point onwards, assignments will not be accepted. This is a matter of courtesy to your TA. The late penalty is 5% per day.

Some attempt will be made to detect violations of the University of Arizona's academic integrity policy. Specifically, exams and written assignment must be the sole work of the student. Students may help each other with the problem analysis and general strategies relevant to the programing assignments, but detailed help or code sharing is not permitted. All code in programming assignments will be assumed to have been written by the student (or student team) unless attribution is given. An obvious exception to this rule is sample code which has been provided by the instructor for this course through the course web page tree. Such code does not require attribution (we know where it came from). It is also permissible to include with attribution code from external sources provided that the code is published, has not been solicited, and was not written for course requirement for this or a similar course given elsewhere.