This coherent introduction to machine learning for readers with a background in basic linear algebra, statistics, probability, and programming is suitable for advanced BSc or MSc courses. It covers theory and practice of basic and advanced methods such as deep learning, Gaussian processes, random forests, support vector machines and boosting.