Class Syllabus

CMSC427 Computer Graphics - Fall 2017

Alex Roman on Vimeo

Instructor: Dr. Roger D. Eastman (first initial last name)(at symbol)
Day and Time:
Tuesday 3:30pm-4:45pm
Thursday 3:30pm-4:45pm
Location: Computer Science Instructional Center (CSIC) Room 1121
Instructor Office Hours: MW 1-4 pm, T/Th 9-12 am, and by appointment.
Teaching Assistant: Patrick Owen, powen12 at terpmail dot umd dot edu
TA Office Hours: T/Th 12:00-1:45 PM, W 10:00-12:00 PM
TA Office Hours Location: A.V. Williams 4101

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. Video source: Fully CGI video "The Third & The Seventh" by Alex Roman

The link for the class schedule is at the bottom of the page: Class schedule and initial presentations. On the schedule are first day presentations for an idea of course content.


There will be no required textbook. Notes will will be distributed to supplement lectures. Recommended textbooks, for which readings will be posted, are:

  • OpenGL Superbible (6th edition), by G. Sellers, R. S. Wright, and N. Haemel, 2013.
  • Computer Graphics Programming in OpenGL with Java, V. Scott Gordon and John Clevenger, Mercury, 2017
  • Fundamentals of Computer Graphics, Fourth Edition 3rd Edition, by Steve Marschner and Peter Shirley, AK Peters 2015


Linear algebra (MATH 240) and data structures (CMSC 420). You should be able to program with simple data structures, solve simple polynomials and handle the basics of linear and vector algebra, including differential calculus and trigonometry. We will review required math techniques. A major theme of the course is connecting mathematical concepts with their implementation in programs.

We will use Java and OpenGL for labs and projects, including the Java based programming system Processing ( If you are interested and able to support yourself in another language (such as C++ with QT) check with the instructor.

Assignments, workload and grading

Assignments in the class will include written homeworks, lightweight programming labs, and three major projects. Exams will count for 30% points, labs and projects for 45% and homework for 25%.

Homeworks are due at the start of class and not accepted late, but the low grade will be dropped and all student will have one pass to hand in a homework one class period late. Labs and projects will be typically due by by midnight of the due date, with a 15% penalty if two days late, and 20% for each day past that.

Grades will be available on grades.cs.

Getting assistance

Feel free to drop in during office hours, or for short questions at other times (I’m in class all T/Th afternoon, and generally not in on Fridays). If the stated office hours don’t work then check with me on alternative times. Making appointments by email can be useful. I will respond to email questions on the class, but not to directly assist on assignments, certainly not at the last minute. We will use Piazza for general assignment questions.


We've created a CMSC427 Fall 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:

References and software

The web has many useful references for computer graphics principles and systems, as well as a number of open sources software libraries and applications. Some we will use, some you may simply find interesting.

Attendance Policy

Attendance is not required for regular lecture days as long as you maintain a passing grade. If your work is suffering, however, I will keep track and require attendance. If you miss a quiz for a valid, documented reason I will substitute for it the average of other tests.

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. Unless otherwise specified in an assignment, all work should be your own. You can check with classmates on the specifications of problems on assignments, so you understand what is required, but solving the problem should your sole work. If you get outside help from others, web information, books, cite your sources. Representing others’ work as your own is clear plagiarism and will be dealt with under university policies.

Setting up your personal computers for class programming assignments can be a challenge in graphics, given the frequent complexity of the libraries and hardware involved. Getting assistance from in or outside the class on getting vanilla, starter lab and project code installed and running is NOT cheating for the purposes of this class. How to configure graphics libraries is not a graded part of this class.

Adherence to general campus policies

When appropriate, for items not listed here we will go by campus policies as set at

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: 8/29 L1: Intro and parametric curves (PC)
Hw1:Graphics Resume docx (due 8/31)
Hw1:Graphics Resume pdf (due 8/31)
8/31 L2:Polylines and polgyons
[Polyglines] [Processing] [GLprimitives]
[ProcessingSketches] [GLPrimSketches] [Reading: Pearson intro]
Hw2 Parametric curves (due 9/5))
Lab0 Generative art (due 9/7)
Week 2: 9/5 L3: Vectors
[Handouts] [Line Intersection1] [Line Intersection2]
9/7 L4: Meshes in 3D
[A Bunny]
Hw3 Vector (due 9/11))
Lab1 Validating Polygons (due 9/19)
Week 3: 9/12 L5: Meshes continued
[Outline] [ParametricSurfaces]
NEW[FrameForCurve] [SurfaceNormal] [MeshFromSurface]
Hw2 solutions
9/14 L6: Transforms
Dot Product Exercises (NOT due)
Week 4: 9/19 L7: Transforms and perspective
9/21 l8: Transforms and OpenGL pipeline
Dot Product Exercises solutions
Lab2 Sketches
Week 5: 9/26 L9: Rasterization
9/28 L10: Basics of shading
[Intro to Shading]
Lab3 Camera (due 10/10)
Lab3 Source
MicroLab: OpenGL(try by 10/3)
Hw4 Transformations (due 10/3))
Hw3 solutions
Week 6: 10/3 L11: Shading II
10/5 L12: Shading and review
[Camera examples] [Diffuse shading notes]
[Camera motion notes]
Quiz 1 prep
Week 7: 10/10 L13: Quiz 1 + shading Quiz 1 prep SOLUTIONS
10/12 L14: Modeling revisited
Lab 4 DUE Thursday Oct. 19th
HelixFly.pde (for Lab 4)
Hw5 DUE Tuesday Oct. 17th
Quiz 1 solutions
Week 8: 10/17 L15: Scene modeling (SM) I
Scene Management
RobotArms.pde (for lecture)
10/19 L16: OpenGL and JOGL
OpenGL/JOGL Programming
OpenGL Shader Programming
OpenGL/JOGL Notes (A)
Midterm prep
OpenGL examples
Lab5 (due TBD)
Hw4 Solutions
Week 9: 10/24 L17: Scene modeling, culling
Quick notes: culling and texture
Midterm practice AA
Hw5 Solutions
10/26 L18: MIDTERM
Week 10: 10/31 L19: Advanced rendering (AR)
11/2 L20: Advanced rendering: Texture
Texture mapping
Project 1
Week 11: 11/7 L21: Advanced rendering: Global
Global illumination
Midterm solutions
Project 1 shaders
11/9 L22: Advanced rendering
Week 12: 11/14 L23: Advanced rendering Concepts
Advanced local shading
11/16 L24: Advanced rendering in OpenGL
Week 13: 11/21 L25: 3D Data capture
3D data capture
11/28 L26: Advanced modeling: curves
Parametric curve PPT
Notes on parametric curves
Bezier curve in Processing
12/30 L27: Advanced modeling: surfaces
Parametric surfaces PPT
Hw 6 curves
Lab 6 Frenet
Lab 7 3D capture
Week 15: 12/5 L28: Advanced modeling: fractals
Fractal presentation
Parametric surfaces PPT
12/7 L29: Review for final!
Final prep Version 1

Finals Week
12/19 Final Exam, Tuesday, Dec 19 in CSIC 1121
Time 10:30 AM - 12:30 PM

Practice final
Practice final solutions