# COMS W4160 Computer Graphics

Spring 2018, Columbia University

TR 11:40pm-12:55PM, 413 IAB

Instructor: Changxi Zheng

## Staff

Peter Chen | (Ph.D. CA, cyc@cs.columbia.edu) |

Sebastian Cueva-Caro | (CA, sc3972@columbia.edu) |

Yuxuan Mei | (CA, ym2552@columbia.edu) |

## Schedule

date | topic | reading | assignments | |
---|---|---|---|---|

16 | Jan | Introduction (slides) | ||

18 | Jan | Introduction to OpenGL | ||

23 | Jan | Cancelled | ||

25 | Jan | Linear algebra (slides) | Chap. 2 and Chap. 5 of [S&M] | |

30 | Jan | Geometric Transformation (slides) | ||

1 | Feb | Geometric Transformation (slides) | ||

6 | Feb | 3D Rotation and Quaternions (slides) | Derivations about Quaternion | |

8 | Feb | Geometric Transformations in Graphics Pipeline (slides) | Chap. 7 [S&M] | |

13 | Feb | Graphics Pipeline (slides) | Chap. 8 [S&M] | |

15 | Feb | GLSL Introduction (slides) | ||

20 | Feb | Texture Mapping (slides) | Chap. 11 [S&M] | |

22 | Feb | Mipmap Textures (slides) | ||

27 | Feb | Ray tracing (slides) | Chap. 20 [S&M] | |

1 | Mar | Monte Carlo Integration (slides) | ||

6 | Mar | Ray Tracing & Rendering Equation | ||

8 | Mar | Monte Carlo Sampling (slides) | ||

13 | Mar | ----------- | ||

15 | Mar | ----------- | ||

20 | Mar | Monte Carlo Sampling (slides) | ||

22 | Mar | Starter code review | ||

27 | Mar | Introduction of Photon Mapping | a tutorial | |

29 | Mar | Triangle Mesh Manipulation | ||

3 | Apr | Mesh simplification | [Garland & Heckbert 97] | |

5 | Apr | Forward Kinematics and Spline curves | ||

10 | Apr | Inverse Kinematics | ||

12 | Apr | Character Animation | ||

17 | Apr | Interpolation of Quaternion | ||

19 | Apr | Preliminary of physics-based simulation | ||

24 | Apr | Color | ||

26 | Apr | Emerging topics |

## Projects and Work Load

You fun of this class starts from a paper homework with a few mathematical problems, followed by 4 programming projects throughout the semester and a final project. For the programming projects, you will be asked to implement some computer graphics algorithms. For the final project, you will propose a project which involves computer graphics techniques that you learn in this class. All projects should be implmented in Java and will be submitted to courseworks.

**Due date: 10pm, Feb. 8 (Thursday)**

Please submit electronically on Coureworks.

**Part 1 due date: 10pm, Feb. 17**

**Part 2 due date: 10pm, Feb. 23**

Please submit electronically on Coureworks.

**Due date: 10pm, Mar. 11**(before the Spring break).

Please submit electronically on Coureworks.

**Part 1 due date: 10pm, Mar. 29**

**Part 2 due date: 10pm, Apr. 5**

Please submit electronically on Coureworks.

## Exams

There will be no mid-term or final exam in this course. But there will be a final project.

## Recommended Textbook

Shirley & Marschner,
Fundamentals of Computer Graphicsthird edition |

**Supplemental books and materials:**

Gortler,
Foundations of 3D Computer Graphicsfirst edition |

- OpenGL reference page
- OpenGL "Red Book" --- *the* reference for OpenGL programming
- Anton's OpenGL 4 tutorials
- GitBook: 3D Development with LWJGL 3

## About COMS W4160

**Grading:**
Each homework to be graded will be scored on a 100-point scale.
Your final grade will be a weighted average of the grades of the assignments
and your final project. The paper homeworks will account for 10% of the grade, the program
assignments will account for 70% (14% each), and the final project will account for 20%.
The midterm prelim will cover the first half of the course. The format will be similar
to paper homeworks, textbook material and questions.
It will be closed book, but you are allowed to bring one letter-sized piece
of paper with writing on both sides, to avoid the need to memorize details.

**Due dates**
Paper homework should be handled in after the lecture on the due date.
Programming assignments are due at **10:00 pm** on the due date and are accepted with a late penalty.
They must be submitted electronically, as detailed in the assignment.

**Lateness policy:**
Late submissions lose 1% per 12 minutes of lateness. For example: a submission that is two hours late is penalized 10%, and a submission that is 20 hours late receives no credit. **Rationale:** Since some programming assignments are built on each other, we must ensure that all students begin each assignment at an equal playing field. By enforcing a strict lateness policy, we will be able to post next assignment shortly after the previous one is due, thereby enabling students to build on a solid foundation in the following week.

*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, etc. *Plan ahead.*

**Questions, help, discussion:**
The instructors and IAs are available to answer questions, advise on
projects, or just to discuss interesting topics related to
the class at office hours and by appointment as needed.
For electronic communication we are using **Piazza** (link also available at the
top of this page).
Please sign up for the Piazza page. When posting questions, please keep them organized by
posting them to specific folders.

You are welcome (encouraged, even) 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.

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 IAs,
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.