Source: http://www.thapar.edu/images/CSSyllabus/MCA603.pdf