Write a program that reads in the collective works of William Shakespeare and prints out the top N most frequently occurring words. Take care in dealing with punctuation and letter case.
Modify the program so that a list of "stop words" can be supplied which are ignored in the counts. e.g. ignore common articles such as "a" and "the".