Programming Assignment 3 (due Sun 27 Apr 2014 8:59 PM PDT)