Visual computing systems are always fascinating to me. How does a camera capture a visually pleasing picture? How does a computer algorithm magically recognize objects from an image? Why do some pixels look like corrupted when playing back 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 that 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.
The purpose of this course is three-fold. First, we want to increase your knowledge of the subject matter. We hope that by the end of the class, you will be able to comfortably talk about how today's mobile visual computing systems work, both in theory and principle as well as some of the practical aspects. Second, just as important as learning new material, we want to provide an environment that promotes and rewards creative and deep thinking. In the end, we want you to identify new research challenges in mobile visual computing and have a reasonably clear idea how to go about addressing them. Finally, this course will help sharpen your presentation skills as we provide plenty opportunities for technical presentations as well as observing others presenting.
Computer Systems and Architecture
- Computer Systems: A Programmer's Perspective
- Introduction to Computing Systems: From Bits and Gates to C and Beyond
- Multiple View Geometry
- Computer Vision: Algorithms and Applications
- Computer Vision: Models, Learning, and Inference
- Computer Vision: A Modern Approach
- Digital Image Processing
- Fundamentals of Digital Imaging
- The H.264 Advanced Video Compression Standard
- Physically Based Rendering: From Theory To Implementation
- Fundamentals of Computer Graphics
- Computer Graphics: Principles and Practices
- Point-based Rendering
- Foundations of Physically Based Modeling and Animation
- Physics for Game Developers
- Virtual Reality
- Computational Principles of Mobile Robotics
- Introduction to Autonomous Mobile Robots
- Deep Learning
- The Elements of Statistical Learning
- Numerical Algorithms
- Convex Optimizations
- Linear Algebra: Foundations to Frontiers
While the exact grading scheme is still being decided, the final grades will likely be assigned with these proportions. The percentages are roughly estimates/my best guesses as of now:
- News Flash: 10%
Before each lecture, everyone will present a piece of recent tech news that the presenter finds interesting. It does not have to be related to the course material. Use at most 2 slides and 2 mins max. Explain the background and why the news is significant.
- Paper Critiquing/Presentation: 40%
We will assign papers for each module to be discussed in class. Each paper discussion will be led by a student. You will either be presenting the paper or writing a paper critique if you are not presenting. See the Critique Guide and the Presentation Guide for my expectations and how you will be evaluated.
You must participate in class discussions for papers that you do not present. Say something about every paper we discuss! Class participation is mandatory and will contribute to your presentation grade.
- Programming Assignments: 30%
We will have 2~3 programming assignments, which mostly will ask you to implement some existing visual computing algorithms, but you don't have to be constrained by what you have learnt and how they are implemented today. Use your imagination and be creative. Remember: the devil is in the detail!
- Final Project: 20%
You will choose one of the two "tracks" when it comes to the final project: students who have taken CSC 252 before and/or have interests in computer systems and architecture could choose the "systems track", where the focus is to understand how to better design/optimize computer systems for visual computing; students who are more interested in the application aspect of visual computing could choose the "application track", where the focus could be to develop new visual applications or new algorithms that enable new applications.
Everyone — the instructor, TAs, and students — must be respectful of everyone else in this class. All communication, in class and online, will be held to a high standard for inclusiveness: it may never target individuals or groups for harassment, and it may not exclude specific groups. That includes everything from outright animosity to the subtle ways we phrase things and even our timing.
For example: do not talk over other people; don't use male pronouns when you mean to refer to people of all genders; avoid explicit language that has a chance of seeming inappropriate to other people; and don't let strong emotions get in the way of calm, scientific communication.
If any of the communication in this class doesn't meet these standards, please don't escalate it by responding in kind. Instead, contact the instructor as early as possible. If you don't feel comfortable discussing something directly with the instructor — for example, if the instructor is the problem — please contact the advising office or the department chair.
Student conduct in CSC 572/292 is governed by the College Academic Honesty Policy and the Undergraduate Laboratory Policies of the Computer Science Department. The teaching staff will enforce them aggressively and strictly. The following are additional details specific to CSC 572/292.
Exams in CSC 572/292 must be strictly individual work.
Collaboration on assignments among team members is of course expected. Collaboration on assignments across teams (or among individuals on non-team-based assignments) is encouraged at the level of ideas. Feel free to ask each other questions, brainstorm on algorithms, or work together at a whiteboard. You may not claim work as your own, however, unless you transform the ideas into substance by yourself. This means you must leave any brainstorming sessions with no written notes.
Similarly, you are welcome to read anything you find on the web, but you must close all web pages before beginning to write your code. You are not permitted to repeatedly consult a source. You can read it, understand it, put it away, and write your own similar code, but you must not copy anything. Both electronic copy-and-paste and copying through short-term memory are expressly forbidden.
To minimize opportunities to steal code, all students must protect the directories in which they do their work.
For purposes of this class, academic dishonesty is defined as:
- Any attempt to pass off work on an exam that didn't come straight out of your own head.
- Any cross-team collaboration or copying of artifacts (substance) in which the collaborating parties don't clearly and prominently explain exactly who did what, at turn-in time.
- Any activity that has the effect of significantly impairing the ability of another student to learn. Examples here might include destroying the work of others, interfering with their access to resources, or deliberately providing them with misleading information. (Note too that grades in CSC 572/292 are assigned on the basis of individual merit, so there is no benefit, even a dishonest one, to be gained by sabotaging the work of others.)
Finally, if you have any questions about what is permitted and what is not, please ask!