Monday | Wednesday | Friday, 11:00am - 11:50am, CIT 368

Teaching Staff
Instructor Grad TA HTA HTA
Daniel Ritchie Aditya Ganeshan Coco Kaleel Anh Truong

Mandy He Yuanbo Li
Contact Information

This course uses Slack for announcements and discussion. If you have questions about the class materials or assignments, requests for clarification, cool graphics-related stuff you want to share, or anything else that may be of interest to the class as whole, post them here. If you have an atypical question that you are certain will not be of interest to any other student, you can DM the instructor and/or TAs.

Instructor email

If you want to request an extension on an assignment, discuss SEAS accommodations, or have any other issues regarding private or sensitive information, email the instructor directly.

Course Calendar

Course Description

CSCI 2240 is an advanced computer graphics course. It assumes prior experience with the fundamentals of computer graphics, typically by having completed an introductory computer graphics course. The course explores several key areas of 3D graphics---rendering, geometry processing, simulation, and optimization---taking a mathematically-sophisticated approach to each. We will study computational approximations to the physics of light transport and the motion of deformable objects, algorithms for processing 3D triangle meshes, and optimization-based techniques for manipulating 3D shapes. The course culminates with an open-ended, group final project in which students choose a recent research paper of interest and implement the techniques it describes.

Past Projects
Learning Goals

Students who complete this course will:

  • Understand the physics of light transport and be able to implement approximate solutions to the rendering equation.
  • Understand the strengths and weakness of different geometry representations and be able to build efficient algorithms for processing and manipulating meshes.
  • Know how to pose graphics problems as quadratic optimization problems and solve the resulting sparse linear systems.
  • Understand the continuum mechanics governing the motion of solid objects and be able to simulate them through finite element approximations.
  • Build depth of knowledge in one area of computer graphics by completing an open-ended final project.
  • Be able to read technical papers in the graphics literature and implement the algorithms they describe.

More holistically: completing this course will take you from "I know the fundamentals of computer graphics" to "I can read and implement graphics research papers and contribute to new graphics research." Students who complete this course will be well-prepared to begin an academic research career in computer graphics or to join an industrial research and development lab.

Accordingly, this course is challenging. On your journey to becoming an independent graphics researcher/practitioner, expect to be pushed out of your comfort zone. It is totally normal to struggle with some assignments in this course (to which the TAs can attest). If you feel stuck, remember: we're here for you! Take advantage of office hours and ask for help from your fellow students on Slack.


The following skills will be necessary for this course:

  • Computer Graphics: This course assumes familiarity with the fundamentals of computer graphics, such as 3D transformations, viewing and projection, basic illumination models, raytracing, and OpenGL. Brown's introductory computer graphics course, CSCI 1230, is a prerequisite for this course. Similar courses from other institutions may also be acceptable.
  • Software Engineering: The assignments in this course, and particularly the final project, require you to design, develop, and debug large pieces of software. The project work required for CSCI 1230 should be sufficient preparation. If you took an introductory graphics course elsewhere that did not emphasize large software projects, you should have experience with building such projects from other courses.
  • Math: The techniques we will explore in this course are based on physics concepts, involve geometric calculations in three-space, and/or require solving large systems of equations. Familiarity with linear algebra and vector calculus are important for successfully understanding and applying these techniques.
If you are not sure whether you can/should take the course, we encourage you to show up to the first class and talk to the instructor.


There is no required textbook this semester. Readings relevant to each course assignment will be posted on this website. Optionally, you might consider purchasing The Graphics Codex, which costs only $10 and provides reference materials which can be useful for the first part of the course (on rendering).

Grading Policy

Your final grade will be determined by a written assignment, four programming assignments, and a final project, as well as your in-class participation. Percentage-wise, the final grade will break down roughly as follows:

  • 5%     Assignment 0
  • 16%   Assignment 1
  • 15%   Assignment 2
  • 14%   Assignment 3
  • 14%   Assignment 4
  • 30%   Final project
  • 6%     Class participation

