In Computer Graphics, we seek to model the physical appearance of real life scenes by studying the complex interactions between light and materials. On the one hand, we use rendering techniques to synthesize computer generated images of virtual scenes, enabling us to faithfully visualize the photo-realistic and physically plausible appearance of our computer models. However, computer graphics is about much more than just generating pretty pictures. Graphics has a natural synergy with many other fields in computer science including robotics, computer vision, human-computer interaction, and machine learning. As a result, many of the algorithms we develop have broad applications that extend beyond simulation, modeling, and visualization. Indeed, the same physical models we use in graphics to render images (e.g. camera, material, geometry, and lighting models) can also be used to develop algorithms that mine today's vast collections of digital images for richer scene understanding, paving the way towards smarter, more intelligent cameras that augment our visual perception.