Jump to: Software • Related Courses • Machine Learning at Tufts • SelfStudy Resources
Hardware
We expect students will have regular access to a personal computer, which you'll need for attending every inclass session as well as completing all homeworks and projects. Your computer should be capable of running Python processes as well as running a web browser that displays graphics visually.
To attend each class successfully, you'll need to be able to do two things at once on your machine:
 run Zoom to interact with others
 run an Jupyter notebook either locally (strongly recommended) or perhaps via your browser using a service like Google Colaboratory.
Running both simultaneously should be doable for most modern laptops/desktops (anything from around 2012 or later).
If you have concerns about accessing sufficient resources (internet connection quality, lack of access to a computer), please contact instructors via Piazza ASAP. We care deeply about inclusion and we want you to be successful. We can work together with Tufts staff to help you get resources you need. Don't hesitate; please try to work through problems early.
Software
For this course, we require programming assignments to be implemented in Python 3.6+ using a defined environment. Using a consistent language and set of packages allows us to talk about implementation details in class and makes grading solutions more consistent and timeefficient.
Students are responsible for maintaining their own Python software environment on a personal computer.
We highly suggest that you consider the free 'conda' environment manager from Anaconda, Inc.: https://conda.io/docs/userguide/gettingstarted.html
For detailed instructions on our official class environment  comp135_2020f_env  of required open source packages, see the [Python Setup Instructions page]
For getting a custom anaconda environment setup in Colaboratory, this might be helpful: https://rjai.me/posts/googlecolabconda/
Jupyter Quick Start
Every day in class, you'll want to work through a provided 'lab' notebook, distributed as a `.ipynb' file from our course starter code repository on Github.
You'll want to download this file and run it on your machine.
To launch a specific notebook file named MyNotebook.ipynb
, here's what you'll do in your Terminal (Linux/Mac) or Command Prompt (Windows):
# Before we can start, be sure your current directory contains `MyNotebook.ipynb`
# First, activate our course conda environment
$ conda activate comp135_2020f_env
# Second, launch the notebook server and direct it to open `MyNotebook.ipynb`
$ jupyter notebook MyNotebook.ipynb
# Should automatically open a browser and take you to an interactive notebook session. Or click `localhost:8888` link below.
For more help on launching a notebook, see Jupyter notebook documentation
Jupyter Resources
If you don't know much about Jupyter, the resources below might be helpful
How to download a Jupyter notebook and open it in your browser
'Play with Data in Jupyter' by Lorena Barba
Python Resources
To gain some fundamental Python skills (assuming you know other programming), we recommend:
Other ML Courses at Tufts
Statistical Pattern Recognition (COMP 136) at Tufts
 2020 spring, taught by Prof. Mike Hughes
 2019 spring, taught by Rishit Sheth, Ph.D.
 2017 fall and earlier, with Prof. Roni Khardon (sorry, website no longer available)
Deep Neural Networks (COMP 139) at Tufts
Reinforcement Learning (COMP 138) at Tufts
Bayesian Deep Learning (COMP 150BDL) at Tufts
Past Offerings of COMP 135 at Tufts
 2020 spring, with Prof. Marty Allen
 2019 fall, with Prof. Marty Allen
 2019 spring, with Prof. Mike Hughes
 2018 fall, with Prof. Liping Liu
 2018 spring, with Prof. Liping Liu
 2017 fall, with Prof. Roni Khardon (sorry, website no longer available)
 2016 spring, with Kyle Harrington
Machine Learning at Tufts
For machine learning research activity at Tufts, see the ML Research Group Website:
For a recent listing of ML courses, see:
For current ML research opportunities for students, see:
SelfStudy Resources
Here are some useful resources to help you catch up if you are missing some of the prerequisite knowledge. Please contribute new resources by starting a topic on the class discussion forum.
Vector calculus
 Key Concepts:

 functions of a single variable and derivatives

 functions of multiple variables, partial derivatives, and gradients

 vectorvalued functions of multiple variables, and gradients

 chain rule of derivatives

 how to find the maxima or minima of singlevariable functions

Possible resources:

 'Ch. 5: Vector calculus' of Math for Machine Learning textbook: https://mmlbook.github.io/book/mmlbook.pdf#page=145


 Essentially, the material in Sec. 5.1, 5.2, and 5.3 (up to but not including the Jacobian) should be somewhat familiar

Linear algebra
 Key concepts:

 matrix multiplication

 matrix inversion

Possible resources:

 Goodfellow et al's chapter on Linear Algebra: http://www.deeplearningbook.org/contents/linear_algebra.html

 Immersive Linear Algebra: http://immersivemath.com/ila/

 Essence of Linear Algebra videos: https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab

 'Computational Linear Algebra for Coders' course by fast.ai: https://github.com/fastai/numericallinearalgebra/blob/master/README.md
Probability
 Key concepts:

 Sum rule and product rule of probability

 Bayes theorem and associated algebra

 Continuous and discrete random variables

Possible resources:

 Probability review notes from Prof. David Blei (Columbia Univ.): http://www.cs.columbia.edu/~blei/fogm/2016F/doc/probability_review.pdf
Other Recommended Intro ML Courses
CS 291a at UCIrvine, taught by Prof. Alex Ihler
Video lectures here: * https://www.youtube.com/playlist?list=PLaXDtXvwYoDvedS3f4HW0b4KxqpJ_imw