stanford cs106a assigment 2