CS40 — Graphics Spring 2009

Announcements | Class info | Schedule | Grading | Academic Integrity | Links
Computer Graphics


Welcome to CS40: Computer Graphics. This course focuses on the creation and manipulation of digital imagery. We will examine modeling from both a raster or pixel-based perspective and the more geometric vector based approach. Core topics include geometric primitives, 2D and 3D matrix transformations, projective geometry, object modelling. We also examine the rendering pipeline and algorithms that improve performance including clipping and hidden surface removal and depth buffers. Intermediate topics include texture mapping, lighting, shadows, and curved surface modeling. Starting with the OpenGL framework allows us to explore some advanced topics as well including grammar based models, isosurface extraction, and applications to Geographic Information Systems (GIS) and computational geometry.


Class info

Room: Science Center 240
Time: TR 2:40pm–3:55pm
Text: OpenGL Programming Guide (6e) by Shreiner et al. (required) Interactive Computer Graphics (5e) by Edward Angel (recommended)

Instructor info

Professor: Andrew Danner
Office: Science Center 253
Phone: (610) 328-8665
Office hours: by appointment


1 Jan 20   Intro to C++/OpenGL
Graphic Primatives
The Rendering Pipeline
Jan 22  
2 Jan 27   Event driven programming, simple animation Lab 01
Jan 29 Drop/add ends (Jan 30)
3 Feb 03   Geometric Primitives
Vector and Matrix operations
Lab 02
Feb 05  
4 Feb 10   2D Transforms
Viewing, Clipping, Projecting
Lab 03
Feb 12  
5 Feb 17   Projection, Basic Lighting, Surface Normals  
Feb 19  
6 Feb 24   3D Transforms
Scene Graphs
Midterm Project
Feb 26  
7 Mar 03   Texture mapping  
Mar 05  

Mar 10

Spring Break

Mar 12

8 Mar 17   depth-buffers, shading/advanced lighting, shadows  
Mar 19  
9 Mar 24   Non-linear surfaces. Splines, Bezier surfaces  
Mar 26  
10 Mar 31   Particle systems
Procedural Methods
Apr 02  
11 Apr 07   Graphics and GIS
Terrain rendering
  Lab 05
Apr 09  
12 Apr 14   Data Visualization
Isosurface extraction
Marching Cubes
  Lab 06
Apr 16  
13 Apr 21   Advanced Topics
General Computation with GPUs?
Apr 23  
14 Apr 28   Wrapup  
Apr 30  

May 07

Final Exams Start


May 16

Final Exams End


Grades will be weighted as follows:
50% Lab assignments
20% Midterm
20% Final
10% Class participation

Homework policy

Programming assignments will typically be assigned in class at the end of the week and will be due before midnight the following Thursday night. You are strongly encouraged to start early and ask questions early if you get stuck. You will submit you assignments electronically using the handin40 program. You may submit your assignment multiple times, but each submission overwrites the previous one and only the final submission will be graded. I am trying the Prof. Newhall late homework policy for this course. You (or you ant your partner) are allowed to use up to 3 late days this semester for turning in lab project assignments. However, at most 2 late days can be used on an individual assignment. Late "days" are measured in class periods after the due date. For example, if the original assignment is due on Thursday before 1am, then if you submit it after Thursday at 1am but before next Tuesday at 1am it is one day late.

Use late days wisely; once you have used up your late days, I reserve the right to not accept any further late assignments from you, and if I do accept further late assignments from you, you will receive a significant late penalty on them. I strongly recommend that you do not use any late days on the first few assignments.

Academic integrity

Academic honesty is required in all work you submit to be graded. You may not submit work done with (or by) someone else. You may not examine or use work done by others to complete your own work. You may discuss ideas problems with others on a general level and such discussions are encourages, but you must credit any collaborators or resources used in the completion of you assignment. "It is the opinion of the faculty that for an intentional first offense, failure in the course is normally appropriate. Suspension for a semester or deprivation of the degree in that year may also be appropriate when warranted by the seriousness of the offense." - Swarthmore College Bulletin (2008-2009, Section 7.1.2) Please see me if there are any questions about what is permissible. CMake (feedback welcome)
Tia's Language Notes
OpenGL 2.1 Documentation
Glut docs

Common C++ Libraries