|Crytek Sponza rendered by|
CS371 students with photon mapping
In the process of presenting the CS371: Computer Graphics that I teach at Williams College as an ACM/IEEE 2013 Curriculum for Computer Science exemplar in computer graphics, I had to answer the question, "why do you teach the course this way?" The the answer that I provided is below. It is currently a core part of my philosophy for teaching science at a liberal arts college*.
In this course, students work from first principles of physics and mathematics, and a body of knowledge from art. We then go to lab to implement these ideas. That is, I seek to lead with science and support it with engineering. Many other CS courses--such as networking, data structures, architecture, compilers, and operating systems--develop the ability to solve problems that arise within computer science and computers themselves. In contrast, graphics is about working with problems that arise in other disciplines, specifically physics and art. The challenge here is not just solving a computer science problem but also framing the problem in computer science terms in the first place.
|Still from a ray traced short film produced by CS371 students|
Framing problems from other domains is a critical element of computational and scientific thought, although it is one that in a computer science or math curriculum might not be studied explicitly after introductory courses. The field of graphics presents a natural opportunity to revisit it in depth for upper-level students. In my experience, about one in ten students from the course will work in graphics professionally after they graduate (e.g., in film, games, visualization, DCC/CAD, academia). For the other 90% of the students, it is important that graphics is a motivating topic for the semester but also that they understand how the skills that they're gaining directly apply to other disciplines. At our school, those include biology, medicine, informatics, geoscience, nuclear physics, and finance. As a case study, we examine the rise of GPU computing in HPC, in which numerical methods and engineering techniques that originated in computer graphics are now enabling revolutionary advances in other fields.
This paraphrases the course introduction http://graphics.cs.williams.edu/courses/cs371/f12/files/welcome.pdf. If you like this approach, then you may be interested in the other materials. I've prepared most of the material for the graphics course in a form that should support its use at other institutions or by individuals, including:
- An inexpensive electronic text (The Graphics Codex), which includes complete lecture notes for a majority of the course
- Eight project assignments, with detailed specifications and notes (there's a ninth in-lab OpenGL exercise that I have not released yet)
- A list of learning objectives and skills for each project
- Robust cross-platform C++ OpenGL and ray tracing support code (The G3D Innovation Engine)
My lecture slides are mostly images to support discussion rather than bullet-points that could be directly used by others, but I am happy to make them available to others on request. As you can see from the inset images, the students gained experience with composition, color palettes, and lighting as well as the fundamental rendering algorithms. We study these topics explicitly and have weekly showings of short films primarily drawn from the Annecy Animation Festival, British Animation Awards, and SIGGRAPH Electronic Theater & Animation Festival. The DVDs of each are available for about US$50 per year and I highly recommend them to everyone in the field.
|Image by CS371 students. The "No Girls Allowed"|
sign was a joke by a female student and comment on
overthrowing the stereotype and historical
trend of computer science demographics.
* N.B., mathematics, logic, and arithmetic have been part of the "liberal arts" curriculum for hundreds of years; computer science has a natural home at a college like Williams. The modern American liberal arts approach to education is about integrating disciplines, including the sciences. It is a common misunderstanding that "liberal arts" means focusing on arts and social sciences over STEM fields.
Morgan McGuire is a professor of Computer Science at Williams College and a professional game developer. He is the author of The Graphics Codex, an essential reference for computer graphics that runs on iPhone, iPad, and iPod Touch.