[ Home ] [ Syllabus ] [ Schedule ] [ Assignments ] [ Links ]


CS 180 - Computer Graphics (Fall 2012)

This course is for students with a solid upper-level CS background who want to learn the fundamentals of computer graphics and graphics programming. If that describes you, then read on!

Syllabus contents:

  1. General Information
  2. Prerequisites
  3. Course Objectives
  4. Textbooks
  5. Computing Facilities
  6. Assignments and Grading
  7. Policy on Academic Integrity
  8. Students With Disabilities
  9. Inclass Distractions
  10. Course Feedback

General Information

Accounting details

CS 180

4 Units


Meeting times and location

Lectures: Mon/Wed 5:00-6:15pm, Phelps 1401

Discussion session: (a) Mon 3:00-3:50pm in ESB 1003 (b) Mon 4:00-4:50pm in ESB 1003



Prof. Matthew Turk (contact info)

Office Hours: Tues 9:30-11:30am or by appointment, or drop by and see if I'm available (2163 Frank Hall)


Teaching Assistant and Reader

TA: Domagoj Baričević (domagoj at cs.ucsb.edu), Office Hours: Thursday 11:00am-1:00pm, Phelps 1413

Reader: Emre Gul (contact)

Course web site


This will be used extensively. You should check the course web site regularly for updates, announcements, and any other relevant information.


Course-related email

Use cs180 at cs.ucsb.edu for most course-related email. This will go to both the instructor and the TA (and will also be flagged as priority email). If you specifically need to communicate to one of us, that's fine, but otherwise please use this alias.

Course discussion site

The course mailing list is at http://lists.cs.ucsb.edu/mailman/listinfo/cs180. This is a resource for you - use it for discussion, questions, sharing software, comments, etc.  It will be read by the instructor, but consider it primarily as an unofficial course discussion forum, largely for student-to-student discussion.


The formal prerequisite is CS 130A (Data Structures and Algorithms I), which assumes the full lower-level CS course sequence including MATH 3C and PSTAT 120A. Knowledge of Linear Algebra (at least vector and matrix math) is important. There will be a good deal of programming use C/C++ and OpenGL, so it is assumed that students are very familiar with how to program in a high-level language, how to use and link with software packages, how to use an IDE (integrated development environment) for editing, compiling, and debugging, etc. If you don't currently know C/C++ well but know (for example) Java well, that should be okay, but you may need to spend some extra time early in the quarter familiarizing yourself with C/C++. No prior use of OpenGL is assumed.

Course Objectives

What is this course about?

Overview of computer graphics principles, methods, and programming, including the 3D graphics pipeline, 3D transformations and clipping, color model, shading model, shadow algorithms, texturing, curves and curved surfaces, graphics hardware, interaction devices and techniques, the OpenGL graphics standard, OpenGL state machine, other 3D graphics libraries.

This course intends to provide students with an understanding of basic computer graphics concepts and programming. It is NOT about using CG tools (like Maya, 3DS Max, Inventor, Lightwave, Renderman, Swift3D, etc.) to create special effection, animation, videos, or flashy presentations - rather, it provides the core technical background needed in order to create such systems. (Or at least to get started.) It is also not a course on making video games, animations, simulations, etc. - but again, it will give you some of the background necessary in order to build such technologies. We will not deal with storyboarding, content creation, or any other artistic aspects of the CG world, at least not in detail. Again, this course will cover the basics of computer graphics concepts, mathematics, and programming. It is for students with Computer Science backgrounds (as per the prerequisites).

Although not formally part of the course grade, I strongly encourage class participation. This means active involvement in the course, and especially taking part in class discussion - asking questions, answering questions, offering opinions or ideas, challenging statements made by the instructor or the course materials, etc. If you just sit there and say nothing, you send the message that you're not very interested. Learning is not just about absorbing material, but about refining your knowledge, opinions and perspectives by engaging with other people.


