BerkeleyX: CS184.1x Foundations of Computer Graphics

This time I come up to tell you about my experiences in the course BerkeleyX: CS184.1x Foundations of Computer Graphics at edX.

CS184.1xLast month I joined a online course in platform. It was about Computer Graphics by the teacher Ravi Ramamoorthi at Berkeley University.

I always wanted to learn about OpenGL and to understand the 3D world maths and that was my opportunity!


How was the course:

The course started on November 5, 2012 but I started one week later because I didn't know about these courses before. And it ended on December 17, 2012. And I finished one day later because the last exercise was about 15 hours computing! Just after finishing one classmate told me that using "-O2" at compilation would optimize the program. He computed last exercise in 40 minutes, so now I know.

The course was divided in units from 0 to 3. Every unit had 3 lectures and 1 homework. The lectures were divided in pairs of video and test exam. The homeworks were to work in a C++ program. Sometimes making little changes was required, some other times to make a ray tracer from the scratch (last homework).

After every homework you had to upload the images generated by your C++ program to the autograder which checked all your images. If you had less than 1000 pixels wrong, the image pass the proof.

The course had a very good tool to let people talk about the lectures and doubts found in homeworks. Actually you can ask whatever, of course, refering about the course. I think this is the part of the edX platform where I've been spending time the most. The teacher Ravi Ramamoorthi, the staff and all the students were really strong support. They were very patient and polite. The knowledge of the staff was more than enough.



In the first two sections of the course, it teach you the algebra you need to manage a 3D world.

You will see how transformations work, how rotate, translate and scale. You will understand the homogeneous coordinates. How to transform the normals in the surface of the objects. You will be introduced to different viewing ways like orthographic projection and perspective projection. And how to set up this parameter in OpenGL.

In the thirth section, the course teach you how OpenGL works. It explains you how to set up buffers in OpenGL and how to use them. Next you will learn how make matrices operations learnt in the previews lectures.

You will see how OpenGL window system interaction and callbacks work. And what a shader is and how to initialize it and use it. You'll learn a bit of GLSL (the OpenGL Shading Language).

This section is all about OpenGL so it encloses a lot of information about it. At the end you will see how to draw the geometry, apply transforming matrices to the geometry, use the z-buffer to refresh the screen appropiately, animate objects in the 3D world and apply textures.

The last section talk about ray tracing. This is another way to represent virtual 3D world without using any library like OpenGL. Very interesting and very challenging, the most.


This was a challenge for me in different aspects.

C++. I never programmed C++ under linux. I allways was working in window$ with VC++ and I allways wanted to do it in linux as well to collaborate with some open source. So now I have some practice.

Algebra. I remember little things about the algebra from the school. As well It's something that I wanted to learn in order to develop some 3D application.

OpenGL. Almost the same. I have a little experience with OpenGL ES when I was collaborating in an augmented reallity application for Android platform. But now I feel I could face that application alone because now I know how OpenGL works, and even more important how to apply transformation matrices and in general the maths related to this subject.

Ray Tracer. I even didn't expect to learn more than OpenGL, so that was a nice surprise to me.

So, I have enjoyed a lot, it was quite hard for me, I would like to repeat it, I would like to meet people from the course and to keep working on this subject in the future.

If yo'd like to do something like this I recomend you to take this course. It's free, it's online and it's fun. Now that it's over you still are able to join it, the only thing is that you won't have the certificate.



Well, the platform is a very good tool, but I would inprove a bit the functionality of the forum's text editor. To make a line break I had to give two line breaks. But it's really good the math formats to write formulas (not so straightforward anyway).

I would ask to review some explanations in lectures and, for the last exercise, the sources given. Besides that it was good!

Some images from the homeworks:







Thu, Dec 20th 2012, 10:10 | C++, OpenGL


Add New Comment

Your name:
Your e-mail:
Your web page:
I would like to receive new comment notification.
Security code: