Will
we have live meetings? Is this course synchronous or asynchronous?
This course includes both synchronous and asynchronous content. We
will have a weekly live meeting on Zoom for a “chalk talk”, and you will
also have to watch a weekly pre-recorded video of a programming/demo
session. Some weeks may also have asynchronous pre-lecture content that
you should watch or read before the live meeting.
Am
I required to attend the live meetings, or can I watch a recording
later?
The live meetings will be recorded. However, you will be required to
attend the final exam session at the live meeting time.
How
can I get help or ask questions about the course material?
There are two ways to get help:
- Post a question on the Q&A forum for this course.
- Attend a Zoom office hours session with the instructor.
Note that you can ask questions anonymously on the
Q&A forum, if you feel more comfortable that way.
How will my work
in this course be evaluated?
Your mastery of the course material will be evaluated by your
performance on:
- Homework problem sets: Almost all questions on the
problem sets are computer-graded, and you’ll have instant feedback as
you work, so you’ll know whether your answers are correct or not. If you
manage your time well, you’ll be able to get help or ask clarifying
questions so that you can improve your understanding on questions you
did not answer correctly, and re-submit a corrected answer for
credit.
- “Lab” assignments: Some modules include a “lab”
assignment that expands on the technique you learned that week. You’ll
be given a Python notebook with some cells missing; you’ll have to fill
in code or answer questions in the missing cells. These assignments are
partly computer-graded with instant feedback, and partly manually
graded.
- Exams: The fall and spring sections will include a
midterm exam and a final exam. The summer section has a final exam.
The relative weight of each of these components will be shared via
the course syllabus in the first week of the semester.
What should I expect
from the course exams?
Each exam will have the following four sections:
- Basics of ML models: these questions will typically
ask you to do some computations involving a machine learning model. This
section will also include one question where you will be given some
data, and you will have to use it to fit a specific model, and then make
predictions.
- Real world usage: this section is for evaluating
your understanding of practical concerns we have discussed, that apply
when using ML models with real data to solve real problems. Typical
questions in this section might ask you to select the most appropriate
approach for a particular machine learning problem, or might ask you
about case studies that we discussed during the course.
- Short questions/no computation: these questions are
about the intuition and the fundamental concepts underlying the machine
learning models we have discussed. Be prepared to answer questions about
any derivations we worked through in class, and about the visualizations
and examples from the Colab lessons.
- Coding question: each exam will include one
“substantial” coding problem, in the last section. This question is
likely to require a much deeper understanding of ML and ML programming
than the “basic” question asked in the first section.
During the exam, you will be permitted to use a (limited-size)
reference sheet that you have prepared, and the official API
reference pages for: scikit-learn, numpy, pandas, keras, tensorflow.
How much
time should I expect to spend on this course?
This is a 3-credit course. During a fall or spring semester, the
median student should spend at least 3 hours/week/credit → 9 hours/week
for a 3 credit course. During the summer semester, which is a couple of
weeks shorter, you might spend a little more than 9 hours/week.
A typical week will include the following:
- pre-lecture reading (some weeks) or study time (30-60 minutes)
- a “chalkboard lecture” about 120 minutes long
- a “Python notebook” video about 90-120 minutes long
- a homework problem set (estimated time: 1-2 hours)
- a lab assignment (estimated time: 2-3 hours)
A student who is not very comfortable with the prerequisites may have
to spend more time than the estimated 9 hours/week in order to do
well.
What are the
prerequisites for this course?
This course is mathematically oriented, and undergraduate-level
knowledge of probability and linear algebra is required.
If you want to brush up, you can review:
- Review of
probability theory
(http://cs229.stanford.edu/section/cs229-prob.pdf)
- In Boyd &
Vandenberghe “Introduction to Applied Linear Algebra”
(http://vmls-book.stanford.edu/vmls.pdf), these sections:
- Section I, Chapter 1 (Vectors): vectors, vector
addition,scalar-vector multiplication, inner product (dot product)
- Section I, Chapter 3 (Norm and distance): Norm of a vector,
euclidean distance
- Section II, Chapter 5 (Matrices): matrix notation, zero and identity
matrices, sparse matrices, matrix transposition, matrix addition,
scalar-matrix multiplication, matrix norm, matrix-vector
multiplication
- Section II, Chapter 8 (Linear equations): systems of linear
equations
- Section II, Chapter 10 (Matrix multiplication): matrix-matrix
multiplication
- Section II, Chapter 11 (Matrix inverses): Inverse, solving a system
of linear equations
- Also a quick optimization review: Appendix C (Derivatives and
optimization)
There will be a significant programming component to this course, and
class and homework exercises will be in Python. You do not need to know
Python a priori, but you should know basic programming concepts and have
experience programming in some programming language, and you should be
comfortable picking up Python on your own. We will review some important
Python basics in the first week of the course.
Do
I need previous experience with machine learning for this course?
This is an introductory graduate level course and no prior machine
learning knowledge will be assumed.
Do
I need a computer with a GPU? Will I have to install some software on my
computer?
In this course, we will use the Google Colab environment for
practical programming demos and exercises. Colab is a free browser-based
environment for Python programming. You don’t need to install anything
to use Colab - you’ll just need a browser.
Do I need a textbook for
this course?
You won’t need to buy a textbook - all of the materials you’ll need
will be posted on the course site.
What topics will be included?
Here is a rough outline of the course content (subject to
change):
- Intro to ML, Python + numpy, exploratory data analysis
- Linear regression
- Gradient descent, bias-variance tradeoff
- Model selection and regularization
- Logistic regression for classification
- K nearest neighbor
- Decision trees, ensembles
- Support vector machines, kernels
- Neural networks
- Deep learning, convolutional networks, transfer learning
- Deploying machine learning systems
- Unsupervised learning
- Reinforcement learning (optional, not on exam)
If you need extra time on an assignment because of illness (including
COVID-19), religious practice, or a death in the immediate family,
please contact the student advocate.
The student advocate will reach out to your professors directly to
recommend excused absences or extended deadlines, so you do not need to
share any details of your personal circumstance with me.
If you need extra time on an assignment or exam because of a
disability (for example: you need to take frequent breaks from a
computer screen because of a vision problem, or you have an executive
function disorder), you will need to work with the Moses Center to
request accommodations beyond the “48 free late hours”. Please refer to
the “Moses Center Statement of Disability” section.
(Note that disability accommodations are not retroactive, so you
should begin this process at the beginning of the semester if you think
you may need it, rather than waiting until you are already
struggling.)
The Moses Center will reach out to your professors directly if your
accommodations are approved, so you do not need to share any details of
your disability with me.