Assignment from cs193p Winter 2012-2013 (http://www.stanford.edu/class/cs193p/cgi-bin/drupal/)