COMS W4167 Computer Animation
Spring 2026, Columbia University
TR 4:10pm-5:25PM, 214 Pupin Laboratories
Instructor: Changxi Zheng
Important! For this semester's course, we redesigned the programming assignments, and switched the programming assignments from C++ to Python. We will provide starter code for each assignments, which can be run on your local computer. More details will be announced on Courseworks.
Pre-requisites: Conformable on programming in Python, Data structures (tree, queue, etc.), Multivariable calculus (e.g., knowing the concepts of partial derivative, gradient, Jacobian), Linear algebra (vector, matrix)
Staff
| Yuan Fang | (uni: yf2716) |
| TBD |
(Tentative) Schedule
| date | topic | reading | assignments | |
|---|---|---|---|---|
| 20 | Jan | Introduction | ||
| 22 | Jan | Review of Newtonian physics | ||
| 27 | Jan | Kinematics | PA1 Release | |
| 29 | Jan | Time integration: Symplectic Euler | ||
| 3 | Feb | Forces | ||
| 5 | Feb | Time integration: Implicit Euler | ||
| 10 | Feb | Time integration: Implicit Euler | PA1 Due; PA2 Release | |
| 12 | Feb | High-order time integration | ||
| 17 | Feb | Collision detection | ||
| 19 | Feb | Collision response | ||
| 24 | Feb | Particle clouds | PA2 Due; PA3 Release | |
| 26 | Feb | Continuous collision detection | ||
| 3 | Mar | Broad phase collision detection | ||
| 5 | Mar | Broad phase collision detection | ||
| 10 | Mar | Constrained mechanical systems | PA3 Due; PA4 Release | |
| 12 | Mar | Rigid body kinematics | ||
| 17 | Mar | ----------- | ||
| 19 | Mar | ----------- | ||
| 24 | Mar | Rigid body dynamics | ||
| 26 | Mar | Guest Lecture | PA4 Due; PA5 Release | |
| 31 | Mar | Rigid body collisions | ||
| 2 | Apr | Elasticity | ||
| 7 | Apr | Deformable simulation | ||
| 9 | Apr | Deformable simulation | PA5 Due; PA6 Release | |
| 14 | Apr | Fluids: advection and total derivative | ||
| 16 | Apr | Fluids: divergence free vector fields | ||
| 21 | Apr | Fluids: free surfaces | ||
| 23 | Apr | Fluids: Other simulation methods | PA6 Due; PA7 Release | |
| 28 | Apr | Deep learning for computer animation | ||
| 30 | Apr | Deep learning for computer animation | ||
Projects and Work Load
Throughout this semester, you will have programming assignments (PAs) roughly every two weeks, depending on the course schedule. In each assignment, you'll be asked to implement simulation algorithms based on the starter code we provide. You'll be using Python for all PAs.
More details about finishing your assignments on Codio will be provided by CAs. There is no required textbook. In case you need to refresh your Calculus and Linear Algebra background, here are some reference books:- Gilbert Strang's Calculus textbook
- A free linear algebra book online
- OpenGL reference page
- OpenGL "Red Book" --- *the* reference for OpenGL programming
- Nate Robbin's OpenGL "tutors" programs
- Anton's OpenGL 4 tutorials
About COMS W4167
Grading: We strive to maintain a fast, transparent and fair grading process:
- Each programming assignments will have a equal weight for your final grade.
- If an assignment is submitted multiple times before the deadline, only the most recent submission will be graded.
- There will be no midterm exam, no final project. Instead, there will be a take-home final exam (on paper).
- Your final numerical grade will be an average of the numerical grades of all PAs and the final exam.
Due dates: Weekly deadlines are due on the date and time indicated in the assignment handout, usually at 10:00PM of the day. They must be submitted electronically, as detailed in the assignment.
Lateness policy:
Late submissions lose ~4.2% per hour of lateness. For example: a submission that is 12 hours late is penalized 50%, and a submission that is 24 hours late receives no credit. Rationale: Since PAs build on each other, we must ensure that all students begin each PA at an equal playing field. By enforcing a strict lateness policy, we will be able to include the solution code to each PA shortly after it is due, thereby enabling students to build on a solid foundation in the following week, even if their previous PA implemention is not fully correct.
Plan ahead. The only exception to this policy is a documented medical emergency. In order to ensure fair grading, exceptions are not possible for holidays, sport meets, theater appearances, indigestion, job interviews, etc. Plan ahead.
Curving and Final Grade: This class will *not* be curved down. A student achieving a certain percentage grade has a guaranteed minimum letter grade. We reserve the right to curve all grades uniformly upward (improving your letter grade) subject to our discretion. The minimum grade distribution for this class will be given by evaluating the student's numerical grade, after adjusting for lateness and extra credit, following the table
- A: 90% or higher
- B: 80% to 89%
- C: 70% to 79%
- D: 60% to 69%
You are allowed to discuss the homeworks and projects among yourselves in general terms. But when you start writing up the homeworks or implementing the projects, you need to be working alone. In particular, it is never permitted for you to see another student's homework writeup or other's program code, and certainly never tolerated to copy parts of one person's writeup, code, or results into another's, even if the general solution was worked out together.
You're also encouraged to read any published sources—books, articles, public web sites—that help you learn. If you find an idea in one of these sources that becomes part of your solution (or even gives you the whole solution), that's fine, but it is imperative that you explicitly cite the source on your homework or state it in a comment of your code. Otherwise you would be falsely claiming to have invented the idea yourself.
Academic integrity: We expect complete integrity from everyone. We assume the work you hand in is your own, and the results you hand in are generated by your program. You're welcome to read whatever you want to learn what you need to do the work, but we do expect you to build your own implementations of the methods we are studying. If you're ever in doubt, just include a citation in your code or report indicating where some idea came from, whether it be a classmate, a web site, another piece of software, or anything—this always maintains your honesty, whether the source was used in a good way or not. The principle is that an assignment is an academic document, like a journal article. When you turn it in, you are claiming that everything in it is your original idea (or is original to you and your partner, if you're handing in as a pair) unless you cite a source for it. it's never OK for you to see another student's homework writeup or another team's program code, and certainly never OK to copy parts of one person's or team's writeup, code, or results into another's, even if the general solution was worked out together.
Cases that violate the academic integrity include (not exclusively):
- Submit work that is not original
- Publish code or solutions online
- Post the course questions on forums including stack overflow
- Submit someone else’s work, or a modification of that work, with or without that person’s knowledge
- Allow someone else to submit his/her work, or a modification of that work
- Solve as a group a quiz or project
School can be stressful, and your coursework and other factors can put you under a lot of pressure, but that is never a reason for dishonesty. If you feel you can't complete the work on your own, come talk to the professor or the TAs, or your advisor, and we can help you figure out what to do. Think before you hand in!
Clear-cut cases of dishonesty will result in failing the course.
For more information see Columbia Engineering's Code of Academic Integrity.
Open Door Policy: We hope the course to run smoothly and enjoyably. Feel free to let us know if you find the course helpful and interesting. Especially, let us know sooner about the reverse. Drop by our office hours, leave us a note, or send us an email.