CS 4204 Computer Graphics, Spring 2012
Monday, Wednesday and Friday 1:25-2:15pm at McBryde 316

Instructor: Yong Cao
Phone: (540) 231-0415
Email: yongcao@vt.edu
Office Hour: Monday and Wednesday 2:30am - 4:00pm MCB 122, and by appoinment in KWII 1124

Teaching Assistant: Ji-Sun Kim
Email: hideaway@vt.edu
Office Hour: Tuesday 1-3pm and Thursday 1-2pm at MCB 106

Course Description:

Nowadays, more and more computer applications require a rich graphics component. Graphics related industry, such as movie studio and video game company, is continuing attracting computer scientists and engineers. In universities, Computer Graphics research has also become a popular research area in most of CS departments.

In this course, we provide a theory foundation of Computer Graphics concepts and a practical training of the programming framework in Computer Graphics. We provide a basic traning to our students to prepare them to join graphics related industry. The course will also cover enough background to help students continue in Computer Graphics research in gradudate school.

We will test students with homeworks and exams for their knowledge of what they learn from the course. We will also design a series of projects to provide pratical training on Graphics problem solving and programming skills.


Upon completing this course, students should be able to

  1. Understand Basic OpenGL operations and programming framework.
  2. Understand fundamental mathematics in supporting Computer Graphics operations.
  3. Understand modern graphics processing pipeline and be able to use the knowledge in graphics applications.
  4. Be aware of state-of-art Computer Graphics related techniques, such as Shader.
  5. Design and implement complex graphics applications in OpenGL and other techiques, such as Raytracing.

Course Work

Below is an estimate of the contributions of different parts of your final grade. We reserve the right to adjust these weights, as necessary. Homework assignments and projects will be posted on Syllabus webpage of the class website.

  • Participation 5%
  • Homework Assignments 15%
  • Quizzes 10%
  • Projects (Programming Assignments) 25%
  • Midterm 20%
  • Final 25%

Late Policy for Homework Assignements: 50% deduction if turn in within 24 hours after the deadline. 100% deduction if turn in after 72 hours past the deadline.

Late Policy for Projects: 30% deduction if turn in within 24 hours after the deadline. 60% deduction if turn in within 72 hours after the deadline. 100% deduction if turn in after 5 days past the deadline.

Textbook and Reference Materials

Computer Graphics Using OpenGL (Third Edition) Francis S Hill, Jr. Stephen M Kelley Prentice Hall, 2006

Reference Materials:

  • Angel, Edward, Interactive Computer Graphics, 4th Edition, Addison-Wesley Longman, 2006.
  • The OpenGL Programming Guide - The Redbook (5th Edition) (Link to Online Book) (Link to Sample programs in the book)
  • OpenGL Utility ToolKit (GLUT) (Home Page) (Documentation)
  • Siggraph Conference OpenGL Tutorials (Home Page)
  • Nehe (Neon Helium) OpenGL Tutorials (Home Page)


  • CS 3114 Data Structure and Algorithms
  • CS 3744 Intro GUI Programming/Graphics


Without a Curve (A Fractional percentages will be rounded to the nearest decimal place.)
90- 91 A-
88- 89 B+
82- 87 B
80- 81 B-
78- 79 C+
72- 77 C
70- 71 C-
68- 69 D+
62- 67 D
60- 61 D-
< 60 F

In the event that a curve is applied to grades, it will be curved approximately as follows:

A 95% of the average score of the Top 10% of the class
B 85% of the average score of the Top 10% of the class
C 75% of the average score of the Top 10% of the class
… and so on.


The Honor Code will be strictly enforced. It is a violation to represent joint work as your own or to let others use your work; always acknowledge any assistance you received in preparing work that bears your name. You are expected to work independently unless explicitly permitted to collaborate on a particular project. It is not a violation to discuss approaches to programs with others; however, it IS a violation to use code fragments in your program that have been written by others without acknowledging the source.