Dr. Benjamin Watson

Dr. Benjamin Watson

Computer Science

Phone: 919-513-0235
Instructor Website

CSC 561 Principles of Computer Graphics

3 Credit Hours

Fundamentals of the OpenGL API. 2D and 3D transformations, perspective and orthographic projection, and the mathematical foundations that underlie these concepts. Geometric primitives, clipping, depth buffering, scan conversion, and rasterization. Lighting, shadows, and texture mapping. Curves and surfaces.


Graduate standing or instructor permission.

This course requires significant programming; do not take it if you aren’t prepared for that.


This is an introductory computer graphics course, focusing on three-dimensional imagery.

If you are interested in careers in the film and gaming industries (which are becoming increasingly similar), or simply interested in how the effects wizards do what they do, you should enjoy and be well served by this course. Graphics is also used much more widely today, with visualization becoming mainstreamed in our media, and highly visual interfaces in our phones and tablets — so even if you think entertainment is a waste of time, you should find something practical here.

Student Outcomes

By the end of the course, you should be able to: 

Create computer imagery, including interactive computer graphics using APIs such as WebGL and OpenGL, shading languages like GLSL, as well as software (and recently, hardware) graphics methods such as ray tracing.

Evaluate computer imagery. When you look at computer graphics in film and computer games, you should gain an appreciation for the successful use of computer graphics technique such as texturing and lighting, as well as the failures.

Analyze computer imagery. You should be able to recognize the techniques that are used to generate these images, including rasterization, ray tracing, modeling, texturing, shading, hidden surface removal and compositing.

Course structure

Each week of this course will focus on one graphics topic, as described by the course index. At least half of each week will be a fairly traditional lecture, with you listening to me. But some of each week will be more interactive, with you performing some in-class activity and me listening to you.

This course adopts some of the studio model. (Only some, because it is difficult to adopt it fully in a class of this size). This means the course will include not only lectures, readings and several significant programming assignments; we will also regularly perform light programming, assignments and quizzes during class, often in small groups. To help you keep up with all the components of this course, we summarize it in the course index.

Activity and Grading

The proportion of the final mark associated with the different components of the course is: 

Programming 60%
Reading reactions 15%
Exercises 5%
Questions 5%
Quizzes 10%
Participation 5%


Programs have specific due dates, while quizzes occur in class, soon after the related topic is discussed. Exercises, questions and readings are due the week the related topic is scheduled, and may not be submitted more than four weeks late. At semester end, we will stop accepting work after the final period, or a week before grades are due, whichever is later. This year, that is November 20.


There are no required textbooks. We will make any required readings available to you for free and online. We will often use ACM publications, most located at the ACM digital library (NCSU students have free access on campus or off-campus with login).

Nevertheless, for those of you who like a matching textbook, you may perform many if not most of your readings in Marschner & Shirley’s Fundamentals of Computer Graphics. A limited number of copies are available free online. There are also many other books very relevant to this course. Programming references in particular will be quite useful. You can find a list of those on our course wiki.

Computer and Software Requirements

Please review minimum computer specifications recommended by NC State University and Engineering Online.

Updated 7/7/2020