Personalizing education with algorithmic course selection