cs 347 puzzle assignments