Lectures cover fundamental techniques of computer graphics such as 2D and 3D viewing, transformations, drawing lines and polygons, clipping and color to advanced techniques such as lighting, shadows, textures and shaders. OpenGL is used to illustrate implementation of these techniques.
Weekly assignments comprise a sequence of increasingly complex OpenGL programs that seeks to build practical experience using OpenGL. The final assignment is a course project which is an OpenGL program of the students choosing.
Writing portable code that will run on any operating system and any machine with adequate hardware is emphasized.
The assignments for the graduate and undergraduate students are the same, but more is expected from graduate students, especially for the class project.
Assignments may be completed using a computer language and platform of the student's choice, although C or C++ on a Windows, OS/X or *NIX environment is preferred.
Assignments will be graded on a GNU/Linux system. Programs should contain #ifdef statements to facilitate compilation on this system. Students using exotic programming languages will be expected to aid the instructor in setting up a suitable environment for grading the assignments.
Assignments must be submitted via Canvas. Assignments are due at 11:59pm on the due date. The grace period for all assignments is until 08:00 am the next day. Late assignments will not be accepted unless previously arranged. Emailed assignments will never be accepted.
Distance students are encouraged to submit assignments on the same schedule as on campus students, but special accommodations will be made on an individual basis.
Potential projects would be a scientific visualization application, a game or any application with a heavy graphical emphasis. Students are encouraged to develop an application that is useful in some other aspect of their studies or work. To accommodate this students are given wide latitude in terms of platform and language of implementation. However, in order to facilitate grading, this should be done in coordination with the instructor.
The final class period is for oral presentations of the final project. All graduate students are expected to present. Presentations by undergrads are optional.
Each assignment should reflect each student's individual work. However, code reuse is permitted, including example code from the class as well as code from resources on the web. A "safe harbor" in this regard is simply a comment indicating where code from another source is reused.
Students are responsible for whatever code they turn in. Therefore if you reuse code, make sure that you understand what the code does and why it does it. Errors in borrowed code become your responsibility.
Simply turning in borrowed code is not acceptable. It is expected that if you start with somebody else's code, you should improve on it. You will primarily be graded on the improvements you make.
Code reuse without proper acknowledgement will result in an F in the class and is a violation of the Student Honor Code.