coursera algo design and analysis part2, programming assignments