CSSE351 - Computer Graphics

Rose-Hulman Institute of Technology Computer Science and Software Engineering Department Fall 2018-2019

Course description

This course is an introduction to computer graphics with rasterization. It also covers very basic animation and modeling. You will learn the theory behind computer graphics and implement many graphics algorithms. There will be large programming problems and written assignments due nearly every week. Smaller programs and quizzes will be assigned per topic session. A course capstone team project is required. You will be required to interact with your classmates and participate in many group projects.

Official course description: Computer graphics algorithms, hardware and software. Line generators, affine transformations, line and polygon clipping, interactive techniques, perspective projection, solid modeling, hidden surface algorithms, lighting models, shading, and graphics standards. Programming assignments and a final project are required.

Course prerequisites

CSSE 220 - OOP and design
MA 212 - matrix knowledge

Technical prerequisites

Social prerequisites


See the main course page for schedule details.


Section 1 : MTRF 7 : O259


Micah Taylor
Moench F205 - check my schedule

Course objectives

This is what you will learn through this course.

Required resources

Book: Fundamentals of Computer Graphics, 4th edition
Peter Shirley, Steve Marschner
A K Peters/CRC Press, 2009
The authors maintain a page which should list any errate known.

Hardware: Computer supporting OpenGL version 3+.


I will help with any difficulties for the above tools. For other technical problems, consult EIT.


It would be to your benefit to do the reading. You are responsible for all the material in the assigned sections of the book, whether discussed elsewhere or not.


There will be many short programs to complete individually. These should not require very much time to complete. Contact me if you get stuck! There will also be several large programming assignments. These will be completed in groups and will require significant time investment. Near the end of the term, there will be a programming project. This is an open-ended group assignment that will require you to use the algorithms and techniques from the course.

All programming assignments are to be written in C++ in a manner that ensures I will be able to run them on my machine(s). Programming assignments will be graded primarily on correctness, but style and efficiency are considered. You are not permitted to use any external libraries in your programming assignemnts.

Final Project

Starting in the seventh week of the course you will be working on a project of your choosing. You may work in groups of 3 or 4. Project presentations will likely be held Wednesday or Thursday of 10th week.


Written assignments 10%
Programs 40%
Quick code 20%
Project 30%

Every effort should be made to turn programming projects on time. Late programming projects will be penalized in accordance with the degree of lateness. No other late work will be accepted.


Collaboration is encouraged on quick code projects and written assignments. It is required on programs and the project; failure to collaborate will result in a penalty grade. Each individual is responsible for understanding the entire solution. When you collaborate, you must properly credit your collaborators and clearly indicate the extent of the collaboration.

Failure to properly acknowledge collaboration is considered cheating. Directly copying code and ideas is cheating. Cheating will result in a penalty grade on the assignment and Student Affairs will be notified. See this page for details.


Rose provides a number of resources to help you:

Concerns or Feedback

If you have any concerns about any course matters, you should find someone to contact. You can email your instructor, speak to your instructor, or leave anonymous feedback in Moodle. You can also contact the department head, Student Affairs, or another Rose employee you feel comfortable with.