Today the term Data Science is widely used covering a broad range of topics from mathematics and algorithms to actual data analysis and machine learning techniques. This course provides a thorough survey of relevant methods balancing the theory and the application aspects. Accordingly, the material and the discussions alternate between the methodology along with its underlying assumptions and the implementations along with their applications. We will cover several supervised methods for regression and classification, as well as unsupervised methods for clustering and dimensional reduction. To name a few in chronological order, the topics will include generalized linear regression, principal component analysis, nearest neighbor and Bayesian classifiers, support vector machines, logistic regression, decision trees, random forests, K-means clustering, Gaussian mixtures and Laplacian eigenmaps. The course uses Python and Jupyter Notebook and includes visualization techniques throughout the semester. Time permitting, an introduction to the Structured Query Language (SQL) is provided toward the end of the semester.