While there has been tremendous technological leaps in the construction of modern cameras, their basic design more or less remains the same as that of the "camera obscura" or the pinhole camera. The last few decades has seen the development of computational imaging sensors --- systems whose design are inspired by the specifics of the problem they intend to solve. At the heart of these computational sensors is the co-design of optics and processing for improved information throughput. This course starts with understanding the fundamentals of vision sensors - how they function, how they are built, the inherent tradeoffs, and how to use them effectively. Starting from here, we will study a how computational sensor designs alter these basic tradeoffs to provide enhanced solutions for a range of imaging applications including high-speed, high dynamic range and multi-spectral imaging, 3D acquisition, and programmable imaging.