These percentages are estimates, and the final percentage values may vary as we deem necessary. For example, if a particular assignment turns out to be more difficult that we expected, we may (at our discretion) adjust the grade breakdown such that that assignment is less heavily weighted.

Late Submissions

If you submit an assignment late, 10% of the maximum possible score will be subtracted for each day that is late. Submission within 24 hours after the deadline counts as one day late, within 48 hours after the deadline counts as two days late, and so on. However, you are allowed three (3) late days for the semester. Late days will be factored in at the end of the semester and distributed such that you get the most points possible. Because we do this, use of late days will not be reflected in the initial grade report for your assignments.

Sometimes there are special circumstances during the semester that result in exceptions to this late policy. All such circumstances require an official note from the Deans. In general, they only provide support notes on behalf of students who are experiencing disruptive medical or personal circumstances, including those related to Title IX situations, that affect their ability to do academic work in a timely way.

You should manage other special circumstances such as interviews, personal travel or extra-curricular factors using the late day policy above.

Regrade Requests

If you believe that an error was made in grading one of your assignments, please submit a regrade request via Gradescope within one week of receiving your grade. Any regrade requests received after this date will not be considered.

Community Service Points

We like to reward students who are good course citizens. If you find (or fix!) a bug in any of our assignment code, share a useful resource with the rest of class, or make an especially helpful contribution to discussion (in class or on Slack), then the teaching staff may award you extra credit---the precise amount and how it factors in to your final grade is up to our discretion. Please note that posting solutions to (parts of) assignments is not good course citizenship, nor is showing off how much you know about something. When in doubt, talk to a member of the teaching staff before sharing with the rest of the class.

Time Commitment
Activity Hours
In class 40
Assignments 80 = 4 + (19 x 4)
Final Project 40
Office hours, Piazza, etc. 20
Total 180

This course may be used as a capstone course for an Sc.B. degree. Talk to the instructor about registering 2240 as your capstone course.

Assignment Release Date Due Date
0: Radiometry in Flatland (Flatland) 1/24 2/2
1: Path Tracing (Path) 2/2 Milestone: 2/9, Final: 2/16
2: Geometry Processing (Mesh) 2/16 Milestone: 2/26, Final: 3/6
3: Finite Element Simulation (FEM) 3/6 3/20
4: As-Rigid-As-Possible Surface Modeling (ARAP) 3/18 4/5
Final Project 1/24 Proposal: 4/3, Presentation: 5/10
Two Minute Papers

In the spirit of this YouTube channel, we will be starting each class with a brief student presentation of a recent research paper. Everyone is expected to present once; this is a large part of your class participation grade.

Sign up for a presentation slot by filling out this spreadsheet.
Empty slots in the schedule will be filled by a student selected uniformly at random from the set of students who have not yet presented.


A brief oral presentation (with a hard cutoff at 5 minutes, so please aim to be shorter than that), accompanied by visual aid. Slides are nice, but not required: you may show figures directly from the paper, or any existing video that supplements the paper.

Course Schedule
Jan 24
Introduction and Overview
Sign the collaboration policy Google form by next class.
Fill out this when2meet so we can schedule hours.
Check out the Eigen tutorial.
Flatland out
Final project out
Jan 26
Jan 29
Rendering Equation & Monte Carlo Integration
Jan 31
Path Tracing & Uniform Hemisphere Sampling
Feb 2
Russian Roulette & BRDFs
Path out
Flatland due
Feb 5
Tone mapping, more BRDFs
Feb 7
Direct Lighting
Feb 9
Advanced Sampling
Path milestone due
Feb 12
Advanced Materials & Light Transport Algorithms
Feb 14
Meshes & Geometry Processing
Feb 16
More Geometry Processing; Subdivision
Path due
Mesh out
Feb 19
No class (university long weekend)
Feb 21
More Subdivision
Feb 23
Mesh Simplification
Feb 26
More Simplification; Remeshing & Filtering
Mesh milestone due
Feb 28
Geometry Representations
Mar 1
More Geometry Representations
Mar 4
Simulation: Intro, Implementation, & Forces
Mar 6
Simulation: Continuum Mechanics
Mesh due
FEM out
Mar 8
Simulation: Finite Element Method
Mar 11
Optimization Intro
Mar 13
Linear Solvers
Mar 15
ARAP paper discussion
Mar 18
ARAP discussion continued
ARAP out
Mar 20
Paper discussions
FEM due
Mar 22
Paper discussions
Mar 25
No class (spring break)
Mar 27
No class (spring break)
Mar 29
No class (spring break)
Apr 3
Weekly project group meetings begin
Final project proposal due
Apr 5
ARAP due
Apr 15
Final project milestone 1 due
Apr 29
Final project milestone 2 due
May 10
Final project presentations
Final project due

