CSSE 351 - Computer Graphics
Rose-Hulman Institute of Technology
Computer Science and Software Engineering Department

General Information

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.

Student Learning Outcomes

Students who complete this course should be able to:

  1. Develop interactive computer graphics applications using a modern graphics API
  2. Model geometric objects, curves, and surfaces
  3. Project a three-dimensional scene onto a two-dimensional viewing surface
  4. Describe the mathematical foundations of computer graphics (e.g. Bresenham's algorithm, transformation matrices, projection matrices)
  5. Use shader programs to transform, light, and texture objects

Instructor

J.P. Mellor
Moench F228
877-8085 (Office)
j.p.mellor@rose-hulman.edu

Text

Interactive Computer Graphics, 8th Edition, Edward Angel and Dave Shreiner, Addison-Wesley, 2020.

Useful References

WebGL programming guide. WebGL 2.0 reference card. WebGL reference pages.

OpenGL ES 3.0 programming guide. OpenGL ES 3.0 reference card. OpenGL ES 3.0 reference pages.

Electronic Course Materials

Electronic course materials may be accessed via moodle or directly at http://www.rose-hulman.edu/class/csse/csse351/. You should visit these sites regularly. A copy of the schedule is available there along with course materials and other important information.

Reading Assignments

It would be to your benefit to do the reading assignments before they are covered in class so we can devote class time to discussing difficult ideas and algorithms. You are responsible for all the material in the assigned sections of the book, whether explicitly discussed in class or not.

Problem Sets/Quizzes/Programming Assignments

Throughout the term, there will be about eight problem sets, periodic quizzes and about eight programming assignments. Written problems should be submitted in hardcopy. Programming assignments will be submitted using svn. Solutions to the problem sets and programming assignments will be discussed in class. Solutions to the written problems will generally be posted on the course website.

All programming assignments are to be written in WebGL/JavaScript. If you would like to use some other environment for your programming assignments, you must discuss it with me and obtain approval first. In any event, programming assignments must be coded in a maner that ensures I will be able to run them on my linux machine. Programming assignments will be graded on style, efficiency, and documentation (in approximately equal proportion). All programs should have an opening comment block stating, in your own words, the problem being solved, a brief description of the algorithm used to solve the problem, your name, and the date written. Functions should also have comment blocks defining their purpose and parameters. Variable names should be meaningful and comments should identify their contents.

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 be held either in class tenth week or during the final examination period.

Grading

Problem sets and quizzes 40%
Programming projects 40%
Final project 20%
Every effort should be made to turn programming projects on time. Late programming projects will be penalized in accordance with the degree of lateness. Problem sets and quizzes will not be accepted late.

Collaboration

Collaboration is encouraged on programming projects. It is required on the term project and prohibited on problem sets and quizzes. When you collaborate, you must properly credit your collaborators and clearly indicate the extent of the collaboration. Working out a solution as a group is acceptable collaboration. Each individual is responsible for understanding the entire solution. For programming projects, this means that once a group solution has been achieved, each collaborator must code their own solution independently. Copying is not collaboration. Failure to properly acknowledge collaboration can be considered cheating.

You are expected to abide by the Rose-Hulman honor code.