This course will introduce students to the topic of machine learning, which is key to the design of intelligent systems and gaining actionable insights from datasets that arise in computational science and engineering. The course will cover the theoretical foundations of this topic as well as computational aspects of algorithms for unsupervised and supervised learning. The topics to be covered include: The learning problem, clustering and k-means, principal component analysis, linear regression and classification, generalized linear models, bias-variance tradeoff, regularization methods, maximum likelihood estimation, kernel methods, the representer theorem, radial basis functions, support vector machines for regression and classification, an introduction to the theory of generalization, feedforward neural networks, stochastic gradient descent, ensemble learning, model selection and validation.