CSS 450: Computer Graphics

Fall 2010

Room UW2 141, TR 3:30pm-5:30pm
Computing and Software Systems

University of Washington Bothell


Contacting Me:



Kelvin Sung

Office Hours:

Thursday:  1:00-3:00 pm

Or by appointment








We will be learning:

In this class, we will review the mathematics related to the understanding of, and discuss the fundamental areas of, computer graphics in two- and three‑dimensional spaces. After this class, students are expected to understand the basic computer graphics terminology, concepts, algorithms, and be able to design and implement 3D interactive computer graphics related programs.


NOT GOALS: We are not here to learn DirectX, OpenGL, XNA, GLUT, FLTK, MFC (Microsoft Foundation Classes), Swing, WinForm, Java, C, C++, etc. These are all transient technologies! In fact, these are so unimportant that you are free to choose any combination of the above technologies for doing your programming assignments and projects. I could care less.


GOALS: The primary goal of this class is to ensure that, given typical GUI and graphics APIs, students will be able to design and implement interactive applications based on real life user requirements. Also covered in this class are the fundamental theories and algorithms behind implementing a typical graphics API.


Prerequisites: CSS342 with a grade of C of better.



Programming Assignments (5)


Weekly Quiz


Final Project





Required Text: 

·         Essentials of Interactive Computer Graphics, Kelvin Sung, Peter Shirley, Steven Baer, Wellesley, MA., A K Peters Ltd, 2008.


Optional Reference Texts:

·         Fundamentals of Computer Graphics, third edition, Peter Shirley and Steve Marschner, Wellesley, MA., A K Peters Ltd, 2009.


Reference Texts:

·         Computer Graphics – with OpenGL, third edition, Donald Hearn and Pauline Baker, Prentice Hall, 2004.

·         Interactive Computer Graphics – A Top-Down Approach Using OpenGL, fifth edition, Edward Angel, Addison Wesley, Boston, 2008.











Event Driven Programming

Chap 1-3

Sep 30

Assign: MP #1


Graphics Programming

MVC Framework

Chap 4-6

Oct 5, 7

Due: MP #1 (Part I)


Object-Oriented Programming

Chap 7, 8

Oct 12, 14

Due: MP #1 (All)

Assign: MP #2


Transforming graphics objects

Implementation: Matrix Processors

Chap 9

Oct 19, 21

Due: MP #2

Assign: MP #3


Coordinate Transformation

Implementation: Matrix Stack

Chap 10

Oct 26, 28

Due: MP #3

Assign: MP #4


Hierarchical Modeling

Chap 11

Nov 2, 4

Assign: Final Project


Texturing and Blending

Veterans Day (no class)

Chap 12

Nov 9, 11

Due: MP4

Assign: MP5


The third dimension and the camera

Chap 13, 14

Nov 16, 18

Due: Final Project Proposal


Camera Manipulation

Thanksgiving break (no class)

Chap 15

Nov 23, 25

Due: MP #5


Rotation in 3D

Final Project: Prototype Demo

Chap 16

Nov 30, Dec 2

Due: Final Project Prototype Demo


Catch up

Dec 7, 9


Final’s Week: Final Project Demo in class

Starting at 3:30pm

Dec 14

Due: Final Project



Submitting Programming Assignments (MPs):

Submitting Source Code: You will submit your source code of each programming assignment (or machine problem, or mp) and I (and/or the grader) will run/test your submissions. We will be using the catalyst facility (refer to the course web-site for submission link). There is a folder with the corresponding mp number (and/or with Part-1) on the submission site (e.g. mp1-Part1, mp1, mp2, etc.). Before the due time of the assignment, you should:


·         Create a folder containing all the relevant source files of your mp and no more. Having extra useless/irrelevant files in that folder will result in lost credits. Please clean up both Debug and Release folders before you copy your files over. These folders can be huge and will take up unnecessary time/space.

·         WARNING: 3% of each mp’s grade will be deducted if your submission includes the contents of Debug or Release folders, or any useless files (e.g., .ncb, etc.)

·         Use your first and last name and mp# as the name of your folder. Please do not include blank space as part of the name for this folder (i.e. do use “KelvinSungMp1” as folder name, and do not use “Kelvin Sung MP1” with blank spaces.)

·         Please zip up our folder into one zip file.  Go to our course submission area and “turn in” you .zip file.

·         Submit as many times as you wish, I will only look at the last one received before the deadline. Please do not submit hard copies of your program. Let’s safe some trees, I will look at your source code electronically.


There is a “Test Turn-in” assignment for you to try things out. Please do try it before the first MP due date! If I do not see a test submission and you have trouble submitting your first assignment at the last minute, I will not help you. I can only help those who tried.


