Lecture: 3 hours
Discussion: 1 hour

Catalog description
Introduction to machine learning. Supervised and unsupervised learning, including classification, dimensionality reduction, regression and clustering using modern machine learning methods. Applications of machine learning to other fields.

Prerequisites ECS 060 or ECS 032B or ECS 036C; or Consent of Instructor. Probability equivalent to STA 032 or STA 131A or ECS 132 recommended; linear algebra equivalent to MAT 22A recommended.

Credit restrictions, cross listings: None

Summary of course contents

This course will provide an introduction to machine learning methods and learning theory. Students will acquire a general background on machine learning and pattern recognition, including state-of-the-art techniques in supervised and unsupervised learning. The course will include five problem sets that are related to the course outline. Students will work individually or as part of teams to complete a term project that will pertain on the application of these methods in different scientific fields.  Topics will include:

  1. Supervised learning
    1. Regression
    2. Artificial Neural Networks
    3. Support Vector Machines
    4. Naive Bayes Classifiers
    5. K-Nearest Neighbors
    6. Decision Trees
  2. Unsupervised learning
    1. Clustering (K-means, hierarchical)
    2. Dimensionality reduction methods (t-SNE, PCA)
  3. Special Topics
    1. Feature Engineering
    2. Cross-validation
    3. Deep Learning
    4. Embeddings
  4. ML applications

Students will have to complete a computational/review project in coordination with the instructor.

Goals: Students will (1) Acquire fundamental knowledge of learning theory; (2) Learn how to design and evaluate supervised and unsupervised machine learning algorithms; and (3) Learn how to use machine learning methods for multivariate data analysis in various scientific fields.

Illustrative reading

  • C. Bishop. Pattern Recognition and Machine Learning. Springer, 2007
  • Technical papers and class notes will be used.

GE3: Science & Engineering

There is an overlap with ECS 170, related to feature extraction methods and Bayesian methods. This overlap is minimal and the treatment of the underlying methods is fundamentally different:  ECS 170 focuses on AI algorithms and logic-based decision making while ECS 171 takes a pattern recognition and machine-learning approach.

Instructors I. Davidson, N. Matloff, and I. Tagkopoulos

History:   Updated 9.7.2018 (CSUGA): Prerequisites updated to include new lower division ECS series courses.  2012.26.28 (I. Davidson and I. Tagkopoulos): new course proposal.


1 X an ability to apply knowledge of mathematics, science, computing, and engineering
2 X an ability to design and conduct experiments, as well as to analyze and interpret data
3 an ability to design, implement, and evaluate a system, process, component, or program to meet desired needs, within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
4 an ability to function on multi-disciplinary teams
5 X an ability to identify, formulate, and solve computer science and engineering problems  and define the computing requirements appropriate to their solutions
6 an understanding of professional, ethical, legal, security and social issues and responsibilities
7 an ability to communicate effectively with a range of audiences
8 the broad education necessary to understand the impact of computer science and engineering solutions in a global and societal context
9 a recognition of the need for, and an ability to engage in life-long learning
10 X knowledge of contemporary issues
11 X an ability to use current techniques, skills, and tools necessary for computing and engineering practice
12 X an ability to apply mathematical foundations, algorithmic principles, and computer science and engineering theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices
13 X an ability to apply design and development principles in the construction of software systems or computer systems of varying complexity