CSCI 4229/5229 Computer Graphics, Fall 2009
Email: willem@prinmath.com
Course Objectives
The course is targeted at students with a wide range of backgrounds in Computer
Graphics, ranging from students with no previous experience to students with
undergraduate courses in Computer Graphics. The course teaches the fundamental
theory of Computer Graphics illustrated using practical applications using
OpenGL.
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, textures, shadows 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.
Grading
There is no midterm or final examination. The grade is entirely based on
weekly assignments and the course project.
The assignments for the graduate and undergraduate students are the same, but
more is expected from graduate students, especially for the class project.
Requirements
Students should be comfortable with basic linear algebra, data structures and
algorithms. It is assumed that that students have read fluency in the C
programming language since all example programs will be in C. Students should
be comfortable programming in a high level language such as C or C++ for which
OpenGL bindings are available.
Assignments
There is one assignment per week for the first eight weeks. Assignments
generally build on previous assignments in that they become more complex, and
code reuse from previous assignments will simplify successive assignments.
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. CSEL is available to
complete the assignments and for testing. Writing portable code that will run
on any operating system is stressed.
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 moodle.
Assignments are due at 11:59pm on the due date. The grace period for all
assignments is until 06:30 am the next day. Late assignments will not be
accepted unless previously arranged.
CATAE students are encouraged to submit assignments on the same schedule as on
campus students, but special accomodations will be made on an individual basis.
Course Project
The course project involves writing a significant graphics program. It is
intended to be approximately one third of the overall course load and is due by
the last day of class.
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.
A formal proposal is used to ensure that the project is appropriate in terms of
scope and degree of difficulty.
Students are encouraged to do an oral presentation of their project during
class near the end of the semester. The oral presentation is optional but
highly encouraged.
Copying
All assignments including the course project are to be completed individually.
Exceptions to this rule may be made by prior arrangement if the scope of the
project is particularly ambitious.
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.
Where code is reused, it is expected that students should make the code their
own, and improve and expand on what is provided.
Tentative Course Outline
- Week 1:
- Introduction to Computer Graphics
- Hello World in OpenGL
- Week 2:
- Drawing in 2D
- Clipping lines and polygons
- Week 3:
- Homogeneous Coordinates
- Drawing in 3D: Object Visibility
- Week 4:
- Constructing 3D objects
- Projections: Theory
- Week 5:
- Projections: Applications
- Week 6:
- Color and Light
- Week 7:
- Texture mapping
- Week 8:
- Applications of lighting and textures
- Week 9:
- Advanced lighting
- Transparency
- Week 10:
- Special effects: Fog
- Rasterization algorithms
- Anti-aliasing
- Rendering Polygons and Tesselation
- Week 11:
- Display lists
- Object models and files
- Parametric Curves and Surfaces
- Week 12:
- Parametric Objects
- Simple Shadows
- Week 13:
- Advanced Shadows
- Week 14:
- Overview of Shaders
- GLSL examples
- Week 15:
- Project presentations
Resources
- OpenGL: A Primer, 3/E by Edward Angel
- An excellent introduction to the fundamentals of OpenGL. Very readable and
a great way to get started. Inexpensive.
- The OpenGL Programming Guide 5/E The Red Book
- This is a very thorough introduction to OpenGL and is highly recommended.
The 5th edition covers OpenGL 2.0. Older versions of this book is
available online and is
generally sufficient for the course.
- The OpenGL Reference Manual The Blue Book
- The reference manual provides details of OpenGL API. Also available online.
- OpenGl Super Bible
- A comprehensive tutorial and reference. Very complete including advanced topics.
- OpenGL.org
- OpenGL documentation, code and links.
- NeHe OpenGL Tutorials
- A series of tutorials and articles covering simple to complex OpenGL
operations together with implementation for many different platforms.
Some books are also availble electronically through the library using
Safari.