Course Organization

In the first part of the course students will:

  • Familiarize with the basic aspects of the architectures of smartphones, client-server protocols and some of the key components of mobile devices.
  • Develop and implement 2 mobile applications related to two core vision problems.

In the second part students will work on a class project as well as present and discuss papers related to state-of-the-art mobile vision applications.

Student will be required to summarize their results into a project write-up and present their projects in class.

Some examples of projects are:

  • Recover the 3D layout of a room and augment it with new IKEA furniture
  • Recognize your friend's face and link it to your friends on Facebook
  • Localize yourself in a google map and visualize the closest restaurant on the smart phone's display
  • Detect and face and turn it into a cartoon (and share it with friends)
  • Create HDR panoramic images
  • Recognize landmarks on the Stanford campus (e.g.: Memorial Church) and link it to relevant info from the web (Wikipedia, photos from other users, etc...)


Problem Sets

Students will be evaluated on the main tasks above through two problem sets. Each problem set will cover the following areas of computer vision:

  • Feature detection, descriptors, image matching, panorama and HDR image construction
  • Object and landmark recognition, image classification
Programming assignments will be implemented on an NVIDIA Tegra based Android tablet. Starter code will be provided for each problem set.


Project Proposal Guidelines

Your proposal (maximum 4 pages) should include the following:

  1. Title and authors
  2. Introduction: the problem you want to solve and why
  3. Technical details
    • How do you propose to solve it?
    • The target mobile platform
  4. Milestones (dates and sub-goals)
  5. References

Please submit your proposal as a PDF document.


Paper Presentation Guidelines


  • Approximately 12 minutes per group.
  • Followed by an additional 5 minute Q & A session.
  • Group members determine how to split the presentation tasks.

What to cover.

  • Introduction: Introduce the problem, expain why it is important to solve it; indicate the method that is proposed to solve it.
  • Review of previous work: Make sure that an appropriate background is given. Don't hesistate to review previous/preliminary concepts that are critical for the undestanding of the presented work. If a good background is given, it is easier to explain the details of the method and technical solution later on.
  • Why the presented method is better than previous work and/or explain the key contributions of this work.
  • Technical part: Summary of the technical solution, followed by the details of the technical solution.
  • Experiments: Present experimental results with plots, graphs, images and visualizations.
  • Conclusions: What's the take home message?


  • Evaluation is based on the clarity of the presentation, quality of the slides, how well you get your message across, and how well you handle the questions at the end.

Class participation.

  • Be prepared to ask questions following the paper presentation. The quality of the questions & discussion panel will be used for evaluating class participation.


Project Presentation Guidelines
  • Each team has 8 minutes for their presentation
    • Approximately 6 minutes for the talk, 2 minutes for Q & A.
    • The time limit will be strictly enforced.
  • Email your presentation to cs231m+fp@gmail.com.
    • Submit your slides as a PDF.
    • Must be submitted by Sunday, June 1st!
  • Make sure to include:
    • Problem Motivation/Description.
    • Technical Approach.
    • Results.


Final Project Report Guidelines

General Guidelines:

  • Maximum 10 pages.
  • Submit the report as a PDF document.
  • Include an archive containing the source code.
  • Email to cs231m+report@gmail.com by June 7th.

Include the following:

  • Title and authors
  • Abstract: A short summary of the project with main results.
  • 6 Sections:
    • Sec 1: Introduction: introduce the problem you want to solve, expain why it is important to solve it, and indicate the method. Explain its relevance for mobile applications.
    • Sec 2.1: Review of previous work (i.e. previous methods that have explored a similar problem).
    • Sec 2.2: Describe why your method is better than previous work. Summarize the key main contributions of your work.
    • Sec 3.1: Summary of the technical solution.
    • Sec 3.2: Technical part — details of the technical solution. You may want to decompose this section into several subsections. Add figures to help your explanation. Explain the details of your implementation on the mobile platform and relevant architecture (for instance, how you split the work between client and server) .
    • Sec 4: Experiments — present your experimental results of the method you have implemented with plots, graphs, images and visualizations. Show numerical/quantitative and qualitative results. Show a performance analysis on the mobile device in term of efficiency, speed, memory and computational demands.
    • Sec 5: Conclusions — what's the take home message?
    • Sec 6: References.


  • Two problems sets. Each problem set will include a programming assignment and a write-up.
  • Present and discuss one set of papers. List of recommended papers.
  • Course project: implement a significant computer vision based application on a mobile platform.


Grading Policy
  • 40% : Two programming assignments.
  • 40% : Course project
  • 15% : Team presentation
  • 5% : Class participation



Knowledge of linear algebra, probability, as well as concepts introduced in either CS131 or CS231A and CS232 (or equivalent) are necessary for understanding the material covered in this class. C++ (or Java) programming experience is expected.


Number of Units

3 or 4 — Every student is required to do a course project.



We recommend posting class related questions on Piazza.