These resources are listed here in case you want to explore the topics further. The section on programming is important if you are not familiar with Python, or with installing Python libraries. The section on LaTeX is meant to be a guide for typesetting professionally formatted reports and papers.

all   open all close all

  • S. Shalev-Shwartz and S. Ben-David, Understanding Machine Learning, Cambridge University Press, 2014. Several notes for this class are adapted from this wonderful book.
  • I. Goodfellow, Y. Bengio, A. Courville, Deep Learning, MIT Press 2016
  • C. M. Bishop, Pattern Recognition and Machine Learning, Springer 2006
  • T. Hastie, R. Tibshirani, and J. Friedman, The Elements of Statistical Learning — Data Mining, Inference, and Prediction, Springer 2001
  • K. P. Murphy, Machine Learning — A Probabilistic Perspective, MIT Press 2012
  • S. J. Dickinson, A. Leonardis, B. Schiele, and M. J. Tarr, editors, Object Categorization — Computer and Human Vision Perspectives, Cambridge 2009


  • Anaconda, a stable and coherent distribution of Python for data science. It is strongly recommended that you uninstall any version of Python 3 you may have on your computer and install the Anaconda version 3.6 (or later, if available). This distribution includes Python, a Python editor (Spyder), several basic libraries for data science (numpy, scipy, and more), visualization libraries (including matplotlib), machine learning libraries, including scikit-learn. This is essentially all you need for this course. This distribution places all relevant files in the appropriate places, and you won't have to struggle with linking libraries, etc. Once you installed Anaconda, run the Anaconda Navigator and familiarize yourself with the tools. Pay attention in particular to the Jupiter notebook launcher, as you will submit homework as Jupiter notebooks.
  • Python 3 for programmers is a note written for this class and meant to quickly introduce you to Python 3 if you already know a programming language well. If you do not, this course is not for you.
  • Google's Python class is a leisurely but clear Python tutorial.
  • The official Python 3 Documentation also includes a tutorial. Use the library reference and the language reference as your official sources of information about Python 3. You can also find information by googling, but make sure you refer to version 3 of Python if you do so.
  • Several tutorials on Jupyter notebooks can be found online. Here is one from Dataquest.

COMPSCI 371D, Duke University, Site based on the fluid 960 grid system