Main Page

From CS184 Graphics Fa 10

Jump to: navigation, search


CS184 is an introduction to computer graphics. It provides an overview of the algorithms, tools and techniques used to synthesize images and animations. Topics covered include 2D and 3D transformations, Bézier and B-Spline curves for geometric modeling, interactive 3D graphics programming, computer animation and kinematics, and rendering techniques including ray tracing, shading, lighting and global illumination. There will be a strong emphasis on the mathematical and geometric aspects of graphics.

Computer graphics is one of the most exciting areas of computer science. The images and animations you produce for this course will certainly impress family and friends. They may even lead to a job at Pixar or Electronic Arts. While the course will be fun, it will also require considerable implementation and understanding. The required programming, especially for the later assignments is difficult, and graphics programming requires building new skills in working with OpenGL and in debugging visual output. Our main advice is to START EARLY on the programming assignments and ask the instructor or GSIs if you run into any difficulties; we are always ready to help. Our goal is to help you successfully complete the assignments. We believe you will find the course very rewarding and come away with the ability to understand both the theory underlying computer graphics and the ability to implement this theory.

Prerequisites: Solid C/C++ programming background. Linear algebra, trigonometry, calculus and general mathematical skills. If you only know Java, you may want to consider using this course as an opportunity to become familiar with C++.



  • 12/8: Final exam review session will take place Friday Dec 10, 3-4:30pm in Soda 306.
  • 9/15: Link to video shown in class on gimbal lock.
  • 8/17: We have posted a set of resources that should be useful to you in completing assignments.


This is a rough schedule and may change as the semester progresses. My goal is to post lecture slides a day or two before each lecture.

Mon Aug 30: Introduction (Slides)

Readings: Shirley 1, Review Shirley 2, 5
Assignment 1: due by 11pm on Saturday Sep 4: Getting Started
Assignment 2: due by 11pm on Friday Sep 10: Math Review

Wed Sep 1: Color (Slides)

Readings: Shirley 21, 22.1-22.2

Sat Sep 4: Assignment 1 due by 11pm

Mon Sep 6: Labor Day Holiday

Wed Sep 8: Shading (Slides)

Readings: Shirley 10
Assignment 3: due by 11pm on Friday Sep 17: Shading

Fri Sep 10: Assignment 2 due by 11pm

Mon Sep 13: Shading Continued (Slides), 2D Transformations (Slides)

Readings: Shirley 6

Wed Sep 15: 3D Transformations (Slides)

Readings: Shirley 6
Assignment 4: due by 11pm on Friday Oct 8: Ray Tracing

Fri Sep 17: Assignment 3 due by 11pm

Mon Sep 20: Ray Tracing (Slides)

Readings: Shirley 4

Wed Sep 22: Ray Tracing Continued (Slides) BSP and AABB Trees (Slides)

Mon Sep 27: Perspective (Slides)

Readings: Shirley 7

Wed Sep 29: Perspective Continued (Slides)

Readings: Shirley 7

Mon Oct 4: Sampling and Aliasing (Slides)

Readings: Shirley 9

Wed Oct 6: Antialiasing (Slides)

Readings: Shirley 9
Assignment 5: due by 11pm on Friday Nov 5: Parametric Surfaces

Fri Oct 8: Assignment 4 due by 11pm

Mon Oct 11: Scan Conversion (Slides)

Readings: Shirley 8

Wed Oct 13: Midterm

Mon Oct 18: Scan Conversion Continued (Slides), Surfaces (Slides)

Readings: Shirley 15

Wed Oct 20: Surfaces Continued (Slides)

Readings: Shirley 15

Mon Oct 25: Splines and NURBS (Slides), Subdivision (Slides)

Readings: Shirley 15

Wed Oct 18: Clipping and Hidden Surface Removal (Slides)

Readings: Shirley 7

Mon Nov 1: Texture and Other Maps (Slides)

Readings: Shirley 11

Wed Nov 3: Texture and Other Maps Continued (Slides), Radiometry (Slides)

Readings: Shirley 20

Fri Nov 5: Assignment 5 due by 11pm

Mon Nov 8: Radiometry Continued (Slides), Global Illumination (Slides)

Readings: Shirley 24
Final Project: due by 11pm on Wednesday Dec 8: Final Project

Wed Nov 10: Animation Introduction (Slides)

Mon Nov 15: Kinematics (Slides)

Readings: Numerical Methods for Inverse Kinematics by Niels Joubert
Readings: Shirley 17
Additional material: Bill Baxter's Lecture Notes

Wed Nov 17: Motion Capture (Slides)

Mon Nov 22: Video Synthesis (Slides)

Wed Nov 24: Texture Synthesis (Slides)

Mon Nov 29: Non-Photorealistic Rendering (Slides)

Wed Dec 1: Visualization (Slides)

Mon Dec 6: Reading review period

Wed Dec 8: Reading review period

Due: Final Project by 11pm

Wed Dec 10: Final Exam Review Session 2-4:30pm in Soda 306

Mon Dec 13: Final Exam 8-11am


Course Meetings:

  • Lectures:
306 Soda Hall MW 10:30-12noon
  • Discussion Sections:
405 Soda Hall, T 10-11am
405 Soda Hall, T 11-12noon
405 Soda Hall, T 1-2pm


Office hours: 635 Soda Hall, MW 12-12:30pm, T 5-6pm and by appointment


