Source: https://www.igic.org/assets/docs/teachmegis_courses/PythonPro_Overview.pdf