Math 155A - Computer Graphics - Winter 2012

Course Web Page - Math 155A - Introduction to Computer Graphics
Winter 2012  -  Instructor: Sam Buss   -  Univ. of California, San Diego

Announcements:
    CANCELED DUE TO PNEUMONIA: Final review session: Tuesday, March 20 at 3:00pm in APM B412.
    Final exam: Wednesday, March 21 at 11:30am.
    Final project demos: Wednesday, March 21, 2:30pm in APM B349.
    Final project in-person grading: In office hours with Professor Buss, or with Professor Buss or TA Janine LoBue immediately following the final project demo session. Or, by email appointment with Professor Buss. MUST be done by Thursday, March 22.

Overview: This course is an introduction to 3D computer graphics, including both the use of OpenGL programming and the mathematical theory of computer graphics. Topics will include OpenGL 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: Some kind of programming experience, but in any of C or C++ or Java is certainly acceptable. Math 20F (Linear Algebra) is required.

Instructor:
Professor of Mathematics and Computer Science
    Email: sbuss@math.ucsd.edu (this is usually the best way to contact me).
    Office: APM 6210.   Office phone: 534-6455.
    Office hours: Monday and Wednesday 4:00-4:50, Tuesday 2:00-2:50, Friday 1:00-1:50. (No Wednesday or Friday office hours during exam week.)
    I have a PC in my office and can help with programming assignments and do grading there.

Teaching assistant:
   Janine LoBue.
   Office hours: In APM B349.
       Monday 11-12,
       Wednesday 2-4, and
       Thursday 2-3.
   Email: jlobue@math.ucsd.edu.

Class meetings: 12:00-1:00, Monday-Wednesday-Friday. Solis Hall 111.
The scheduled section times on Tuesdays at 6:00pm are optional, and are likely to be completely canceled in favor of extra contact time in the computer lab. (Subject to student requests and to what works well for the course.)

PC labs: APM basement rooms B349A, B325, B432. The TA, Janine, will hold office hours in APM B349A. See above for the office hour times.
Grading, and presentation of final projects, will take place in the labs.
Lab Reservations The computers in APM B349 are reserved for Math 155A students during the Wednesday 2-4 office hours (but not the Monday or Thursday hours). This means that, if there is no other computer available, you may ask non-Math155A students to vacate a computer for you. If there are issues, the reservations can be seen online at this ACMS web page.
After hours door code: 0654054. (For Math 155A students' use only.)

Grades. Grades will be based on a combination of homework, possibly quizes, a midterm, a final and programming assignments. Your course grade will be based approximately 50% on your programming projects and 50% on your written work. There will be some homework assignments, and possibly some in-class quizes if I decide they are helpful.

There will be about 5-7 programming projects, culminating with an individual final project. You are expected to do your own programming and will not work in teams. Grading of projects will be individualized and one-on-one.

Programming assignments must work on the PC lab computers for grading purposes. If you do your assignment at home, you must port it to the class PC lab computer so that it will run there under Visual C++. (You must do this by the due date of the assignment.) It is also possible to have projects graded at Professor Buss's office hours. For this, please copy (ftp or scp or ssh) your entire project directory to ieng6.ucsd.edu, where your instructor will have access to it. This copy on ieng6 should be made by the due date.

Programming assigments.
    Project #0: Getting started with OpenGL and Visual C++. Due Tuesday, January 17.
    Project #1: Octahedra project. Simple geometry and shading, with animation. Due Wednesday, January 25, midnight.
    Project #2: Solar system project. Update an animated solar system. Due Wednesday, February 1, midnight.
    Project #3: Wireframe scene: "Sombero" and Initials. Due Wednesday, February 8, midnight.
                        Addendum on the (sin x)/x shape.
                   Students' web page project reports.
    Project #4: Materials and lights added your project 3 scene. Due Wednesday, February 15, midnight.
                   Students' web page project reports.
    Project #5: Create a scene with a texture map. Due Wednesday, February 29, midnight.
    Final Project: Create an individual OpenGL project. Due Saturday, March 17, midnight.
                   Students' web page project reports.

Homework assigments. May be handed in during class, or in the APM basement dropbox..
    Homework 1. Due Wednesday, January 25. Regular Octahedra and Linear and Affine Transformations.
    Homework 2. Due Friday, February 17, 3:00pm. Normals. Interpolation.
          Homework answers (PDF, scanned). Please report any errata to Professor Buss.
        Errata:
          Problem #3: An answer was given for α=-1, instead of α=-2. At α=-2, the point is 〈-10,6〉
          Problem 5. (Typo). The second β should be y.
          Problem 8 (c,d). Correct answers are:〈1, 10/9, 1/3〉 and 〈4/3, 5/9, 1/3〉
    Homework 3. Due Wednesday, March 14, 5:00pm. RGB, HSL, non-rational and rational Bezier curves, Bezier patches, Catmull-Rom splines.
          Homework answers (PDF, scanned).

Midterm. One midterm, Wednesday, February 22, in class.
Topics: Mathematics topics, including (pseudo)OpenGL commands for transformations. Midterm review session: Tuesday, February 21 at 4:00pm in APM 7218.
    Study aids: Homeworks 1 and 2. See answers to homework 2 online above.
    Materials from past CSE 167 courses is also available. These include the following from a 2004 course: (not all items in here would be covered by our midterm): First, and second, and third, and fourth, and fifth, and sixth.

Final exam. Wednesday, March 21, 11:30am-2:30am. The exam will be cumulative. The final exam can contain topics from all material covered in class during the quarter, with the exception of the following: Bezier Curves of Degree 4 or Greater, and Ray Tracing, and Details of OpenGL Commands other than commands for transformations and matrices. It can include any other topic covered in class, including OpenGL commands for transformations and matrices, perspective transformations, Bresenham algorithm, depth buffer, homogeneous coordinates, linear and bilinear interpolation, Bezier curves for conic sections, Bezier curves of degree two or three, Catmull-Rom curves, color, theory of texture maps, normals, parametric surfaces, Phong lighting, etc., etc. You will not be allowed notes or other materials.
    Study aids: In addition to the six items available above as study aids for the midterm, here are some resources from old courses: old homework and its answer sheet, and an old midterm. For the old homework, you may ignore the part about Overhauser splines, as this topic will not be on the final. For the old midterm, please ignore questions #3 and #4, #5c,d as these are topics (knot insertion and B-splines and derivatives of Bezier curves) we have not covered in our course.

Handouts.
   a. Getting started with Microsoft Visual C++ (PDF file). Also available in in HTML format. This is the same as the project #0 assignment.
   b. Instructions on turning in a web page of your project..

Email announcements. Please be sure to read email sent to your email address as maintained by studentlink.

High tech: If you let me know ahead of time, I am willing to experiment with things like video chat by Skype for office hours. My Skype userid is SamBussSkype.

Textbooks:
    (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, any edition. Addison-Wesley. You will not need any of the advanced features described in the later editions, so even the first or especially the second or later editions are fine for the purposes of this course. The first edition is available online for free, see below for the URL. The Visual Studio help system also describes the basic OpenGL commands, but not the GLUT commands. GLUT documentation is available online, see below for the URL.

OpenGL programming guide, first edition, online at: http://fly.cc.fer.hr/~unreal/theredbook/.

Other Graphics Resources: