Jump to: SoftwareRelated CoursesMachine Learning at TuftsSelf-Study Resources


We expect students will have regular access to a personal computer, which you'll need for attending every in-class 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.


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 time-efficient.

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.:

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:

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

Deep Neural Networks (COMP 139) at Tufts

Reinforcement Learning (COMP 138) at Tufts

Bayesian Deep Learning (COMP 150-BDL) at Tufts

Past Offerings of COMP 135 at Tufts

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:

Self-Study Resources

Here are some useful resources to help you catch up if you are missing some of the pre-requisite 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
    • vector-valued functions of multiple variables, and gradients
    • chain rule of derivatives
    • how to find the maxima or minima of single-variable functions
  • Possible resources:

      • 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


Other Recommended Intro ML Courses

CS 291a at UC-Irvine, taught by Prof. Alex Ihler

Video lectures here: *