Unofficial - Paper syllabus from class is official (in case of discrepancies, the paper syllabus's wording is final).
Class Lecture Meeting Times:
TR 3:55-5:15 (in TH N 308).

Course Description:
Introduction to interactive graphics including historical perspectives, hardware, display rendering, 2D and 3D viewing and transformations, and 2D (and possibly some 3D) modeling. CS 545 provides the foundation for study of computer graphics. Note: the CS 645 course covers 3D graphics in depth.

Course Prerequisites:
MA 244 (or equivalent) and good proficiency in C or C++, including knowledge of data structures (CS 221 or equivalent). Also, at least enough familiarity with Linux to test a program.
Instructor:
Dr. Tim Newman
Office: TH N 364
Phone: 824-6619
Fax: 824-6239
Email: tnewman@cs.uah.edu
Office hours:
MW 10:30-11:45am; 3:30-4:30pm
T 11:15-11:45am
R 5:25-5:55pm
or call or email for appt.
Note that I try to reserve Fridays for research

Text:
Computer Graphics with Open GL, Third Edition by D. Hearn and M. Baker, Prentice Hall, 2004 (ISBN 0-13-015390-7).


Supplemental (OPTIONAL) Texts/References:
Tcl and the Tk Toolkit by J. K. Ousterhout, Addison-Wesley, 1994.
OpenGL: A Primer, Second Edition by E. Angel, Addison-Wesley, 2005.

OpenGL Programming Guide, Fourth Edition by D. Shreiner, M. Woo, J. Neider, and T. Davis, Addison-Wesley: New York, 2004 (ISBN 0-321-17348-1). (Note: Third or Second Edition also okay.
NOTE: This book has an on-line errata sheet.

Library Reference Texts:
Computational Geometry for Design and Manufacture, by Faux and Pratt.

Principles of Interactive Computer Graphics by W. Newman and R. Sproull
Grading:
The final grade will be composed of the following weights. The instructor reserves the right to make changes to this system, including the addition of an unannounced quiz.
Activity Total Points
Programming Assignments (5 or 6) 190 pts. total
Mid-term Examinations (2) 200 pts. total
Final Exam 120 pts.
Homework and Class Participation 25 pts.
Grand Total 535 pts.
The final scale (assuming 535 total pts.) will not be stricter than the following:
485 pts. for a 4.0.
435 pts. for a 3.0.
385 pts. for a 2.0.
355 pts. for a 1.0.
The University allows the awarding of ``plus'' and ``minus'' letter grades. It is the intention of the instructor to use the plus/minus grading system.

Exams:
There will be two mid-term examinations, each worth 100 points. These exams are scheduled for Thursday, February 9 and Thursday, March 16. The comprehensive final is Tuesday, May 2, from 3:00 to 5:30 pm.

Programming Assignments:
There will be at least 5 (probably 6) programming assignments. The last program will be due in the last week of the class. rograms are to be written in C or C++ using OpenGL with GLUT. Assignments will typically be made bi-weekly and take between 10 and 20 hours to complete, depending on your proficiency, efficiency, and the amount of extra features you attempt. No due date extensions can be granted; be sure to turn in what you have by the start of class on the due date. Typically, about 65% of the marks on programs are for correctness, while the rest are for documentation (about 15%), structure, and efficiency.

Final source code for programs should be submitted electronically (more details will be included in the first assignment). A printed listing must also be handed in. The submitted programs must compile and execute correctly using OpenGL and GLUT on the Linux workstations in the Laser Lab. The grader will test programs on the Department's Linux boxes and the programs must work correctly on those machines to receive full credit. Please test your program on the machines that they will be tested on! The programs are expected to contain reasonable documentation (including commenting program organization, key functions (methods) /classes, variable names, etc.). Additional details about the programming assignments will be included with the first programming assignment instructions.

One program may allow use of Tcl/Tk.

Please note that program development is possible via remote Internet access to the Linux boxes. Also, certain lab PCs are dual-boot machines, and can be booted under Linux with X-windows. Your own linux machine can be used directly for initial development, although if your Linux machine doesn't come with OpenGL, you may need to install Mesa and GLUT locally. (Mesa is a freeware OpenGL mimic and is available for Macs, PCs under both Windows and Linux, and Unix workstations. ) Alternately, your Linux box can be used to telnet to a lab Linux machine with X windows output redirected to your box. Potential telnet accesses include the machines linux, whirlwind, crusader, marauder, shrike, etc. It's also possible to develop the programs under Windows, but be sure to test programs under linux.

Programs are to be written in C/C++ and should use the graphics library specified on the programming assignment. We will use OpenGL coupled with GLUT for at least 5 programming assignments.

Mesa and Tcl/Tk are all public-domain packages that will generally run with minor porting corrections on Unix (including Linux), Macintosh, and Windows platforms.


Useful Mesa/OpenGL-related Links:
OpenGL Overview Blurb
OpenGL Architecture Blurb
OpenGL Basics FAQs
OpenGL Windows and Mac Info
OpenGL Primer
OpenGL Man Pages (v1.0) (a little primitive, but usable!)
GLU Man Pages (v1.0) (a little primitive, but usable!)
GLUT 3.7 Distributions and Info (page down for binaries)
GLUT Man Pages - links to PS files (a little primitive, but usable!)
GLUT FAQs
Mesa Frequently Asked Questions (FAQ)
Mesa User's Guide (old - may be too out-of-date)
OpenGL Fundamentals (1.1 Spec in HTML)
OpenGL Fundamentals (1.4 Spec in PDF)
OpenGL and GLUT set-up on PCs (thanks David Krum! - broken link?)
Alternate site for GLUT set-up on PCs, including VC++ setup

Program 5 Handout (PS format)

Homeworks:
A few homeworks will be assigned.

Deadlines, Late Work, and Absence:
All work, unless otherwise indicated, will be due at the start of class on the due date (you can also turn work in early). Generally, no late work will be accepted. Electronic submissions are due 5 minutes before the start of class on the due date (i.e., at 3:50 pm). If you will be absent, please arrange to submit your work early in person or by proxy. In the event of a University-wide cancellation, an assignment due date (or test date) will be the next date that the class meets. You are responsible for all material covered in the lecture, so it is in your best interest to attend each class. Also, active and effective participation in the class is a component of your grade. The instructor should be notified in advance of absence. Crisis (with documentation acceptable to the instructor) or one week's prior notice (with acceptable justification and documentation) required for consideration of exam make-up (consideration will be made on a case-by-case basis).

Academic Honesty:
The University policy on academic honesty is quite strict. This policy is discussed in the Code of Student Conduct. The instructor's academic honesty policy is very strict; dishonesty will be penalized, for example, at least by failure on the assignment in question, and quite possibly by failure in the course (in addition to any University penalties). Collaboration with other students on programming assignments is regarded as academic dishonesty. Copying code (even a portion of some code or following an approach similar to that followed by the code of others) is academic dishonesty (and plagiarism). It is inappropriate no matter what the source of the code - whether the source be from email, from the net, from a friend, a book, or any other source. It is unprofessional and dishonest to submit someone else's work as your own. Please, do not use other's code in your program unless you have received clear instructor approval in advance AND you document your source. Programs are NOT group efforts; they are individual efforts designed to enhance your problem-solving capability. For assistance on the programs, please seek help during my scheduled office hours or via email. All work submitted must be the student's own work! Some of the lab TAs also may be able to help in debugging your code. Other sorts of interaction with lab TAs regarding programming assignments are inappropriate.

Tentative Schedule of Topics with Readings from Hearn and Baker text:
 

        Week 1

        Introduction, OpenGL (Ch. 1, Sect. 2.8, 2.9, 3.1, 3.2, 11.6)

        Week 2

        Open GL, Basic Drawing Mech., Lines (Ch 3.3-3.5)

        Week 3

        Line Gen. and Region Fills (Sect. 3.5, 3.14-3.16, 4.10)

        Week 4

        Region and Pattern Fills, Characters (Ch 4.10-4.13, 3.18-3.19, 3.20)

        Week 5

        Characters and States (Sect. 3.20-3.21, 4.1) and Test 1 (Feb. 9)

        Week 6

        States and Color Models, Animation I (Sect. 4.1-4.3, 13.1, 13.10)

        Week 7

        Vectors, Matrices, and 2D Transf. (Sect. A.2, A.5, 5.1-5.8)

        Week 8

        3D Transf. and 2D Viewing (Ch. 5.9-5.17, 6.1-6.4 )

        Week 9

        Line and Polygon Clipping (Ch. 6.5 - 6.8)

        Week 10

        3D Viewing (Ch. 7.1-7.9) and Test 2 ( Mar. 16)

        Week 11

        BREAK

        Week 12

        3D Viewing and GUIs (Sect. 11.8, Handouts (or Chaps. 1-4, 15-18 in Tcl book) )

        Week 13

        Tcl/Tk, Parametric Forms and Splines (handouts, A.9, Sect. 8.8)

        Week 14

        BREAK and Splines (Sect. 8.8-8.10)

        Week 15

        Fractals (Sect. 8.23) and Devices (Sect. 2.1-2.5, 11.2)

        Week 16

        Devices (Sect. 11.2) and (if time) Animation II (Sect. 13.2-13.6)

        Week 17

        FINAL (May 2, or an University announces)

If time:
Animation II (Sect. 13.2-13.6), 3D Models (Sect. 8.1-8.2), Anti-Aliasing (Sect. 4.17)


Program Info | Courses | Research | Projects