The SPoT assignment from Stanford cs193p Winter 2012-2013 (http://www.stanford.edu/class/cs193p/)