The following data science book also does a great job of balancing problem solving with underlying theory. https://www.manning.com/books/data-science-bookcamp And it starts with sample-space probability problems in Python, much like Peter’s tutorial.