stanford cs106a assigment 1