Class Syllabus

CMSC427 Computer Graphics - Fall 2015


Instructor: Dr. Zia Khan (my first name)(at symbol)
Day and Time:
Tuesday 2pm-3:15pm
Thursday 2pm-3:15pm
Location: Computer Science Instructional Center (CSIC) Room 1121
Instructor Office Hours: By appointment and will schedule based on demand.
Teaching Assistant: Josh Bradley, jgbrad1(at)
TA Office Hours: Friday, 2-3pm in 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: Minions by Universal Pictures and Illumination Entertainment.

Programming Assignments

For the assignments, you'll need to have Qt 5.5.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.

Piazza NETiquette

We've created a CMSC427 Fall 2015 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, you can use the UMD Apple iMac Compute Labs for your assignments.


Grade Distribution

The grade distribution is below

5% class and Piazza participation
60% assignments and projects
35% exams

Grades will be available on grades.cs.

Collaboration Policy

You must write your own code, and 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. 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 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.

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 science and in business. 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 and Written Assignments

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

Date Lecture Assignment Release
Week 1
9/1 L1:Introduction, Logistics, Rendering Intro [slides]
9/3 L2:Intro to C++/Qt/HelloWorld2D [slides C++] [slides Qt]
A1: Modify HelloWorld2D
Week 2
9/8 L3:HelloWorld2D (2nd try), Color [slides color]
9/10 L4:Images:  Intro, Sampling, and Reconstruction [slides, images]
Week 3
9/15 L5:Images: Warping and Compositing [slides,images] A2: Image Processing
9/17 L6:3D Models, Intro and Polygon Meshes [slides,modeling]
Week 4
9/22 L7:Subdivision Surfaces [slides,subdivision]
9/24 L8:Parametric Curves and Surfaces [slides, parametric]
Week 5
9/29 L9:Modeling with Implicit Surfaces [slides, implicit] A3: Mesh Processing
10/1 L10:Geometric Transformations + Scene Graphs [slides, transforms]
2D Transformation Game
Week 6
10/6 L11:Rotations + Quarternions[slides,rotations]
10/8 L12:Viewing + Vertex Shaders [slides, viewing]
Camera Transformation Demo
Week 7
10/13 L13:Midterm Review + Extra Time
[midterm study]
10/15 L14:Midterm Exam
Week 8
10/20 L15:Rasterization, Depth, Clipping
[raster visible, slides]
10/22 L16:Light and Matter Interaction
[light matter, slides]
A4: Materials, Texture, Shadow
Week 9
10/27 L17: Assignment 4 Discussion & Phong Shading
[light matter, slides]
10/29 L18:Texture Mapping & Mesh Parameterization
Week 10
11/3 L19:Assignment #4 Discussions
11/5 L20:Shadow, Normal, Environment, and Bump Mapping
[texture tricks,slides]
Final Project Guidelines
Week 11
11/10 L21: Addressing Scene Complexity
[scene complexity,slides]
11/12 L22: Ray Casting + Intersections
[ray cast, slides]
A5: Ray Tracing
Week 12
11/17 L23:Accelerating Intersections
[bvh, slides]
11/19 L24:Global Illumination
[global, slides]
Week 13
11/24 Informal Help on A5 and Final Project
11/26 NO CLASS Thanksgiving
Week 14
12/1 L25:Animation + Skinning [anim/skinning, slides]
12/3 L26:Particle Systems + ODEs [particle/sode, slides]
Week 15
12/8 L27: Mass Spring Models + Implementing Particle Systems + Collision Detection [mass spring, collisions, slides]
12/10 L29:Final Exam Review + Final Project Help
12/15 Final Project Code + Writeup Due at 11:59pm
12/17(Thursday) Final Exam at 10:30am-12:30pm in CSIC 1121