home
gallery



CS545: Introduction to Computer Graphics

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 some 3D algorithms, modeling, and geometric transformations. CS 545 provides the foundation for study of computer graphics. Note: the CS 645 course covers 3D graphics - while this 545 course provides the foundations for computer graphics.

Course Prerequisites:
MA 244 (or equivalent) and good proficiency in C or C++. Also, at least enough familiarity with Linux to test a program.

Instructor:
Dr. Tim Newman
Office: TH N 364
Phone: 824-6619
Email: tnewman@cs.uah.edu

Office hours:
MTWRF 11:00-11:55 am
M 3:30-5:00 pm
or call or email for appt.
On some Fridays, office hours won't be held, so check first to be sure I'll be in

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

Supplemental (OPTIONAL) Texts:
Tcl and the Tk Toolkit by John K. Ousterhout, Addison-Wesley, 1994.

OpenGL Programming Guide, Third Edition by M. Woo, J. Neider, and T. Davis, Addison-Wesley: New York, 1999 (ISBN 0-201-60458-2). (Note: Second Edition also okay, ISBN 0-201-46138-2). NOTE: This book has an on-line errata sheet.

Library Reference Texts:
Computational Geometry for Design and Manufacture, by Faux and Pratt (should be on reserve at UAH Library).

Principles of Interactive Computer Graphics by W. Newman and R. Sproull (should be on reserve at UAH Library).

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
Mid-term Examinations (2)
200
Projects (5 or 6)
190
Final Exam
120
Homeworks, Reports, and Participation
  25
Grand Total
535

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 12 and Thursday, March 18. The comprehensive final is Tuesday, May 4, from 3:00 to 5:30 pm.


Programming Assignments:

There will be at least 5 and possibly 6 programming assignments in this course. (Please note that the last program will be due in the last week of the class.) 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.
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. Please note that I will test the 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 I will test them 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 use 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 programs will be tested under linux.

Programs are to be written in C/C++ and should use the graphics library specified on the programming assignment. We will probably use OpenGL coupled with GLUT for all programming assignments.
The programs are expected to contain reasonable documentation (including acceptable structure, variable names, etc.).

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

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 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 will be considered for part 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). Generally, no late work will be accepted, however. All program listings, papers, homework, and report(s) are due at or before the start of the class on the due date. If you will be absent, please arrange to submit your work early in person or by proxy. Electronic submissions of program sources must be received by instructor by 3:50 pm of their due date.


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, by failure of 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. Projects are NOT group efforts; they are individual efforts designed to enhance your problem-solving. 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:

Week 1
Introduction, History, OpenGL (Ch. 1, 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 and Circle Gen. and Region Fills (Ch. 3.8-3.9, 3.14-3.16)

Week 4
Regions and Pattern Fills (Ch 4.10-4.13, 3.18-3.19)

Week 5
Characters (Sect. 3.20-3.21) and Test 1

Week 6
States and Color Models, Animation I (Ch. 4.1-4.3, 13.1)

Week 7
2D Transf. (Ch. 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. 13)

Week 11
BREAK

Week 12
3D Viewing and GUIs (Sect. 11.8, Handouts)

Week 13
Tcl/Tk, Parametric and Vedtor Forms (Ch A.2, A.9)

Week 14
Break and Spline Curves (Sect. 8.8-8.10)

Week 15
Fractals (Sect. 8.23) and Devices (Ch. 2.1-2.5)

Week 16
Devices (Ch. 11.2)

Week 17
FINAL (May 4)

If time:
Anti-Aliasing (Ch. 4.17)