COS 324: Introduction to Machine Learning
Princeton University
Guidance for Interested Students
This course aims to provide a broad introduction to different machine learning paradigms and algorithms, providing a foundation for further study or independent work in machine learning, artificial intelligence, and data science. Topics include linear models for classification and regression, support vector machines, clustering, dimensionality reduction, deep neural networks, Markov decision processes, planning, and reinforcement learning. The goals of this course are three-fold:
MAT103, MAT202 (or equivalent, i.e. EGR154/MAT204/MAT217), and COS226. These pre-reqs are strict, and we assume all students have satisfied them before enrolling (i.e. co-enrollment in pre-reqs is insufficient). Do not email course staff about your individual situation regarding pre-reqs. Unfortunately, we don’t have the resources to answer individual emails about pre-reqs and have prepared this document to provide guidance instead.
MAT pre-reqs. COS324 is offered every semester and you should take it after having completed MAT103 and MAT202. From feedback from prior students, having additional preparation is often helpful (e.g. MAT201, COS240) but not necessary and we’ve provided the below pre-work resources to help students who may be coming from specific backgrounds.
COS pre-reqs. We assume that all students have taken COS226. It is also helpful to have experience programming in Python. Take a look at the pre-work resources for Python; if you already know 90% of the material, you should be reasonably prepared in terms of programming ability.
Students are welcomed to take any precept that fits into their schedule, regardless of background. For Fall 2023, we will be offering an 80-min extended time precept (P05, Thursdays 3-4:20pm). We encourage students who generally feel “less comfortable” with the pre-req material to sign up for this precept. It will go over the same material as the 50-min precepts but at a slower pace. Note that attending this precept is not an alternative to satisfying the pre-reqs; we expect all students to have satisfied them but recognize that some students would benefit from an extended time precept.
There is no official textbook for this course. We primarily use our course notes, which can be found here: https://princeton-introml.github.io/. Our course notes provide a rough outline of the topics we cover in the course. We also supplement our course notes with additional readings which we provide throughout the semester. At this time, we’re not able to provide a list of additional readings before the semester starts.
For those who prefer textbook resources, we recommend the following textbooks (which are made freely available online) to supplement our course notes and additional readings, with the large caveat that only parts of these textbooks are relevant to our course, that the notation used and depth in which content is covered likely differs from our course, and that our course materials are the standard for our assessments (i.e. quizzes, assignments, exams):
Gareth James, Daniela Witten, Trevor Hastie, and Robert Tibshirani, 2021. Introduction to Statistical Learning (link).
Marc Peter Deisenroth, A. Aldo Faisal, and Cheng Soon Ong, 2020. Mathematics for Machine Learning (link).
Ian Goodfellow, Yoshua Bengio, and Aaron Courville, 2016. Deep Learning (link).
Joseph K. Blitzstein and Jessica Hwang, 2019. Introduction to Probability (link).
Richard S. Sutton and Andrew G. Barto, 2015. Reinforcement Learning: An Introduction (link).
Students often take this course with a variety of backgrounds. From past feedback, we are providing resources for the topics that students with particular backgrounds may find particularly useful. If one of the following categories describes you, we strongly recommend you work through the relevant pre-work resources before the course begins.
For students who have only programmed in Java: we will be using Python in this course, and learning it for the first time is non-trivial and often challenging. We strongly encourage you to work through at least one of the following resources. We will be using Google Colab (link) in this course and recommend that you work through the below material using Colab, typing out each statement and making sure you understand it before moving on. Unless otherwise specified, we recommend you work through a resource in its entirety.
For students who have not seen multivariable calculus (e.g. MAT201): The main concept that we’ll be using from multivariable calculus is computing partial derivatives and gradients. We will cover this in our first few precepts, but it may take a while to fully understand. We recommend the following materials for further review:
For students who aren’t familiar with probability: We will cover the relevant probability concepts and would recommend the following materials for further review:
For students who generally feel less comfortable with math (particularly linear algebra): Here’s a few resources that will help refresh some basic math notation in a friendly way: