https://medium.com/@dober.code/a-detailed-review-of-the-udacity-introduction-to-programming-nanodegree-dc1b2132f531