Machine Learning to Guide Human Learning: Algorithms and Applications to Programming in Science Education