An introductory course for machine learning theory, algorithms, and applications. Content aims to provide students with the knowledge to understand key elements of how to design algorithms/systems that automatically learn, improve, and accumulate knowledge with experience. Topics covered in this course include decision tree learning, neural networks, Bayesian learning, reinforcement learning, ensembling multiple learning algorithms, and various application problems. Students will be provided opportunities to simulate their algorithms in a programming language and apply them to solve real-world problems. Cross-listed with: EE 695.