Source: https://www-lisic.univ-littoral.fr/~verel/TEACHING/11-12/sac-M1/prj-sac-progSC.pdf