This course is part of the Master in Data Science offered by the African Center of Excelence in Data Science at University of Rwanda. Our course provides an introduction to machine learning and probabilistic modeling. We cover two major areas in machine learning: supervised learning, and unsupervised learning. The learning approach is a mixture of theory and practice. We discuss the motivations behind common probabilistic models, and the properties that determine whether or not such models work well for a particular task. On the one hand, you derive the mathematical underpinnings for many common ML approaches, as well as apply those techniques to model real data. The whole course is illustrated through python code and excercises.