CSE 167 - Introduction to Computer Graphics
Fall 2004, Course Web page
Instructor: Sam Buss,  Univ. of California, San Diego

Overview: This course is an introduction to 3D computer graphics, including both using OpenGL and the theory of computer graphics.   In the fall quarter, we will cover drawing primitives, 3D transformations including affine transformations, projection and perspective, Phong lighting, averaging and interpolation, texture mapping, light and color, and Bezier curves.  The course will cover both the mathematical theory of graphics and the practical uses of OpenGL and GLUT.  OpenGL and GLUT is a cross platform API that works on most common computer environments, including Windows, Macintosh, Unix, Linux.
    Prerequisites: Programming experience in C or C++ or Java is acceptable.  Math 20F (Linear Algebra) is also required.

New:  Practice Problems on line in PDF format:  1. Typeset problems.   2. Handwritten problems
    Final review session, Tuesday, Nov 7, 7:00PM, Center Hall 115.

Grading: Grading will be based on both programming assignments and on a midterm and a final exam.  It is expected that your course grade will depend about 50% on your programming projects and 50% on your written exam work.   Written homework assignments will be assigned but probably not collected and graded.  Several short in-class quizzes will be given in class on dates to be announced.
    There will be about 5-7 programming assignments, culminating with an individual final project.  You are expected to do your own programming and will not work in teams (except for limited exceptions with prior approval in the case of the final project).  Grading of projects will be individualized and one-on-one.

Sam Buss, Professor of Mathematics and Computer Science
    Email: sbuss@ucsd.edu  (this is usually the best way to contact me).
    Office: APM 6210.   Office phone: 534-6455.
    Finals Week Office Hours: Monday 11:30-12:30, Tuesday 12:30-1:30, 2:30-3:30, Wednesday 11:30-12:30.
    Office hours:  Tuesday 3:00-3:50, Thursday 10:00-10:50, Friday 10:00-10:50. (but not during final exam week).
                    I have a PC in my office and can help with programming assignments there.

Teaching Assistants:  All TA office hours held in APM B337/B349 PC lab.
    Jefferson Ng:  jwng@cs.ucsd.edu
    Morgan (Nick) Gebbie:   mgebbie@cs.ucsd.edu
    Office hours: (see signup sheet for grading hours during the final exam week)
        Monday: 1:00-3:00, 3:15-5:00 (Jefferson) and 4:00-6:00 (Nick)
        Tuesday: 10:00-11:00 (Jefferson), 3:00-5:00 (Nick), 5:00-7:00 (Jefferson)
        Wednesday: 4:00-6:00 (Nick)
        Friday: 1:00-2:00 (Jefferson), 2:00-4:00 (Nick).

Rooms and Times:
    Lectures: Tuesday and Thursday at 12:30-1:50, Center Hall 216.
    PC labs:  APM B337/B249 (two numbers for the same room) is the main lab, and where TA's hold office hours.  The computers in the back of the room are faster than the ones in the front.   Please do not use the computers for non-class items if other students need them for class work.   You should respect the use of the lab by other classes (Wednesdays until 4:00, Thursdays until 3:00.)  Door code: 1206371. (For use only by students of this class.  Please make note of it, it will not stay on the web page very long.)
                 APM 2444 is also available for your use, but the computers are slower.

Textbook:  (Required) S. Buss, 3D Computer Graphics: A Mathematical Introduction with OpenGL.  Cambridge Univ. Press, 2003.  This book is by your instructor.  So please let me know if you find typographical mistakes or other errors --- I am paying cash money for any new mistakes found in the book.  Book web site: http://math.ucsd.edu/~sbuss/MathCG.
    (Recommended) M. Woo et al., OpenGL Programming Guide, 4th  Edition. Addison-Wesley, 1999.  You will not need any of the advanced features described in the fourth edition, so the first or especially the second or third edition is also fine for the purposes of this course.  The first edition is available online for free, see below for the URL. 
    The Visual C++.NET help system also describes the basic OpenGL commands, but not the GLUT commands.  GLUT documentation is available online, see below for the URL.

Course calendar.  Updated regularly with lecture topics.

Programming projects:  Projects must be your own individual work.  Although you are allowed to seek help from others, you should be sure that you design and write your own code.  If you receive substantial outside help, you must disclose this at the time your project is being graded.  Violations of academic integrity will be treated seriously, and may result in referral to a Dean.  There are special guidelines for this CSE 167 about academic integrity. 
     Student solutions to projects 3 and 4 and the final project may be viewed on the web at

        Project #0: Due date: Oct 1 (but nothing to hand in). Learn to login and to use the Visual C++ compiler.

        Project #1: Due date: midnight October 12.   Modify the Solar system program to include a new planet, more moons and a binary sun. The background needed for this project will be explained in class Thursday, September 30 and especially Tuesday, September 5.

        Project #2: Due date: midnight October 19.  Draw an 18 sided shape, twice.  With flat colors and smooth colors.

        Project #3: Due date: midnight October 26.  Draw a scene with a surface of rotation and with geometric shapes, and simple animation.

        Project #4: Due date: midnight November 9.  Add lights to your scene from project #3.

        Final Project: Due date: Thursday, December 2.  Design and implement an individual project.

Homework assignments.  These will not be turned in, but it is highly recommended that you do them.  Selected answers will be distributed after the due dates.
    1. Homework #1.  2D transformations.  Selected answers were distributed in class.
    2. Homework #2.  3D transformations.  Includes selected answers.
    3. Homework #3: Interpolation: From the textbook.  Problems IV.1, IV.4, IV.5, and IV.7 on pages 100, 103-4, 107 and 109.  Handwritten answers in PDF format.

    3. Homework #4:  RGB/HSL and Bezier curves.  Includes answers (try to work the problems without looking at the answers).

Quizes:  Will be only a small part of the final grade.  About 3-5%.  But a great way to preview problems before the midterm and final.  Quizzes will be held in the last 15 minutes of lecture.  Topics and dates will be pre-announced.
        Quiz #1:  Answers in PDF format. Thursday, October 7th.  Topics: 2D transformations and/or "pseudo" OpenGL commands for 2D transformations.
        Quiz #2:  Answers in PDF format. Thursday, October 14th. Topics: 3D transformations, matrices and OpenGL commands.
        Quiz #3:  Answers in PDF format. Thursday, October 21st.  Transformations, especially OpenGL commands.  (No matrices!)
        Quiz #4:  Answers in PDF format. Tuesday, November 25,  Linear interpolation, Barycentric coordinates, Bilinear interpolation.

    Midterm date: Thursday, November 4.  At the usual lecture hall and time.
    Midterm Answers in PDF format.
    Review session: Tuesday, November 2.  7:00 pm.   Center Hall 113.
    Midterm review problems in PDF format.

Final exam: As in the schedule of classes: Thursday, December 9, 11:30-2:30.
Review session, Tuesday, December 7, Center Hall room 115 at 7:00 PM.
    Topics: cumulative, through degree three Bezier curves.
    Practice Problems on line in PDF format:  1. Typeset problems.   2. Handwritten problems

1. Floating point advice. For use with programming project #3.
    2. Creating a new Visual Studio C++ .NET project.

Webboard:  Online class discussion via UCSD's http://webboard.ucsd.edu web page.  Login with your network (email) id and with your PID as password.  You should be able to post messages and respond to other students' questions.  Please consider using this.

Email announcements: Will be sent to your email address as maintained by studentlink.  You should check your email on a regular basis.


Advertisements:  Various people ask to address the class with recruitments, job opportunities, etc.  I generally say no, but let them advertise down here.