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 2The 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