In this course, students will learn the basic mathematical tools and computational techniques for modeling, displaying, and animating three-dimensional geometric objects. Students are expected to have basic mathematical and algorithmic maturity or be willing to remedy any deficiencies on their own time. The prerequisites for this course are:
CMPS 101 (Abstract Data Types)
MATH 21 or AMS 27 (Linear Algebra)
An existing knowledge of OpenGL is helpful, but not required.
The required text for this course is:
Interactive Computer Graphics: A Top-Down Approach using OpenGL
Edward Angel.
Fourth Edition. Addison-Wesley. [Amazon]
Although generally quite accurate, the first printing of the above text does contain several conspicuous errors. Students should carefully consult the Author's Errata.
The programming projects assigned in this course will make substantial use of the OpenGL graphics API and the GLSL shading language. Therefore, we also strongly recommend that you obtain copies of the following books:
OpenGL Programming Guide
OpenGL ARB, Woo et al.
Fifth Edition. Addison-Wesley. [Amazon]
OpenGL Shading Language
Randi J. Rost.
Second Edition. Addison-Wesley. [Amazon]
Students looking for a comprehensive reference on the subject of interactive computer graphics are directed towards:
All four texts may be purchased at the Bay Tree Bookstore.Real-Time Rendering
Tomas Akenine-Möller and Eric Haines.
Second Edition. AK Peters. [Amazon] [Official Site]
Final grades in this course will be based on performance on (1) written homeworks, (2) programming projects, and (3) exams. Grades in these individual areas will be weighted as follows:
Projects 50% Homeworks 10% Midterm Exam 15% Final Exam 25%
Letter grades will be computed at the end of the quarter and will depend somewhat on the overall performance of the class. However, any student who receives more than 95% of the total possible points is guaranteed to receive an A, and any student who receives less than 50% of the total possible points is guaranteed to fail. It should be noted that final grades will not be determined on a strict curve, and that the instructor is not averse to giving the entire class As (or Fs) should the situation warrant it.
This course contains both undergraduate and graduate students. We expect to grade both undergrads and grads on the same scale, as past experience shows that both groups perform at roughly equal levels. However, if a significant performance disparity develops, we may choose to grade the two groups separately.
Because collaboration is an essential part of learning, students are encouraged to use any and all resources available to solve homework problems and complete programming assignments. However, students must:
Clearly cite any contributing source
Write or type (not copy or paste) their own assignments
For example, students may work in groups to solve homework problems provided each student writes up her own solutions and clearly lists all group members. Likewise, support libraries that provide assigned functionality may not be linked or copied into programming assignments, but their source code may be consulted provided it is subsequently cited. It is absolutely essential to note that failure to cite any contributing source will be considered cheating regardless of the reason for the omission. Likewise, verbatim duplication of any source will always be considered plagiarism.
Course exams, in contrast, will be individual undertakings: no books, notes, calculators, or outside sources of any kind will be permitted.
Violation of any aspect of this policy will result in a failing grade for the course, and all such violations will be reported to the student's home department and the University per UC Santa Cruz Student Policies and Regulations.
This course will be using the IC College 8 lab, located in room 101. The lab machines are iMac G5s and are running Mac OS 10.4.5. All programming assignments will be graded during lab. It is important to note that you cannot receive any credit for a project if you are not present during your lab section to demo your code.
There will be three programming projects assigned in this course. As stated above, they will account for 50% of your final grade. The relative weighting of the individual projects will be as follows:
MP1 30% MP2 30% MP3 40%
We expect there to be 2-3 written homeworks assigned as well, which will cumulatively account for 10% of your final grade. Unless otherwise noted, they will all count equally.
Late work will receive absolutely no credit except in rare cases of serious and spontaneous injury or illness. If you believe that you will be unable to finish an assignment on time, you should contact the instructor at least 72 hours before the assignment is due to discuss the situation.
After a project or homework is assigned, important clarifications may be made to the directions on the initial assignment. These clarifications will be posted on the class discussion forum. It is your responsibility to monitor this forum in case any important announcements are made.