Source: https://www.cuyamaca.edu/faculty-staff-resources/academic-senate/curriculum/outlines/files/cs/cs282.pdf