Class Syllabus

CMSC427 Computer Graphics - Fall 2014


Instructor: Dr. Zia Khan (my first name)(at symbol)
Day and Time:
Monday 2pm-3:15pm
Wednesday 2pm-3:15pm
Location: Computer Science Instructional Center (CSIC) Room 1121
Instructor Office Hours: By Appointment, please email.
Teaching Assistant: Josh Bradley, jgbrad1(at)
TA Office Hours: Friday at 12pm-1pm in AVW 4103 or send him an email to arrange a time

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. Unlike previous years, this course will cover shader-based OpenGL. Shader-based OpenGL is the basis of OpenGL ES which is used widely in mobile applications. Image source: Dispicable Me by Universal Pictures and Illumination Entertainment.

Programming Assignments

You can download .PDFs and .ZIP files with templates for each assignment here when they're available. For the assignments, you'll need to have Qt 5.3.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. Also, the assignments don't involve writing much code, but they can be very challenging to debug. Please, please start early. Also, programming assignments will generally be due on Sundays by 9pm unless otherwise specified.

Piazza NETiquette

We've created a CMSC427 Fall 2014 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. The lab in Regents Garage, which is closest to CSIC, can be entered through this door.

Extra Credit Opportunities

The following are extra credit opportunities. Keep an eye out for updates.

  • (5 percent increase on programming assignment): Put YouTube video or WebGL demo that illustrates a concept in class on the Piazza web site. If I feature the video or demo in class you will get extra credit.
  • (5 percent increase on programing assignment): Put a cool demo video from the SIGGRAPH conference from the last 5 years on the Piazza web site. There are many such videos on YouTube. Explain why the demo is important in your post. If I feature your video in class, you get extra credit.
  • Additional opportunities TBD.


Required: For Reference (not required):

Grade Distribution

The grade distribution is below (revised based on poll results on Nov 13, 2013).

10% class and/or piazza participation
10% Programming Assignment 1 - Image Processing
10% Programming Assignment 2 - 2D World
20% Programming Assignment 3 - OBJ Viewer
15% Programming Assignment 4 - Shadow Mapping
15% Programming Assignment 5 - Ray Cast Rendering
10% Written Assignments
10% University Required Final Exam (open notes, so take good notes during the year)
Open notes on the final means hand written or typed notes that you wrote up during the year or prior to the final exam. You may not print out the slides or the lecture notes we provided and use them in the final.

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

With each programming assignment, you will accumulate 1 late day. You can use these late days at any time in the semester, except 6 days before grades are due. Otherwise, you will loose 5% per day the assignment is late. You do not accumulate any late days with written assignments, but you loose 10% per day 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 cutting and pasting, you will be required to use the OpenGL helper classes in the Qt Library.

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

Schedule & Written Assignments

Course Schedule and Written Assignments

The schedule will be updated frequently over the semester. Written assignments will also be posted here as well. Please check back regularly. Written assignments will also be posted below. FCG designates suggested reading from the text book Fundamentals of Computer Graphics, 3rd edition. TBD designates "to be determined." Note that written assignments will be due by the end of class on their due date. Otherwise, they will be considered late.

Date Readings Written
Week 1
9/1 NO CLASS Labor Day
9/3 L1: Course Overview, Administration, and SIGGRAPH Videos
FCG 1 Class Survey
Week 2
9/8 L2: Images
lecture_notes_20140908.txt || [slides]
FCG 3.1-3.3
9/10 L3: Image Coordinate Systems and Image Blending
lecture_notes_20140910.txt || [slides]
Visual glBlendFunc + glBlendEquation Tool
FCG 3.4
Week 3
9/15 L4: Image Interpolation and Aliasing
Moire Pattern Generator
FCG 2.6, FCG 9.1 Written
Assignment 1
9/17 L5:Image Filtering & Image Gradients
Convolution Applet
Seam Carving
FCG 9.2-9.4
Week 4
9/22 L7: C++ What You Need to Know
9/24 L6:Color and HDR Images
Intro to Color Theory Applets
Luminance HDR
FCG 23-23.2
Week 5
9/29 L8: The Qt (pronounced like "cute") toolkit
Qt5 Documentation Written
Assignment 2
10/1 L9:"Hello World" Shader-Based OpenGL
Week 6
10/6 L10:  Math Review: Vectors, Barycentric Coordinates, Matrices
Barycentric Coordinates
FCG 2.3, 2.4,
10/8 L11: 2D Transformations + GLSL Data Types
2D Transformation Game
FCG 6.1-6.1.5, 6.3 Written
Assignment 3
Week 7
10/13 L12: Scene Graphs
lecture_notes.pdf || [slides]
Scene Graph Applets
FCG 12.2
10/15 L13: Polygonal Meshes
FCG 12.1
Week 8
10/20 L14: Meshes Continued
10/22 L15: Phong Shading || [slides]
FCG 10.2
Week 9
10/27 L16:Texture Mapping || [slides]
FCG 11.2
10/29 L17:Rotations in 3D and Normals || [slides]
FCG 6.2
Week 10
11/3 L18:Quaternions || [slides]
11/5 L19: Viewing and Cameras || [slides]
Camera Transformation Demo
Week 11
11/10 L20: OBJ Viewer Review and 3D drawing in OpenGL
11/12 L21: Depth Buffering || [slides]
Week 12
11/17 L22: Shadow Mapping || [slides]
FCG 11.7
11/19 L23: Cube Mapping
lecture_notes.pdf || [slides]
FCG 11.6
Week 13
11/24 L24: Ray Casting and Intersections || [slides] FCG 4
11/26 Informal Q&A/Thanksgiving Eve
Week 14
12/1 L25: Bounding Volume Hierarchies || [slides] FCG 12.3
12/3 L26: Path Tracing and Global Illumination || [slides]
WebGL Path Tracing
FCG 24
Week 15
12/8 L27: Parametric Surfaces and Subdivision
NURBS demo
FCG 15
12/10 L28: Review for Final Exam
Example Final Exam Questions
12/18 Final Exam: Thu, 12/18, 1:30-3:30p in CSIC 1121