Source: https://www.acm.org/binaries/content/assets/education/curricula-recommendations/computerscience2008.pdf