Source: https://info.usherbrooke.ca/informatique/cours/archive-plan-de-cours/h13-plans-de-cours/ift159_2013-1_pdc.pdf