This lecture discusses the basics of machine learning, namely software development techniques that can produce models to explain complex phenomena by observing a number of data. The methods taught are based on mathematical approaches to supervised learning, unsupervised learning, and reinforcement learning. These include perceptrons, support vector machines, hidden Markov models, expectation maximization, deep learning, and others