This foundations and practice of machine learning (ML) course will introduce students to essential machine learning concepts and techniques. The course will emphasize a learn by doing approach with a heavy reliance upon exercises and assignments in Python and utilizing modern ML packages. The use of Jupyter notebooks will be emphasized as a modern framework for combining actual machine learning models with essentially lab notes documenting the design and development of experiments. Students will learn basic of data representation and visualization as well as common well established practices for characterizing and classifying data. Students will further learn to develop and apply complex modern machine learning models and most important to understand the process that underlies the design and conduct of effective machine learning experiments.