https://www.cs.helsinki.fi/intranet/opinnot/semhyv_k17.html
https://www.cs.helsinki.fi/intranet/opinnot/semhyv_k17e.html (in English)