Source: https://www.trumbullps.org/Attachments/curr/guides/6-12/math/APComputerSciencePrinciples.pdf