Source: https://blogs.ubc.ca/etec511dlg1/files/2013/10/Knewton-Adaptive-Learning-Whitepaper.pdf