General Course Policies
Diversity & Inclusion

Our intent is that this course provide a welcoming environment for all students who satisfy the prerequisites. Our TAs have undergone training in diversity and inclusion, and all members of the CS community, including faculty and staff, are expected to treat one another in a professional manner. If you feel you have not been treated in a professional manner by any of the course staff, please contact either the instructor, Ugur Cetintemel (Dept. Chair), Tom Doeppner (Vice Chair) or Laura Dobler (diversity & inclusion staff member). If you feel more comfortable speaking with a fellow student about your concern, you can (confidentially) reach out to the Diversity & Inclusion Student Advocates. We will take all complaints about unprofessional behavior seriously. Prof. Krishnamurthi has good notes on this area. To access student support services and resources, and to learn more about diversity and inclusion in CS, please visit this webpage.

Brown welcomes students from all around the country and the world, and their unique perspectives enrich our learning community. To empower students whose first language is not English, an array of support is available on campus, including language and culture workshops and individual appointments. For more information, contact the English Language Learning Specialists at

Academic Integrity

Academic dishonesty will not be tolerated. This includes cheating, lying about course matters, plagiarism, or helping others commit a violation. Plagiarism includes reproducing the words of others without both the use of quotation marks and citation. Students are reminded of the obligations and expectations associated with the Brown Academic and Student Conduct Codes.

Collaboration Policy

For all assignments in this course, feel free to discuss problems, ideas, and course material with other students in the class.

For written math problems whose solution is a single number, you are welcome to compare numbers with other students. However, you may not share your derivation of that number.

For programming assignments, showing, copying, or any other form of sharing code is not permitted, with one exception: you may look at another student's code to help them debug under the supervision of TA at TA hours. You may use third-party software, data, or other resources (including large language models such as ChatGPT or Github Copilot), as long as they do not provide the solution directly. You must properly cite them (i.e. in your assignment README) and clearly state what work is your own.

As a general policy (for this course and for the rest of your academic career): if you use any idea, text, code, or data from elsewhere, then cite it.


Brown University is committed to full inclusion of all students. Please inform the instructor if you have a disability or other condition that might require accommodations or modification of any of these course procedures. You may email the instructor, come to his office hours, or speak with him after class, and your confidentiality will be respected. We will do whatever we can to support accommodations recommended by SEAS. For more information, contact Student and Employee Accessibility Services (SEAS) at 401-863-9588 or Students in need of short-term academic advice or support can contact one of the deans in the Dean of the College office.

Mental Health

Being a student can be very stressful. If you feel you are under too much pressure or there are psychological issues that are keeping you from performing well at Brown, we encourage you to contact Brown’s Counseling and Psychological Services CAPS. They provide confidential counseling and can provide notes supporting extensions on assignments for health reasons.

Incomplete Policy

We expect everyone to complete the course on time. However, we certainly understand that there may be factors beyond your control, such as health problems and family crises, that prevent you from finishing the course on time. If you feel you cannot complete the course on time, please discuss with the instructor the possibility of being given a grade of Incomplete for the course and setting a schedule for completing the course in the upcoming year.

Thanks to Tom Doeppner and Laura Dobler for text on accommodation, mental health, and incomplete policy.