Computer Graphics
USC CSCI 420, fall semester 2024
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.
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
Reading Material
The following textbooks are strongly recommended (especially the first one), but not absolutely required:
- Edward Angel: Interactive Computer Graphics: A Top-Down Approach Using OpenGL, Sixth edition, Publisher: Addison Wesley, ISBN: 9780321535863
- Dave Shreiner: OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.3, Eighth edition, Publisher: Addison-Wesley Professional, ISBN: 9780321773036
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.
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