Office hours: T 3-4pm, F 1-2pm, 514 Soda Hall
Office hours: W 1:30-2:30pm, 535 Soda Hall

Email (for all class related issues): cs184(at)
Please avoid emailing the Instructors or the GSIs directly. You will receive a response much faster if you use the email address above. You may also choose to email us anonymously.

We will be using Google Groups to host the newsgroup for this couse. To join the group please click on the link above and apply for membership. Once you are a member you can post technical questions, comments or thoughts about any aspect of the course to this group by sending email to You are responsible for reading this newsgroup as all bug announcements, fixes for assignments and lectures will be posted there.

The following textbook is required.

Your best bet is to order it online. Please order soon as readings will be assigned in the first week of class.

You may find the following books to be very useful as additional references, but they are not required.

The next two books are similar to Shirley and Marschner, largely covering the same topics but with different emphases.

Dire Warning:
Teaching a class to people who sit quietly is boring for the instructor. People who participate tend to learn more. So I would like to encourage class participation. If people appear to be interested and willing to participate then great... if not then I reserve the right to start giving really annoying little quizzes every class.

Completing Assignments

You will have a couple of written assignments which will exercise your knowledge of the theoretical basis of computer graphics. They will also be good preparation for the exams. You may discuss problems with other students but all work for written assignments must be strictly your own. Please note that we were not able to hire psychic readers this semester: if your written assignments (or exam answers!) cannot be read they will not receive points. Written assignments should be turned in under Professor Agrawala's door. (635 Soda Hall).

It is your responsibility to arrange time to turn in written assignments before the deadline. Soda Hall is locked in the evenings, nevertheless most undergrads manage to figure out ways into the building using elite ninja skills. If you lack these abilities please make sure you come to turn in your assignment before the building locks up. Failing to turn your assignment in because you were locked out of the building will incur standard lateness penalties.

Programming assignments must compile and run on the instructional machines. It is your respon- sibility to make sure that they do. The first time you have a compile/run problem the grader has the option of allowing you to correct the problem. After the first time, the assignment may not be graded.

Test your programs on the instructional machines. In the past people have turned in programs that worked on their own machine and only verified that it compiled on the instructional machines. Variations in compiler and library versions then caused bugs that were benign on their home ma- chine to manifest as runtime errors on the instructional machines. They lost points.

Programing assignments may be done in pairs. Of course, you may choose to work alone. If you work in a pair you only need to hand in one copy of any documentation required, but make sure that you indicate clearly who was included in the pair and how the task was divided up. If you work in a pair make sure that you think carefully about how you are going to divide up the programming effort between you so that you can coordinate your efforts without too much conflict.

If you work in a group for the programing assignments or final project, it is your responsibility to pick good partners. Everyone in a group gets the same score. Please don't waste time by telling me that your partner was a slacker and that there should be some adjustment made to your scores.

Instructions for turning in each assignment will be included with each of the assignments and may vary over the semester. Read them carefully. Those instructions override anything contained in this document.

Late assignments will be penalized 10% of their value plus an additional 20% for each 24 hour period that elapses before you turn them in. Example: An assignment due Monday at 1pm, turned in Monday at 1:01pm loses 10%, Tuesday at 1pm still loses 10%, and Tuesday at 1:01pm loses 30%. If you have some special circumstance would prevent you from turning an assignment in on time, you must discuss the issue with me before the deadline.

Unless you are specifically told to do so, do not email your assignments to the instructor, GSIs, or grader! It’s really, really annoying. Assignments submitted by email will be deleted unread.

This course has a reputation for somewhat demanding project work. You have been warned, no whining allowed.

Academic Honesty

I am generally happy for people to use code or ideas that they did not create themselves, but you must clearly declare what you have used from others and what was original from you. If you don't tell us anything, then we'll assume that you are presenting work as your own work. Presenting other peoples' work as your own is academic dishonesty. Collective responsibility applies: if you work in a pair, both of you will be held responsible for the resulting project.

Students who engage in dishonest activities with intent to alter their grade will receive an 'F' in the course and then be reported to the University. Do not bother asking me to give you a second chance as it is a waste of time.


Your grade will be determined by your performance on a combination of homework assignments, a final project, one midterm, and one final exam. The percentages assigned to each of these categories are:

  • Assignments (40%)
  • Project (20%)
  • Midterm Exam (20%)
  • Final Exam (20%)

Within each category, grading will be done using a point system. Each assignment, test question, and so on, will be worth some number of points. Your score in that category will simply be the number of points earned divided by the total possible.

Grading will be done on a curve. As a result if you, for example, score 10 points out of 70 on a homework, you should only be concerned if other people tended to score better than that. By the same token scoring 65 out of 70 should concern you if the rest of the class averaged 68. I try to gauge difficulty so that a very good performance is about 90%, but sometimes I under- or overestimate the difficulty of an exam or assignment. I also will adjust the curve upward or downward to account for the general performance of the class.

There will often be extra credit options on the assignments. Points awarded for those get added in after the curve has been set, so they really are extra.

How to use and edit this wiki

New to wikis? Read the Wiki editing guide.

To contribute to this wiki, you'll need to first create an account. Please use your full name as your user name.


This lectures, format and syllabus of this class are based on Graphics classes taught by James O'Brien, Ravi Ramamoorthi and Adrien Treuille. These authors have kindly provided access to their lecture slides and my own slides borrow from their earlier work.

Personal tools