Source: https://rpg.ifi.uzh.ch/docs/teaching/2021/01_introduction.pdf