The required textbook is Interactive Computer Graphics: A Top-Down Approach with Shader-Based OpenGL, by Angel and Shreiner, 6th edition. (No, not the 5th edition!) This should be available at the UCSB Bookstore. There is a website for the book here which you may find helpful. You will probably also need some OpenGL reference. Luckily, there is a lot of material available online, such as the official OpenGL web site. The two essential documentation resources that every serious OpenGL developer should have are the latest releases of:

You may be able to share these or use the out-of-date older versions that are freely available online (here and here), but if you expect to program in OpenGL beyond this course, I strongly recommend getting copies of your own.

There are other computer graphics textbooks that are also widely used (such as [Shirley and Marschner] and [Foley, Van Dam, et al. - new version coming soon]). See the Links page for a list of some relevant textbooks, journals, conferences, etc. Several computer graphics books will be on two-hour reserve at the UCSB library.

Computing Facilities

You may use the CSIL machines, your own machine, or any other computer you prefer, as long as it has a compatible version of OpenGL and C/C++ development tools.  If you need a computer account for this course, see Benji Dunson (benji@cs.ucsb.edu) in the Computer Science office (2106 Frank Hall).

For programming assignments, students must use C/C++ along with whatever IDE is preferred. Although they may be developed elsewhere, your solutions must successfully run on the CSIL machines (for grading).

Assignments and Grading

Grades will be based on the following criteria:


  Homework assignments
Midterm exam
Final exam

Late assignments will not be accepted - turn in what you have by the due date and time. There will be one "mulligan" opportunity in the homework assignments - i.e., an opportunity to improve your lowest score. It is wise to save this mulligan in case you really need it for a personal or family emergency.

[Updated 11/12] Here's how the mulligan will work: your lowest homework grade (of the five assignments) will be replaced by a value (0.75*g_ave + 0.25*g_bad)*points_bad, where g_ave normalized score (total points / possible points) of the other four grades, g_bad is your normalized lowest grade, and points_bad is the total possible points of your "mulliganed" assignment. So it doesn't completely eliminate the effect of a bad grade, but it reduces its negative impact significantly.

Make-up exams will not be given except under very exceptional circumstances, which must be first approved by the dean's office.

Policy on Academic Integrity

The university, the department, and this instructor all take the issue of academic integrity very seriously.  A university requires an atmosphere of mutual trust and respect.  While collaboration is an integral part of many scholarly activities, it is not always appropriate in a course, and it is never appropriate unless due credit is given to all participants in the collaboration.  This goes for both ideas and programming or other work.

Here are some examples:

For some views on academic integrity at UCSB see the Academic Integrity page of the Office of Judicial Affairs.

Summary: Academic integrity is absolutely required - dishonesty (cheating, plagiarism, etc.) benefits no one and will not be tolerated! There may be some allowable collaboration in this course, but be sure you understand when it is appropriate to collaborate and when it is not.  If in doubt, ask the instructor or the TA!

Students with Disabilities

If you are a student with a (temporary or permanent) disability and would like to discuss special academic accommodations, please first contact the Disabled Students Program (DSP) at UCSB. DSP will arrange for special services when appropriate (e.g., facilitation of access, note takers, readers, sign language interpreters). Please note that it is the student's responsibility to communicate his or her special needs to the instructor, along with a letter of verification from DSP. The instructor will be happy to make the appropriate accommodations once you work out the details with DSP; also, feel free to communicate these needs to the instructor while waiting for DSP to finalize their response.


Classroom computer/cellphone use policy - Please come to class in order to focus on the subject at hand - not on email, texting, Facebook, web surfing, etc. This is distracting to your classmates and the instructor. If you truly need to use class time to devote to these activities, please do it elsewhere.
No phones!
Cell phone policy - Please turn off your cell phone. If it rings, I get to answer it. Really.

Course Feedback

Please feel welcome to give feedback to the instructor regarding the course material, pace, assignments... whatever you wish.  Don't just stew about it - let me know!