Special Topics: Computer Graphics

194 Mercer Street, Room 306
Tuesdays and Thursdays, 11am-12:15pm

Office hours:

Mine: Tuesday, 4pm-5pm 60 Fifth Ave, room 302
Diwakar: Monday 2:30pm-3:30pm   13th floor lounge of 251 Mercer (Warren Weaver Hall)
Mudit: Monday 4pm-5pm 13th floor lounge of 251 Mercer (Warren Weaver Hall)
Emily: Wednesday 4pm-5pm 13th floor lounge of 251 Mercer (Warren Weaver Hall)

What we will cover:

There are many courses that can teach you how to use commercial computer graphics packages and APIs. This course, in contrast, will teach you how to build 3D computer graphics from the ground up. This will include 3D modeling, animation, and rendering. At the end of the semester you will have built your own complete working real-time 3D computer graphics systems that runs in web browsers.

What you should already know:

If you are already familiar with JavaScript, that's great. If you are already familiar with Java, C++ or any similar high level language, you will not have any trouble picking up enough JavaScript to do this course.

Since this is an advanced course, I will assume that you are already an experienced programmer. If you are not, then I do not suggest you take this course, as there will be weekly programming assignments, and you would not be able to keep up.

Computer graphics uses a lot of matrix math and some calculus. During the semester we will go over all of the matrix and vector math that you will need.


Our "text" for this class will be the on-line course notes.
Course notes (so make sure you come to class!!!), will be posted on-line after each lecture.

A useful (but not required) reference: Computer Graphics: Principles and Practice (3rd Edition)

Contacts for the graders:

Mudit mp5099 AT nyu DOT edu
Emily sth351 AT nyu DOT edu
Diwakar dp2757 AT nyu DOT edu

Discussion list:


Rough outline of topics:
Jan 29, 31 Introductory lectures

Homework (due before start of class on Tuesday Feb 5):

Send an email to me at perlin AT nyu DOT edu, with the subject line "COMPUTER GRAPHICS", telling me:

  • Your name

  • What you hope to get out of this class

    If there is a particular topic that you are interested in, or you have a complementary interest that you think is relevant (eg: music, architecture, molecular biology), this is a good time to say it.

Feb 5, 7 Introduction to WebGL shaders

Here is the progression of fragment shader programs I showed in class on Thursday Feb 7.

And HERE are those detailed instructions about how to upload files and directories from a terminal window.


Feb 12, 14 Introduction to ray tracing and noise-based procedural texture

Course notes for Feb 12 lecture + Assignment 2 (due Feb 19)

NY Times: Math Algorithm Valentine

Course notes for Feb 14 lecture (ray tracing to a sphere)


Feb 19, 21Phong shading + implementing a ray tracer

Course notes for Feb 19 lecture (Phong shading)

Course notes for Feb 21 lecture (making an orange)-- and a homework assignment


Feb 26, 28 Passing data from Javascript to GLSL, Shadows, Reflection

Course notes + homework assignment for Feb 26-28 lectures


Mar 5, 7 Ray tracing to cubes + matrix transformations

Course notes + homework assignment for Mar 5-7 lectures


Mar 12, 14Triangle strips and hierarchical animation

Course notes + homework assignment for Mar 12-14 lectures


Week of Mar 18 Spring break
Mar 26, 28 Parametrically defined geometric objects

Course notes + homework assignment for Mar 26 lecture

Note: This Thursday, March 28, we will have an exciting guest lecture from my colleague Kris Layng, an award winning art director, concept artist and immersive experience director.


Apr 2, 4 Intro to splines, scenes with multiple objects

Course notes + homework assignment for April 2-4 lectures


Apr 9, 11 Bicubic surface patches, spline based animation

Course notes for April 9-11 lectures


Apr 16, 18 Texture mapping

Course notes and homework for week of April 16


Apr 23, 25 Using and generating bump maps, evaluating a bicubic patch

Course notes for April 23 (bump maps, bicubic patches)

Course notes for April 25 (automatically-computed tangent and binormal vectors)


Apr 30Mesh deformations and Virtual reality

Course notes + homework assignment for April 30 lecture


May 7, 9Tour/demos in the NYU Future Reality Lab

Instructions: Come to 60 Fifth Ave (between 12th and 13th Sts) and go up to the 3rd floor.  

May 14, 16 Final exam presentations