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 two-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 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.

Reference Material
There is no definitive textbook. The course material itself is self-contained. There are several references on various topics that might be helpful to you, which I list them below. Many of them are either made publicly available by the authors or are available through the UR digital library website (you will need to log in using your NetID). We will assign readings from some of the books below. The assigned readings will be accessible in one of the approaches above (i.e., you don't need to buy any book if you don't want to). Some readings are advanced, but don't get intimated by them; they are provided to give you a "different voice" from my lectures, and to provide more detail about each topic in case you are interested.

Color Science and Digital Color Imaging Computer Graphics Optics, Display, and Lighting Systems Computer Vision Autonomous Machines Math and Learning Foundations

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:

  • Student Information Sheet: 3%

    The Student Information Sheet allows me to better know you: your interests, background, career goals, etc. Finish it within the first two weeks.

  • News Flash: 7%

    Before each lecture, a student 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 3 slides and 3 mins. Explain why the news is interesting to you.

  • Written Assignments: 30%

    Every 2-3 weeks we will have a written homework assigned. The written assignment is designed to help you better understand the core principles discussed in the lectures. The assignment could ask you to work out some math or discuss things in the assigned readings.

  • Programming Assignments: 20%

    We are expected to have 2 mini 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: 40%

    You will work on a final project that is completely chosen by you. It doesn't have to be a programming-related project. It could be arts, design, system building, or a written paper describing your investigation of a particular concept. Think of it as an independent study, where I am here just to guild you. You will need approval from me for your project within the first two months. Could be team of up to 2 people.

Inclusiveness in Class

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.

Academic Honesty

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!