Source: http://www.maxwellyoung.net/IntroJava/Syllabus-2019.pdf