Computer graphics taught by building a rendering engine: poster session
Paul E. Dickson · Journal of computing sciences in colleges · 2010
We have created a curriculum for a computer graphics course that teaches computer graphics through the implementation of a ray-tracing rendering engine. Students begin the semester by building a 2D ray-tracer and then shifting it into 3D. By the end of the semester they have implemented a rendering engine capable of handling 3D objects with point and ambient light sources. The premise of this course is that students gain a greater understanding of the concepts behind computer graphics by implementing them than by simply using them in a commonly available graphics language such as OpenGL. In this course students must apply the information taught about how ray-tracing works in order to create each week's assignment. Each assignment builds on the previous assignments and leads to the creation of the total rendering environment. Students build the engine in C++ and use it to implement an object-oriented design. The overall structure of the engine is defined by library header files given with each assignment. Specifying the basic structure of the code makes it possible to build a test suite of images that can be used to test each student's engine. Building the renderer also helps students to see how different components of a ray-tracer interact and to better understand graphics. Students are required to work in pairs for this course. The reason for this is twofold: first, the assignments are too large for a single individual to handle easily; second, it is good practice for them to learn to work with another person while coding. The curriculum has been used once so far and the results are positive. One-third of the student completed all assignments for the course successfully and two-thirds made significant progress on the material. All students gained a good working knowledge of ray-tracing. One of the real successes of this course was how much better students programmed after the semester was completed. In classes taught since the semester of this course, all of the students from this course have shown and expressed greater confidence in their programming and ability to handle large assignments. The course greatly improved their ability to debug code. Students found this course to be difficult but did not get discouraged. Anyone interested in teaching this course or one similar can find the material pertaining to it at http://helios.hampshire.edu/~pedcs/classes/cs209Spring09/index.html.