Computer Graphics I - Fundamentals of Computer Graphics (CS171.01)
Fall, 2025
Time: Mon/Wed 13:00-14:40
Location: Teaching Center, Room 302
Introduction
When we talk about computer graphics, we usually mean visual things that are created by computer programs. Computer graphics is a discipline of applied computer science which was originated in the 1960s and popularized from 1990s. It has been widely applied in areas ranging from computer aided design (CAD) and engineering (CAE), architecture, entertainment (e.g., gaming and movie industries), visual arts, to virtual and augmented reality, scientific and information visualization, medicine, robotics, as well as visual navigation and communication, and to the more recent popularity of metaverse, etc. After a series of intensive development for the past several decades, computer graphics has gradually been mature and integrated in many aspects of our daily life and work, and is being evolved into an area of computer science which involves multiple disciplines, such as mathematics, physics, parallel computing as well as chip techniques such as graphics processing unit (GPU) design.
This course is an undergraduate course which provides the fundamental introduction to computer graphics as well as some of its advanced techniques. Starting from some basic 2D computer graphics, the course mainly focuses on 3D computer graphics: camera modeling, projection, geometrical representation, modeling and transformation, graphical rendering with OpenGL and ray tracing, sampling and anti-aliasing, global illumination, volume rendering and scientific visualization, as well as computer animation based on 3D computer graphics. Students will try to learn the basic algorithms in computer graphics, master the necessary programming skills for producing different types of 3D images, as well as creating graphical animations, both non-physically-based and physically-based. In order to achieve these goals, the students need to finish assignments and projects, which are designed to be practical from easy to more difficult ones.
Prerequisites:
Programming (C/C++), Mathematics
(Calculus, Linear Algebra, Probability), Data Structures and Algorithms
Note: If you are not good at mathematics and programming with C/C++, please
think more carefully before you finally decide to select this course. We provide
a self-test of coding in piazza to help with your self-evaluation of your coding
capability.
Course Instructors
Xiaopei Liu:
liuxp@shanghaitech.edu.cn; office
hour: Monday/Friday 17:00~18:00; address: SIST Building 2, Room 202.J
Teaching Assistants
Zhonghan Zhang:
zhangzhh2022@shanghaitech.edu.cn; office hour: Monday: 20:30-21:30;
address: SIST Building No. 2, Room 213
Yanxi Huang:
huangyx12024@shanghaitech.edu.cn; office hour: Friday: 13:30 - 14:30; address: SIST Building
No. 2, Room 213
Contents
Lecture 1: Introduction
Lecture 2: The first
graphics program
Lecture 3: Coordinate spaces, transformations,
projection & rasterization
Lecture 4: Geometric representation & triangulation
Lecture 5: Geometric modeling 1
Lecture 6: Geometric
modeling 2
Piazza
https://piazza.com/shanghaitech.edu.cn/fall2025/cs17101
Course Materials
Reference book:
Physically Based Rendering - From Theory to Implementation
OpenGL documents and tutorials: tutorial
web, specification,
shading language, and
programming guide
Volume Rendering:
Real-Time Volume Graphics
Assignments
Assignment 1:
Exploring OpenGL Programming
Final Project
Grading
Programming assignments (50%): The students will complete
five programming
assignments. Each assignment will take
scores based on their difficulties (specified in detail in
their corresponding assignment documents).
Paper presentation (5%): The students will present research papers in groups
with a Q&A session, which will be evaluated by the lecturer and the TAs.
Written examinations (25%): There will be a written mid-term exam for the course
(15%), which will cover the basic knowledge of computer graphics, with
mathematical calculations, as well as five quizzes (10%).
Final project (20%): The final exam will be project-based, which will include an
accomplishment of a group-based project (15%) as well as a formal presentation
(3%) together with a technical report (2%).
Late hand-in policy: Each
student is allotted a total of five late-day points for the whole semester,
which work as follows:
- A student can extend a programming assignment deadline by
one day using one point.
- If a student does not have remaining late-day points, late
hand-ins will deduce 10% of the total score of the corresponding assignment per day.
- No
assignments will be accepted more than five days after the deadline. This is
true whether or not the student has late-day points remaining.
- We will
strictly follow the rule above for late-hand-in policy unless you have a **VERY
STRONG** reason, which should be explained sufficiently to the course instructor and TAs.
Collaboration Policy
Students in this course are absolutely encouraged to talk to each other, to the TAs, to the instructor, or to anyone else about course contents and assignments. Any assistance, though, must be limited to the discussion of the problems and sketching general approaches to a solution. Each student should write their own code and technical report **independently**. Resorting help from LLM (Large Language Model) is prohibited. Consulting another student's solution is prohibited too, and submitted solutions may not be copied from any source, including any code discovered online or generated from LLM. These and any other form of collaboration on assignments constitute cheating. If you have any question about whether some activity would constitute cheating, just be cautious and ask the instructor before proceeding! Note that we will seriously treat plagiarism in this course!
Copyright 2024 ShanghaiTech University