TTh 10:55-12:10, 113 MacLean Hall

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


WHAT'S NEW (Last updated Sunday, 12/21/03)



Prerequisites

22C:30, 22C:34, 22C:44, 22M:27 (or a numerical linear algebra course)


Required Textbook

Interactive Computer Graphics: A Top-Down Approach Using OpenGL, 3rd Edition. Edward Angel, Addison Wesley, 2003
ISBN: 0201773430

Strongly Recommended (but not required)

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


Requirements and grading

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.

Syllabus and semester schedule

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
Computer graphics history and state of the art
Very basic OpenGL

Ch 1 A HW1 out
2 (9/2, 9/4)

Computer graphics basics
Open GL and GLUT

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 and
clipping
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      


Programming language, graphics API and toolkits

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.


Computers available

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


Documenting and submitting programs

For assignments that contain programming components, you must submit via the 'submit' command:

and also turn in hardcopy of:

Important Notes

Your 'submit'ed source code must compile without any modification. If it does not, or if the instructions you give for compilation are incorrect, you may receive a 0 for the assignment.

It is very important that programs be well-written and clear. Clarity, style, organization will be considered in grading programs. Your code should include precise comments where appropriate. On the other hand, avoid the approach of ritualistically filling your code with comments, especially those that are pointless (e.g. "this is a variable declaration") or imprecise (e.g. "this loop goes around and around until it figures out the answer"). Ambiguous or inaccurate comments can be worse than none at all.

Using the 'submit' command

You will use the 'submit' command to submit program code and documentation. The files that you want to turn in should be included in one directory, e.g. 'hw1files'. To submit the directory, execute 'submit hw1files' on one of the CS department's Linux or Hewlett Packard workstations. The program will then ask you the course you are submitting for. Respond with 'c151'. Then it will request a "Location:". To this, you should respond with the name associated with a particular assignment. The name will be included in the homework assignment (and will typically be something like 'hw1').

Homework Assignments


Homework and Exam Solutions


Scores and grades


Lecture supplements


Where are the OpenGL, GLUT and Mesa libraries and include files?

On SGIs, the GL (libGL and libGLU) and GLUT (libglut) libraries are in the "standard" place, /usr/lib, so you don't need to do anything special with link paths during compilation. (The include files are in /usr/include/GL.)

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.


Links to information on OpenGL, Mesa, GLUT, etc.


Interesting Graphics Links


Late assignment policy

All assignments are due at the beginning of class. Submission of any code and programs via 'submit' must also be executed by the beginning of class. Late assignments turned in within 24 hours will receive a 25% penalty, and those turned more than 24 late will receive a 50% or greater penalty. Assignments will not be accepted more than 48 hours late unless approval is obtained from Prof. Cremer before the normal due date. You must communicate with me about late assignments. Regrade requests must be made within one week of when the assignments are returned in class.

Academic integrity

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.


Complaints

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


Accommodations for students with disabilities

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.