Overview 
In CMSC 427 we will study the basics of computer graphics. The goal of the course is to teach fundamental principles that underlie computer graphics algorithms, and also to teach computer graphics programming. We will focus on graphics methods used to render realistic images of scenes. Much of this involves geometric problems such as how we represent 3D models, describe their position and motion in 3D, project them into 2D images, and render these 2D projections with pixels. We will also consider photometric problems, such as how we represent light, model the way objects reflect light, and the path that light takes as it bounces off objects or as objects shadow each other. We will also learn graphics programming using OpenGL, the most common computer graphics library. 
Background 
Students will need prior knowledge of programming, algorithms, and math. Computer graphics is one of the most mathematical courses in computer science. We need to use geometry and linear algebra to discuss how to represent geometric objects and to transform and project them. Programming projects will be done using C or C++ and OpenGL. Prior knowledge of C or C++, and experience writing and debugging programs is essential. No prior knowledge of OpenGL is assumed. 
Text 
Required:
Recommended:

Course Work 
There will be five problem sets assigned during the semester. Homework is due at the start of class. Problems due on Thursday will be subject to a late penalty of 10% if turned in 24 hours late. They will receive a 30% penalty if turned in by 11am the next Monday, and may not be turned in later than that. Problems due on Tuesday will receive a 10% penalty if turned in 24 hours late, and a 20% penalty if turned in by 11am on Thursday. They may not be turned in after that. This policy enables us to hand out solutions in a timely fashion.
Students will each give a 15 minute presentation on animation and graphics in the real world. They will do some research to learn about techniques that are used to produce animation and graphics techniques in films, games, or other places where graphics appear. For example, a student might look into how clothing was animated in The Incredibles. Presentations should focus on describing the specific techniques used. Students must confirm their choice of a topic with me at least two weeks before their presentation. There will be two exams: one midterm and a comprehensive final. These will be weighted for the final grade as: homeworks and presentation 40%, midterm 20%, final exam 40%. Homework assignments are to be written up neatly and clearly, and programming assignments must be clear and welldocumented. Homeworks and exams may have special challenge problems. Points from the challenge problems are extra credit. This means that I do not consider these points until after the final course cutoffs have been set. Students participating in class discussion or asking good questions will also receive extra credit. 
Academic Honesty 
All class work is to be done independently. You are allowed to discuss class material, homework problems, and general solution strategies with your classmates. When it comes to formulating/writing/programming solutions you must work alone. If you make use of other sources in coming up with your answers you must cite these sources clearly (papers or books in the literature, friends or classmates, information downloaded from the web, whatever). It is best to try to solve problems on your own, since problem solving is an important component of the course. But I will not deduct points if you make use of outside help, provided that you cite your sources clearly. Representing other people's work as your own, however, is plagiarism and is in violation of university policies. Instances of academic dishonesty will be dealt with harshly, and usually result in a hearing in front of a student honor council, and a grade of XF. (Note, this and other course policies are taken from those of Prof. David Mount). 
Absences 
We will follow the college policy on absences, which is: Students claiming an excused absence must apply in writing and furnish documentary support (such as from a health care professional who treated the student) for any assertion that the absence qualifies as an excused absence. The support should explicitly indicate the dates or times the student was incapacitated due to illness. Selfdocumentation of illness is not itself sufficient support to excuse the absence. An instructor is not under obligation to offer a substitute assignment or to give a student a makeup assessment unless the failure to perform was due to an excused absence. An excused absence for an individual typically does not translate into an extension for team deliverables on a project. 
Academic Accomodations 
Any student eligible for and requesting reasonable academic accommodations due to a disability is requested to provide, to the instructor in office hours, a letter of accommodation from the Office of Disability Support Services within the first two weeks of the semester. 