How does a camera capture visually pleasing pictures? How does a computer magically recognize objects from an image? Why do some pixels look corrupted when playing a video? How does Virtual Reality provide a 360 immersive experience to you? How does a display work? How to render photorealistic graphics and why is it hard to do so in real-time on a mobile device? How does a robot/drone/self-driving car localize itself? These are a small subset of the questions we will explore in CSC 572/292.
In this class, we will first study the fundamental building blocks of visual computing, including digital camera imaging, computer graphics, image/video compression, display technologies, and computer vision. We will then explore application domains that build on top of these fundamental building blocks such as AR/VR, computational photography, robotics, and self-driving cars. The course will necessarily span many scientific and engineering domains such as color science, neuroscience, optics, electrical engineering, and computer science.
A central theme of the course is to synergistically co-design and co-optimize across many important layers of a computer system, including application development, programming language and framework, compiler, OS, and hardware architecture.
This class will combine instructor-led lectures, student-led presentations, paper reading/critiquing, and programming assignments and projects.
There isn't any hard prerequisite for this course. A key message I want to communicate to you all is that everything we will learn can be derived from first principles. Nothing is mysterious as long as you follow the basic laws of physics and exercise critical thinking.
That said, you will find your learning experience much more pleasant if you have a solid understanding of the following basic topics, which shouldn't be anything beyond your high-school and first-year college education:
- Linear algebra, especially matrix and vector computations
- Basic calculus
- Basic probability
- Basic physics
- Computer systems (CSC 252 equivalent), could be useful to understand the hardware part of the course
At the start of the semester, there will be a homework 0, which is designed to calibrate whether you have the basic knowledge of the topic above. That homework is not meant to discourage you, but to enable you to better prepare for the course, knowing on what topics you need a bit more time to refresh your brain.