Princeton Algorythms (part 1) programming assignments