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