Class Syllabus

CMSC427 Computer Graphics - Spring 2017

Secret Life of Pets

Instructor: Dr. Zia Khan (my first name)(at symbol)
Day and Time:
Tuesday 3:30pm-4:45pm
Thursday 3:30pm-4:45pm
Location: Computer Science Instructional Center (CSIC) Room 1122
Instructor Office Hours: By appointment and will schedule based on demand.
Teaching Assistant: Javran Cheng, javran(at)
TA Office Hours: Tuesday/Thursday 1pm-3:30pm
TA Office Hours Location: AVW 4103

Course Description

An introduction to the principles of computer graphics. Includes an introduction to graphics displays and systems. Introduction to the mathematics of affine and projective transformations, perspective, curve and surface modeling, algorithms for hidden-surface removal, color models, methods for modeling illumination, shading, and reflection. Image source: Secret Life of Pets by Universal Pictures and Illumination Entertainment.

Programming Assignments

For the assignments, you'll need to have Qt 5.7.x or newer installed. Please follow this document with instructions for Windows, Mac OSX, and Linux InstallingQtCMSC427.pdf. Do not try to build it from source. Use one of the pre-built packages with OpenGL support for your compiler.  We will be using the submit server at submit.cs unless otherwise specified.

Written Assignments

Written assignments are to be done alone.

Piazza NETiquette

We've created a CMSC427 Spring 2017 Piazza Page. Feel free to discuss homework and ask questions. We'll try to reply as quickly as possible. Also, please make sure you follow proper netiquette. Any comments or answers must be on topic, polite, and respectful of others. For more information on proper netiquette, I encourage everyone to read the following resources:

HelloWorld2D OpenGL

I've adapted a simple OpenGL program from the book Foundations of 3d Graphics. You can download it here:
You can use this program to see if your graphics card can handle the assignments (your card supports shaders). What you should see a little square with a picture of a squirrel that stretches left and right. If you click on the window and drag left and right with the mouse button held down, you should be able to control this stretching. You can also learn more about the version of OpenGL your graphics card supports by using GLview If you see nothing on the window, please see how to use the computers in McKeldin Library in the InstallingQtCMSC427.pdf document.


Grade Distribution

The grade distribution is below

15% written questions (based on lecture material and readings)
40% programming assignments
20% midterm
25% final

Grades will be available on grades.cs.

Collaboration Policy

Programming assignments will be done in pairs. Note that you and your partner are the only people that can collaborate on your code, you must give proper attribution for any ideas/code taken from the textbooks or the web. It's allowable to talk to other students about ideas and approaches, but not code. You can get support code from example programs from the web or the text book. In all of these cases, you must reference your sources (web, other student, textbook, etc). You cannot share your code with another student (not in your group) or use ideas/code without attribution. Where possible, you must use the Qt OpenGL Helper and Math Classes.

Late Policy

You will loose 5% per day the assignment is late unless granted special permission by the instructor.

Attendance Policy

Please read the UMDCP attendance policy. Please do email me if you find yourself falling behind in class. I’m here to help.

Academic Integrity

Maintaining your reputation is critical in business and in science. Please read the UMDCP academic integrity policy. There is a lot of OpenGL source code on the web. Please do not just cut and paste this code into your assignments. Please do not post your assignments online. To help prevent copying and pasting, you will be required to use the OpenGL helper classes in the Qt Library unless otherwise instructed.

Course Evaluations

I encourage you to provide me with input and feedback during the semester. At the end of the semester, you'll be asked provide formal evaluations at Your evaluations will be used to improve the class in following years.


Course Schedule

The schedule will be updated frequently over the semester.Please check back regularly. TBD designates "to be determined."

Date Lecture Assignment
Week 1
1/26 L1:Course Introduction
Week 2
1/31 L2:Introduction to C++
A1: Modify HelloWorld2D
2/2 NO CLASS Instructor at Meeting
Week 3
2/7 L3: HelloWorld2D/OpenGL
2/9 L4:Color
Week 4
2/14 L5:Images, Sampling, and Reconstruction
A2:Image Processing
2/16 L6:Images, Warping, and Compositing
Week 5
2/21 NO CLASS Instructor at Meeting
2/23 L7:Introduction to Geometry
Week 6
2/28 L8:Triangle Meshes
3/2 L9:Geometry Processing and Subdivision Surfaces
A3:Mesh Processing
Week 7
3/7 NO CLASS: Instructor at Meeting
3/9 L10:Parametric Representations
Week 8
3/14 NO CLASS: Snow Day
Week 9
3/21 NO CLASS: Spring Break
3/23 NO CLASS: Spring Break
Week 10
3/28 L11: Implicit Representations
3/30 L12:Geometric Transformations + Scene Graphs [L12:slides]
L13:Rotations + Quarternions [L13:slides]
2D Transformation Game
Week 11
4/4 L14:Viewing
Camera Transformation Demo
A4:Materials, Textures,
and Transformations
4/6 L15:Triangle Rasterization and Visibility
Week 12
4/11 L16:Direct Lighting
4/13 L17:Texture Mapping & UV Parameterization
Week 13
4/18 L18:Shadow, Normal, Environment, and Bump Mapping
4/20 L19:Addressing Scene Complexity
Week 14
4/25 L20:Ray Casting + Intersections
4/27 L21: Accelerating Intersections
A5: Ray-Triangle Intersection Acceleration
Week 15
5/2 L22:Global Illumination
5/4 L23:Animation and Skinning
Week 16
5/9 L24:Particle Systems
5/11 L25:Collisions and Spring Mass Systems
Finals Week
5/19 Final Exam, Friday, May 19 in CSIC 1122

Web Accessibility