Machine Learning Foundations for Software Engineers: A Comprehensive Theory-First Approach [draft]