Description at https://edu.epfl.ch/coursebook/en/foundations-of-software-CS-452