http://www.cse.msu.edu/~cse231/PracticeOfComputingUsingPython/