CMSC 427
Computer Graphics
David Jacobs
Spring 2005



In CMSC 427 we will study the basics of computer graphics.  The goal of the course is to teach fundamental principles that underlie computer graphics algorithms, and also to teach computer graphics programming.  We will focus on graphics methods used to render realistic images of scenes.  Much of this involves geometric problems such as how we represent 3D models, describe their position and motion in 3D, project them into 2D images, and render these 2D projections with pixels.  We will also consider photometric problems, such as how we represent light, model the way objects reflect light, and the path that light takes as it bounces off objects or as objects shadow each other.  We will also learn graphics programming using OpenGL, the most common computer graphics library.


Students will need prior knowledge of programming, algorithms, and math.  Computer graphics is one of the most mathematical courses in computer science.  We need to use geometry and linear algebra to discuss how to represent geometric objects and to transform and project them.  Programming projects will be done using C or C++ and OpenGL.  Prior knowledge of C or C++, and experience writing and debugging programs is essential.  No prior knowledge of OpenGL is assumed.



  • Computer Graphics with OpenGL, Third Edition
    by Donald Hearn and M. Pauline Baker
    ISBN 0-13-015390-7, Prentice Hall


  • OpenGL 1.4 Programming Guide, Fourth Edition: The Official Guide to Learning OpenGL, Version 1.4
    by OpenGL Architecture Review Board, Dave Shreiner, Mason Woo, Jackie Neider, Tom Davis
    ISBN 0-321-17348-1, Addison-Wesley

    You can download OpenGL 1.1 Programming Guide  

Course Work

There will be (probably five) problem sets assigned during the semester.  Homework is due at the start of class.   Problems due on Thursday will be subject to a late penalty of 10% if turned in 24 hours late.  They will receive a 30% penalty if turned in by 11am the next Monday, and may not be turned in later than that.  Problems due on Tuesday will receive a 10% penalty if turned in 24 hours late, and a 20% penalty if turned in by 11am on Thursday.  They may not be turned in after that.  This policy enables us to hand out solutions in a timely fashion.

There will be two exams: one midterm and a comprehensive final. These will be weighted for the final grade as: Homeworks 40%, midterm 20%, final exam 40%. 

Homework assignments are to be written up neatly and clearly, and programming assignments must be clear and well-documented. Assignments must be submitted using WebCT.

Homeworks and exams may have special challenge problems. Points from the challenge problems are extra credit. This means that I do not consider these points until after the final course cutoffs have been set.  Students participating in class discussion or asking good questions will also receive extra credit.

Academic Honesty

All class work is to be done independently. You are allowed to discuss class material, homework problems, and general solution strategies with your classmates. When it comes to formulating/writing/programming solutions you must work alone. If you make use of other sources in coming up with your answers you must site these sources clearly (papers or books in the literature, friends or classmates, information downloaded from the web, whatever).

It is best to try to solve problems on your own, since problem solving is an important component of the course. But I will not deduct points if you make use of outside help, provided that you cite your sources clearly. Representing other people's work as your own, however, is plagiarism and is in violation of university policies. Instances of academic dishonesty will be dealt with harshly, and usually result in a hearing in front of a student honor council, and a grade of XF.  (Note, this and other course policies are taken from those of Prof. David Mount).


We will follow the college policy on absences, which is:

Students claiming an excused absence must apply in writing and furnish documentary support (such as from a health care professional who treated the student) for any assertion that the absence qualifies as an excused absence. The support should explicitly indicate the dates or times the student was incapacitated due to illness. Self-documentation of illness is not itself sufficient support to excuse the absence. An instructor is not under obligation to offer a substitute assignment or to give a student a make-up assessment unless the failure to perform was due to an excused absence. An excused absence for an individual typically does not translate into an extension for team deliverables on a project.

Academic Accomodations

Any student eligible for and requesting reasonable academic accommodations due to a disability is requested to provide, to the instructor in office hours, a letter of accommodation from the Office of Disability Support Services within the first two weeks of the semester.

Course Outline

This is a tentative outline of what we will cover. 

  1. Introduction
  2. Graphics displays and Open GL
  3. Geometric Objects
  4. Geometric Transformations
  5. Projection      
  6. Display Scan Conversion
  7. Texture
  8. Color and Transparency 
  9. Sampling and Filtering
  10. Midterm
  11. Midterm recap
  12. Culling, Depth cues and Collisions
  13. Visibility Determination
  14. Illumination, Shading
  15. Ray Tracing
  16. Shadows
  17. Global Illumination
  18. Modeling
  19. Interpolation and approximation
  20. Rendering
  21. Image-Based Rendering
  22. Animation
  23. Conclusions