Computer Graphics
USC CSCI 420, fall semester 2024

Oded Stein, University of Southern California

Course Description

This course is an introduction to three-dimensional computer graphics. Students will learn both the theory of 3D computer graphics, and how to program it efficiently using OpenGL. The course primarily teaches the "modern" shader-based OpenGL (core profile), but also introduces the "classic" fixed-function OpenGL (compatibility profile). Topics include 2D and 3D transformations, Bézier and B-Spline curves for geometric modeling, interactive 3D graphics programming, computer animation and kinematics, and computer graphics rendering including ray tracing, shading and lighting. There will be an emphasis on the mathematical and geometric aspects of computer graphics.

Hours

Lectures: Monday & Wednesday, 10:00-11:50, THH 210

Office hours with TA: Monday 16:00-17:00, Wednesday 15:00-16:00, SAL 322

Office hours with professor: Tuesday 14:00-15:00, SAL 344



Course Schedule

Topic

Readings (Angel)

Slides

Assignments

Aug 26 What is Computer Graphics? Ch. 1 01-overview
Aug 28 Introduction to OpenGL Ch. 2 02-introduction
Sep 2 No Class (Labor Day)
Sep 4 Graphics Pipeline Ch. 2 03-pipeline
Sep 9 Color and Hidden Surface Removal Ch. 2 04-color
Sep 11 Transformations Ch. 3 05-transformations Example OpenGL code
Sep 16 Viewing and Projection Ch. 4 06-viewing Assignment 1 released
Sep 18 Shaders Chs. 1&2, App. A 07-shaders
Sep 23 Shaders & HW1 discussion Chs. 1&2, App. A hw1-helper
Sep 25 Shadows & Hierarchical Modeling Ch. 8 08-shadows-hierarchy
Sep 30 Polygon Meshes, Curves and Surfaces Ch. 10 09-meshes
Oct 2 Splines Ch. 10 10-splines
Oct 7 Lighting & Shading Ch. 5 11-lighting Assignment 1 due
Oct 9 HW2 discussion hw2-helper Assignment 2 out
Oct 14 Texture Mapping Ch. 7 12-textures
Oct 16 Preparing for Midterm Assignment 2 first milestone due
Oct 21 Midterm exam (in-class)
Oct 23 Clipping / Rasterization
Zoom class - link will be sent in Brightspace.
Ch. 6 13-clipping 14-rasterization
Oct 28 Raytracing: Introduction Ch. 11 15-raytracing
Oct 30 Midterm discussion
Nov 4 Raytracing: Geometric Queries Ch. 11 16-geometric-queries Assignment 2 due
Nov 6 Spatial Data Structures, Global Illumination & HW3 discussion Chs. 8 & 11 17-spatial-datastructures 18-global-illumination Assignment 3 out
Nov 11 No Class (Veteran's day)
Nov 13 Keyframe Animation Ch. 9 19-animation 20-quaternions
Nov 18 Image Processing Chs. 6&7 21-image-processing 22-visualization
Nov 20 Physical Simulation Ch. 9 23-physics
Nov 25 Non-photorealistic rendering Ch. 9 24-npr Assignment 3 due
Nov 27 No class (Thanksgiving)
Dec 2 Final prep
Dec 4 Final (in-class)

Prerequisites

  • Junior, senior, MS or PhD student, or explicit permission of instructor
  • CSCI 104 (Data Structures and Object-Oriented Design)
  • MATH 225 (Linear Algebra and Differential Equations) or similar
  • Familiarity with calculus and linear algebra
  • C/C++ programming skills

Description of Assignments and How They Will Be Assessed

There will be three programming homework assignments, teaching students OpenGL and how to program 3D computer graphics. Please see the schedule for links to assignments and due dates. All assignments must be done individually.

Grading breakdown:

  • Assignments (17% each)
  • Midterm exam (19%)
  • Final exam (30%)

All assignments must be completed before the final exam to pass the course. Students must take the mid-term and final exams to pass the course. The assignments will have a small amount of extra credit.

Assignment Submission & Late Policy

Assignments are submitted online through Blackboard / Brightspace.

Programming assignments should be turned in by midnight on the day they are due. A total of three late days may be taken during the semester on programming assignments. For example, you can use one late day on the second assignment, and two on the third assignment. All days are counted, including any weekends and holidays, as follows: Less than 24 hours late = 1 late day, 24-48 hours late = 2 late days, 48-72 hours late = 3 late days, and so on. The flexibility provided by the late days is intended to get you through the time where all your classes just happen to have assignments due on the same day. Beyond the three late days, there will be a penalty of 10% of the value of the assignment / day. Exceptions will be granted only under most dire circumstances and must be discussed with and approved by the instructor at least one week in advance. Assignment and exam grading may be discussed within three weeks of them being returned to the students.

Forum

There will be a forum on Piazza where students can ask questions.

Academic integrity

Please see this PDF for the course's academic integrity policy.

Please especially note the policy on the use of generative AI in this course: Generative AI is not permitted. Since creating, analytical, and critical thinking skills are part of the learning outcomes of this course, all assignments should be prepared by the student working individually or in groups as described on each assignment. Students may not have another person or entity complete any portion of the assignment. Developing strong competencies in these areas will prepare you for a competitive workplace. Therefore, using AI-generated tools is prohibited in this course, will be identified as plagiarism, and will be reported to the Office of Academic Integrity.

Acknowledgements

I wish to thank Prof. Jernej Barbic, who has taught this course in the past and has graciously granted me access to his course materials. Thank also goes to Prof. Frank Pfenning and Prof. Jessica Hodgins from Carnegie Mellon University for generously providing materials from their computer graphics courses at CMU. This course has also been influenced by computer graphics courses at Cornell, MIT and UC Berkeley.