Algorithmic Aspects of Machine Learning