
PROFESSOR: Jim Cremer, 14D MLH, 335-1713, Email: cremer@cs.uiowa.edu, Office hours: M 11-12 and by appointment
TA: Ting Liu, 101C MLH but will hold office hours in 301 MLH, email: tliu@cs.uiowa.edu, Office hours: T 3:30-5, W 2:30-3:30
22C:30, 22C:34, 22C:44, 22M:27 (or a numerical linear algebra course)

Interactive Computer Graphics: A Top-Down Approach Using OpenGL, 3rd Edition. Edward Angel, Addison Wesley, 2003
ISBN: 0201773430
OpenGL Programming Guide, Third Edition: The Official Guide to Learning
OpenGL, Version 1.2. Woo and the OpenGL Architecture Review Board, Addison
Wesley, 1999.
ISBN: 0201604582
Course grades will be based on approximately 8 homework assignments, one in-class test, and a final exam. Programming problems will be given as part of regular homework assignments; there will not be a separate grading category for programming assignments. Class participation and effort may be taken into account in determining grades in borderline situations. The components will be weighted roughly as follows
Homeworks assignments: 67% In-class test: 13% Final exam 20%NOTE:I reserve the right to change any or all of these percentages by 10 percent up or down.
The aim of the course is to develop understanding of and gain experience with the basic techniques of interactive computer graphics. There will be substantial emphasis on 3D graphics and on developing proficiency in OpenGL graphics programming. We will cover much of the material in the textbook, though not in the order presented in the book. The approximate schedule is below. It will be updated regularly, and will reflect what was actually covered and when.
| Week | Topics | Reference Material | Homework/Exams |
| 1 (8/26, 8/28) |
Introduction |
Ch 1 A | HW1 out |
| 2 (9/2, 9/4) |
Computer graphics basics |
Ch 2,3 A | HW1 due HW2 out |
| 3 (9/9, 9/11) | Vector/matrix math review Coordinates, frames, transformations |
Ch 4, Appendices B&C A | |
| 4 (9/16, 9/18) | Coordinates, frames, transformations | Ch 4 A | HW2 due, HW3 out |
| 5 (9/23, 9/25) | Transformations and viewing Projections |
Ch 4, 5 A | HW3 part 1 due |
| 6 (9/30, 10/2) | Projections Lighting |
Ch 5 A | HW3 part 2 due HW4 out |
| 7 (10/7, 10/9) | Lighting, shading, and rendering | Ch 6 A | HW4 due HW5 out |
| 8 (10/14, 10/16) | Ray tracing In-class quiz 10/16 |
Ch 13 A | HW5 due |
| 9 (10/21, 10/23) | Ray tracing Radiosity |
Ch 13 A | HW6 out |
| 10 (10/28, 10/30) | Rasterization | Ch 8 A | HW6 due, HW7 out |
| 11 (11/4, 11/6) | Rasterization andclipping | Ch 8 A |   |
| 12 (11/11, 11/13) | Hidden Surface Removal | Ch 8 A | HW7 due HW8 out |
| 13 (11/18, 11/20) | Texture, environment, and bump mapping | Ch 7 A | |
| 14 (11/25, 11/27) | No class - Thanksgiving break |   | |
| 15 (12/2, 12/4) | Curves and surfaces | Ch 10 A | HW8 due, HW9 out |
| 16 (12/10, 12/12) | Volume Rendering Review for final exam |
Ch 12 A | HW9 due |
| Final exam, Monday, 12/15, 2:15pm |
Program code in lectures will be given in C, C++, and OpenGL (or pseudo-code). For homework and programming assignments both C, C++, and perhaps Java (talk to me about it first though) are acceptable.
For developing and maintaining projects with multiple files, the Make program can save a lot of time. However, Makefiles have a peculiar syntax which can be difficult to understand. A good introduction to Makefiles can be found at GNU Make: A Program for Directing Recompilation. The section A Simple Makefile is helpful if you already know the general idea, and just want an example to work from.
The graphics API used for the course is OpenGL. The departmental Linux, HP, and SGI, and Windows machines all have OpenGL installed. If you do your work on non-departmental Hewlett-Packard workstations or PCs running Linux, you may use Mesa, essentially a free version of OpenGL. Mesa is not a "certified" OpenGL implementation, but it is widely used and will work fine for the purposes of this course.
The OpenGL API does not deal directly with windowing systems and user interaction. In order to avoid some of the pain and verbosity of X/Motif or Windows programming, we will use the GLUT (OpenGL Utility Toolkit). It is a library that provides a simple interface for windowing operations and user interaction. Issues specific to particular windowing systems or operating systems are hidden within the GLUT implementation. Thus, programs written using OpenGL plus GLUT are portable across windowing and operating systems.
NOTE: If you do the programming assignments under Windows, it is your responsibility to make sure that your code is portable (I must be able to run it on Unix as well as Windows). This is not difficult; good, clean programs will be naturally portable.
For implementing homework assignments, there are Linux PCs in 301 MLH and B5 MLH. There are HP workstations in some places in MLH (and possibly also in Schaeffer Hall). There are a few Windows PCs with 1.4 Ghz P4 and GeForce3 graphics card in 303MLH, but access to these is restricted primarly to CS graduate students.
You can access departmental Linux machines from off-site using a secure shell program (e.g. you can download a good one, SecureCRT, from the ITS software download site. Rather than trying to remember the names of particular departmental Linux machines, you should simply use "linux.divms.uiowa.edu" as the host name when you connect; our system will then automatically connect you to one of the Linux machines (not always the same one).
For assignments that contain programming components, you must submit via the 'submit' command:
Total score:
265 - 270 A+
250 - 264 A
243 - 249 A-
231 - 242 B+
215 - 230 B
200 - 214 B-
176 - 199 C+
151 - 175 C
135 - 150 C-
100 - 115 D
0 - 99 F
It is possible that some supplmentary material will be available here. Do not expect full lecture notes or transparencies however.
On departmental HPs, the GL libraries are in /opt/graphics/OpenGL/lib (include files are in /opt/graphics/OpenGL/include/GL) and the GLUT library is in /opt/graphics/OpenGL/contrib/libglut (include file is in /opt/graphics/OpenGL/contrib/libglut/GL).
This year we probably will not provide Mesa libraries. They can be gotten easily from the Net.
Homework and programming assignments, except when explicitly specified otherwise, must be done alone. It is reasonable to discuss general approaches to problem solutions or algorithm design with other students but the bulk of the work must be done alone. (For instance, in general, you should not write anything down when discussing things with others. If you can't remember it, it's probably too detailed to count as reasonable discussion of approaches.) Working out details, sharing in the write-up or sharing or copying code will be treated as a violation of the academic integrity rules (violations will most likely result in failing the course).
For additional information, see the Cheating and Plagiarism section of the College of Liberal Arts Student Academic Handbook.
If you have complaints or difficulties, please feel free to discuss them directly with me. If you have difficulties with the TA, discuss them with him first. If your complaint remains unresolved, please discuss it with me. If your difficulties are still unresolved then you should consult the Computer Science Department Associate Chair (normally it would be the DEO/Chair, but in this case that's me), Professor Alberto Segre, 335-0737, segre@cs.uiowa.edu). Your next recourse is a written complaint submitted to (for undergraduates) Fred Antczak, CLAS Associate Dean for Academic Programs (335-2633), or (for graduates) Dale Wurster, Graduate College Associate Dean for Academic Programs (335-2137).
I need to hear from anyone who has a disability, which may require some modification of seating, testing or other class requirements so that appropriate arrangements may be made. Please contact me during my office hours.
For more information about University support for students with disabilities please see this section of the College of Liberal Arts Faculty Handbook. And, please don't hesitate to contact me with any questions.