In addition, and very importantly, you should always download your submission, un-zip/compile/run to ensure your submission is correct. Remember, the grader (and/or I) will download your submission, unzip, double-click on the .sln file to compile and run. You will lose credits if anything in your submission should prevent us from automating this process.


You are responsible to ensure that the files you submitted are correct. On the due date of the mp, the corresponding directory will be close at precisely the due time. After which, you will not be able to submit your work! I will not accept submissions via emails. You are responsible to ensure that the files you submitted are correct. Minor submission mistakes (e.g. missed a small .h file) will result in 10% deduction from the assignment. Major submission mistakes (e.g. forgot to include a major .cpp file) will be treated as incomplete assignment and you will get 0% for the assignment. On a case-by-case basis, I will decide if a submission mistake is minor or major. There will be no exceptions!


If there is an emergency and/or personal difficulty, please talk to me in person. Remember to document your code, and practice the good programming skills you learned in CSS 342.


General Policies:

Weekly Quizzes: We usually have weekly short quizzes.  When we do have a quiz, an email will be sent to your @u.washington.edu email account on Friday at 6pm, and you have till the following Tuesday to go on-line and complete the quiz. You will have one hour to do the quiz (typically it should not take you more than 10-20 minutes) and once begin, you cannot save and come back to the quiz. Please find a proper internet connection for taking the quiz (e.g., take the quiz in our lab). If you take the quiz on your fancy phone and the connection was dropped during the quiz, you will receive a zero. If you do not check your @u email account, start doing that now!


Assignment Deadlines: There will be no late assignments accepted. I am actually a reasonable person, come talk to me about exceptional circumstances. You know the deadlines now please plan ahead.


Lateness to classes: It does not bother me, just don’t disturb anyone. If you want to leave early, it would be very nice if you could give me an advance warning. If that’s too much trouble, or if you forget, don’t worry, just don’t disturb anyone and leave quietly.


Commitments and such: I am usually easy going. I like relaxed classrooms for learning and will try my best to create such an environment. Please do not confuse relax environment with relax requirements. I work hard, and expect students to work as hard. On average, each percentage of your assignments should represent one-two hours of outside-of-class time. For example, MP#1 worth 10%, so on average, you will probably need about 10-20 hours to finish this assignment. Please use this as a reference and let me know if you are spending too much time on the assignments. If most of you are experiencing the same problem, then we will have to adjust the amount of work. Please seriously consider if you have the time this quarter for this class. If you do have the time, please stay in this class, I will work hard and try my best to make this class a worthwhile learning experience.


Collaboration: You are expected work on your own for the first three programming assignments. Discussions of problems with fellow students are ok, provided you do not exchange algorithms, or copy code. You may always discuss any problem with me. You are expected to subscribe to the highest standards of honesty. Failure to do this constitutes plagiarism. Plagiarism includes copying assignments in part or in total, debugging computer programs for others, verbal dissemination of algorithms, and results, or using solutions from other students, solution sets, other textbooks, etc. without crediting these sources by name. Plagiarism will not be tolerated in this class, any more than it would be in the “real world”. Any student guilty of plagiarism will be subject to disciplinary action[1]. In the “real world”, you are responsible for the security of your intellectual properties. In our case, you are responsible for the security of your source code (either on public hard disk, or on printed copies). Remember to erase your work from all public hard disks, and to dispose the hard copies of your source code with care. If someone did not break any law, and has identical solution as yours, you are a suspect of plagiarism.


Group Assignments: Programming assignments 4, 5, and the final project are group assignments. You must form groups of 2 persons to work on these assignments. Please talk to me if you wish to form a 3-member-group and you will be responsible for proposing some extra features to justify the third member. No one can work in a single person group.


Policy for forming groups: Depending on your scores from the first two programming assignments and your weekly quiz scores, I will divide all students in class into 2 or 3 sets. You can form groups only with students from the same set. For example, if you are in Set-A and your best friend is in Set-B, then the two of you cannot form a group!



If you have any problem with this course, please talk to me as soon as possible.  I would like to help in any way I could, but I have to know there is a problem. If you fall behind in this class, it will be difficult to catch up.


Special Needs

If you believe that you have a disability and would like academic accommodations, please contact Disability Support Services at 425.352.5307, 425.352.5303 TDD, 425.352.5455 FAX, or at dss@uwb.edu. They will be happy to provide assistance. You will need to provide documentation of your disability as part of the review process.


[1] This paragraph is copied in its entirety from Dr. Michael Stiber’s CSSIE-450 syllabus from Autumn of 1998.