I don't know why there hasn't been a review of this yet! This class (taken Fall 2016) is an amazing class, and Professor Reed is -the- man to take it with. He's extremely nice, funny, and accommodating. The lectures move at an easy but reasonable speed, and the professor takes the time to provide intuition for and break down all the math and algorithms (if the diagrams in the slides weren't already good enough). At the end of some classes, we even watched some funny old shorts that showcased whatever concept we learned that week and that led into a bit of the interesting history in graphics. There were plenty of resources available - all the TAs were super helpful in office hours and on Piazza too. The class is also well-paced in that the amount of work is relatively light throughout the entire semester, though we still somehow went through a lot of content. We go through things like colour theory, lighting models, basic algorithms for geometry (ray-object collisions), and their application to ray-tracing and pipeline rendering, interspersed with some short review o graphics-related linear algebra. Once the basic rendering process is down, we also get into optimization through special data structures, and sampling methods. By the end, we will have made a few interactive animations in OpenGL and a full-featured ray tracer. Each assignment builds slightly on top of the previous--so you need to know be willing to organize and architect your code a little (though he goes over this too). I definitely felt giddy and proud of myself after reaching each milestone, as the images my program could generate looked more and more awesome and expressive.
Professor Grinspun is old school. His classes will punch you in the face and make you learn out of self defense. He's a very good teacher. This class is definitely the closest I've had to "drinking from a firehose" style learning. There's not really a whole lot else to be said The guest lectures were all great and relevant. Almost half the course was guest lectures, partly because we sort of ran out of things to cover partway through. Start the ray tracer early.
The premise of Computer Graphics class is to understand the fundamentals and principles of graphics. How we perceive the world in perspective; how we understand surfaces, shape transformations, and shadows interacting with light sources; how we manage to get millions of triangles described in a text file to be displayed nicely as Nemo in 3D model; how we render stunning images from a merely text file; they are all in one class. I cannot believe I have accomplished so much in one semester, and this class is simply one of the best class at Columbia that exceeds tuition fee that I pay for. In this class you will be exposed to pretty much everything in graphics pipeline. The awesome part is that you gotta have to sit down and implement real graphics program from scratch. It is a great class to let you see how technology and art can strengthen each other. And who wouldn't like a class that he/she can enjoy the two at the same time? Enough said with the class. Prof. Grinspun himself is also an extraordinary teacher. With his exclusive background in math, you will blow your mind to let you see how much graphics and math are inter-connected. In addition, because he is an excellent teacher who explains things from the perspective of someone who knows little about the subject, you can't go wrong with the materials. His humor and energetic teaching style will also motivates you to engage in the class, even if it is two hour class straight at night. There were multiple guest lectures, which feature people from the real industry, like NVIDIA for example, to talk about the technologies that people are engaging out there. After you have taken the class, you are sufficiently well-rounded in graphics. The assignments are heavy. It is pain in the ass; it is self-tortured at times, but the reward can give you a life-time inspiration. My favorite part is that you will have chances to do something creative and get credits for them. By the end of the semester, you have more than flourished programming skills, but also motivation to create digital arts in your own way. Highly recommended class for anyone who's interested in graphics.
Professor Ramamoorthi's lectures were generally fairly dry and could often be hard to follow. His accent isn't really an issue, but he has a way of failing to frame the question that's motivating what he's talking about; you get no sense of what he's building towards. He also doesn't speak very confidently; it's hard to tell whether he's entertaining a possibility for class discussion or actually saying that this is an accepted practice. The lectures tailed off in quality by the end of the course (as did attendance, precipitously); some of the lectures got into mathematical details well beyond the requirements of the course and well beyond what most people in the class could readily understand. As far as slides go: the slides were a fair basis for looking things up on the internet later, but no better. The course was well organized insofar as the assignments go; the course fell down in other respects. The assigned readings in the main textbook (Computer Graphics by Peter Shirley) often had only a tentative relationship to our lectures, and their pedagogical approach was very, very different; it's a good book, but was useless for the class. Other assigned readings included big swaths from the OpenGL red book -- hundreds of pages in all. Fortunately, I think most of us were smart enough to know that one doesn't learn a programming API that way. Another example: the materials and lectures we were given on curves weren't really sufficient to understand the second assignment; my partner and I had to use online course notes from another university. (Reading up on curves in one of the optional texts would have done the trick too.) The overall impression that I got, really, was that Professor Ramamoorthi viewed teaching the class as a chore, offloaded much of the work in running the class to our TA (actually writing up the assignment specifications, etc.), and didn't do a number of small things that would have improved the class greatly.
Some of you think that only the "bad students" wrote bad reviews for Prof. Ramamoorthi. The fact is, first day of class there were people in the hallway because the class was so overcrowded. By the end of the semester, about ten people showed up to lecture. I guess most of the class consisted of students who were doing badly.
Don't take this class if you're not willing to do work or put the effort in or aren't very competent. I found it great, but others may dislike it due to the high level of understanding it requires. the other reviewers basically said everything else, but the accent is not bad, the lectures are online, and if you need any extra help, it's available. you'll know if you can handle the class after the first homework.
Ravi has an Indian accent, but nothing "freakish" or unbearable (nor are there that many international people in the CS faculty anyway, so I don't know what the phuck the other reviewer was talking about). I didn't do well in this class *at all*, but objectively and honestly I feel that Ravi is definitely one of the better teachers in the CS department. (I'm sorry, but definitely better than Feiner.) First, he really, really knows his stuff; thus he was never unsure about anything and knew exactly what he was going to talk about. He even had review sessions in which over things he knew we would be confused about. Second, he is responsible. The clarity of his lecture notes reflect the effort and time he spent in preparation, as well as the very well-designed homework assignments. Third, although he is strict about extensions and the like, he is crystal- clear about rules and requirements; you have noone to blame but yourself for not doing well. He also made it clear in the first day of class that Graphics would not be easy. It turned out to be challenging but not that difficult in terms of grading, and fun as well. (Off-topic: don't you hate seeing reviews that say "I got a B and I don't know why. He's a bad professor"? I've read a lot on CULPA recently. Those aren't really reviews, just bad students blaming their teachers.)
One word: run. Despite Feiner's poor reviews I would have much rather had him teach this class than Ravi. Granted, this was his first time, but that doesn't excuse his accent, which seems like some freakish combination of every unintellegible voice in the CS dept (and trust me there are many). He supposedly knows a great deal about computer graphics, but you wouldn't know it from his lectures. The TA had to constantly remind him that the students in the class might not know as much as he did - need I say more? And don't even bother going to office hours. Still, he is a helluva lot more lenient about everything (i.e., extensions) than the TA seemed to be.
Very competent and very organized. Young, friendly, and approachable. Clear lecturer. The course is fairly difficult, but fun and interesting (and, as it turned out, graded on a generous curve). First two assignments required some mathematical sophisication and stressed understanding more than brute force. Last two assignments required learning OpenGL. That for me was overwhelming in the beginning, but once I learnt the basics (they're plenty of sample programs online), it started to be really fun and creative. Overall, I highly recommend this class.
Interesting material but presented in a very confusing manner. Will someone explain to Feiner how to use Visio and Powerpoint so that no other student has to put up with his badly drawn overhead slides, he does also teach User Interface Design. Very confusing and extremly poorly written programming assignments that the majority of students have no idea how to tackle. TAs are swamped with questions. Makes disparaging remarks in class about those who do poorly in midterm.
A mediocre lecturer who takes a lot of time to confuse you, instead of doing it quickly like other comp sci profs. At least, that was my impression until I stopped going to class. His lateness policy is a breath of very cool fresh air -- thank god, because the assignments themselves are poorly designed and students are ill-prepared for them. Like in some other comp sci courses (ahem, OS), you get the feeling that the professor and TAs started out with very ambitious assignments that they were going to prepare students for -- until they forgot to do the preparation part. But even that may be being overly generous, because the net result is inexcusable: students have no clue how to approach the programming, and TA office hours (again, so much like OS and other high-level CS classes) turn into unofficial cheating sessions where beleagured TAs have no choice but to disseminate crucial information (that the rest of the class doesn't get). I don't know if Feiner and his TAs even realize how much potential for learning gets thrown out in the process. And while there may be worse professors in the department, that doesn't make Feiner good. The bottom line? Steer clear.