CS 351: Syllabus

Syllabus for Fall 2011

Topics and Reading Assignments


There are many texts on computer graphics. Since this course does not focus on OpenGL, many of the available books are not appropriate. The 2nd edition of the Shirley book is appropriate for the course and has wider coverage than most. In the end, it doesn't really matter which book you choose. The Shirley is straightforward and covers most of what we cover in the course with varying degrees of depth. If you want more depth on graphics mathematics, try one of the graphics math texts, although you'll get most of what you need from the Shirley text and the lectures.

P. Shirley, Fundamentals of Computer Graphics, 2nd ed, AK Peters Ltd, 2002. (recommended text)

A. Watt, 3D Computer Graphics, 3rd Ed., Addison-Wesley, Reading, MA, 2000. (alternative text)

D. F. Rogers, Procedural Elements for Computer Graphics, 2nd Ed., McGraw-Hill, Boston, MA, 1998. (recommended text)

Hearn, D., and M. P. Baker, Computer Graphics (C Version), 2nd Ed., Prentice Hall, Upper Saddle River, NJ, 1997. (alternative text)

Foley, Van Dam, Feiner, Hughes, and Phillips, Introduction to Computer Graphics, Addison-Wesley, Reading, MA, 1994. (alternative text)

E. Lengyel, Mathematics for 3D Game Programming and Computer Graphics, 2nd ed., Charles River Media, 2003. (suggested graphics math text)

D. F. Rogers and J. A. Adams, Mathematical Elements for Computer Graphics, 2nd Ed., McGraw-Hill, Boston, MA, 1990. (suggested graphics math text)

M. Mortenson, Mathematics for Computer Graphics Applications: An Introduction to the Mathematics and Geometry of Cad/Cam, Geometric Modeling, Scientific Visualization, and Other CG Applications, 2nd ed, Industrial Press, 1999. (alternative graphics math text)

P. Schnelder, D. Eberly, Geometric Tools for Computer Graphics (Morgan Kaufmann Series in Computer Graphics and Geometric Modeling), 1st ed, Morgan Kaufmann, 2002. (alternative graphics math text)

F. Dunn and I. Parberry, 3D Math Primer for Graphics and Game Development, 1st ed., Wordware Publishing, 2002. (alternative graphics math text)


Midterm Exam 15%
Final Exam 25%
Class Participation 2%
Assignments 48%
Portfolio 10%

The programming assignments and portfolio account for over half of your grade, with exams and class participation accounting for the remainder. The grading policy on assignments is that the tasks specified explicitly in the lab description will constitute about 85% of the assignment. If you complete the specified parts of the assignment properly, and produce a high-quality writeup, it's worth up to a B+ grade. In addition, the lab description will include a variety of extensions to the assignment, or you can come up with your own. Completing one or more extensions, in addition to the specified parts of the assignment, will earn you some flavor of A.

Programming Assignments & Portfolio:

There will be 12 programming assignments during the course of the semester, each of which will be due 1 week after being handed out. As part of each assignment you will create pictures. There will always be 1-2 required pictures; you should also create 2 or more pictures of your own design for your portfolio with each assignment. If you are working in pairs, you will hand in a single writeup, but you should still create your own versions of any pictures that require creativity.

At the end of the semester, we will have a poster session during which you will present your portfolio to the other members of the class and the college community. The portfolio gives you the opportunity to push the envelope of the assignments and stretch your imagination. Grading for the portfolio will be based upon having images from each of the ten assignments along with explanations of how they were created (10% per assignment).

Late Policy: Quite simply, don't fall behind. Since every assignment will build on the previous one, it is essential that you keep up. If you don't, I don't really need to assess a penalty since you won't complete the next assignment very well either.

However, the policy will be as follows. Any assignment turned in by the due date will receive full credit for the work completed. Any assignment turned in after the due date will receive reduced credit, but no less than 50% credit for the work completed.

Collaboration on assignment concepts and ideas between groups is acceptable, but you need to understand everything you do, and your code should be your own group's code. If you use ideas from another group, you must indicate that within your code or writeup. Err on the side of caution. The worst thing that can happen is the professor noticing disturbing similarities in homeworks or assignments with no attribution of credit.


For each assignment, you will put together a web or wiki page for the writeup. The writeup should describe the assignment, explain any required theory, and present the results. Your audience for the writeup is your fellow students who might be interested in what you're doing. To hand in your code, use the Academics server.

Weekly Topics and Readings

  • Introduction, course concept
  • Representing images
  • C/C++
Shirley, Chapters 1, 3
  • Working with images
  • Graphics primitives
  • Line drawing
Shirley, Chapters 2, 3
  • Circles, Ellipses
  • Polygons
  • Filled objects
Shirley, Chapter 3
  • Rasterization
  • Scanline fill
  • anti-aliasing
Shirley, Chapters 3, 4
  • 2-D transformations
  • 2-D viewing / clipping
  • Hierarchical modeling
Shirley, Chapters 5, 6
  • 3-D transformations
  • Review
  • Midterm Exam
Shirley, Chapters 5, 6
  • 3-D Viewing
  • Orthographic projection
  • Perspective projection
Shirley, Chapter 7
  • 3-D Object models
  • Splines, Bezier curves and surfaces
  • Hidden surface removal
Shirley, Chapters 2, 8, 13, 15
  • Z-buffer algorithm
  • Shading
  • Illumination models
Shirley, Chapters 8, 9, 19, 20, 24
  • Rendering algorithms
  • Shadows
Shirley, Chapters 10, 12
  • Texture mapping
  • Animation
Shirley, Chapters 11, 16
  • Particle systems
  • Behavioral modeling
Shirley, Chapter 16
  • Ray tracing
  • Radiosity
Shirley, Chapters 10, 19, 23