CompSci 370 - Spring 2022
Introduction to Artificial Intelligence

Semi Required Text

Artificial Intelligence: A Modern Approach, Stuart Russell and Peter Norvig. Be sure to check for errata! (scroll down for a list of current errata)

The current edition is the fourth edition. It is OK to use the third this year; we will indicate if there are any significant differences in the reading between editions.

Other texts

  • Artificial Intelligence: A New Synthesis, by Nils J. Nilsson.
  • The Quest for Artificial Intelligence, by Nils J. Nilsson.

    (Note: Below are machine learning texts that might be of interest to students who want to read further on machine learning.)

  • Pattern Recognition and machine Learning by Christopher M. Bishop. Be sure to download the errata!
  • Neural Networks for Pattern Recognition, Christopher M. Bishop. (It's not as much about neural networks as you might expect given the title. This is a good overview of many machine learning topics, but it is largely superseded by the required text.)
  • An Introduction to Computational Learning Theory, Michael J. Kearns and Umesh V. Vazirani. (A good introduction to computational learning theory - not really the focus of the class though.)
  • Reinforcment Learning, An Introduction, Richard S. Sutton and Andrew G. Barto. (An accessible introduction to reinforcement learning that is also available online.
  • Machine Learning, Tom M. Michell. (An introduction to classic concepts in machine learning - a little dated now.)
  • The Elements of Statistical Learning: Data Mining, Inference, and Prediction, Trevor Hastie, Robert Tibshirani, and Jerome Friedman. (Good coverage of machine learning with more of a statistician's perspective than the others in this list.)
  • Convex Optimization, Stephen Boyd and Lieven Vandenberghe. (Very thorough treatment by real experts and the full text is available online.)

    Tutorials and demos

  • Translating between Python, Matlab and Java
  • Bayesian Networks Without Tears
  • Rabiner's classic HMM tutorial
  • The University of Alberta has a great tutorial and interactive demo on decision trees.
  • Perceptron Demo
  • k-means clustering demo

    Useful Code and Programs

  • matlab is an extremely convenient and useful language for machine learning work. It is installed on computer science department machines and Duke has a site license that should permit any student to run matlab while connected to the University's network.
  • octave is an open source alternative to matlab. It is included with many linux distributions and is now included with the latest version of cygwin, a linux-like environment for Windows.
  • Weka is a great environment for learning and experimenting with a variety of machine learning algorithms.
  • An extensive list of SVM related software is available.
  • ghostview is a free postscript interpreter that will let you viewer older papers stored in postscript format. (Newer papers tend to be stored in pdf.)
  • Virtual Box is a free virtual machine that will allow you to run a second OS inside of a window on your current Windows, Linux, Solaris, or OS X machine. This is useful if you want to try software tools that are not available for your native OS.
  • gnuplot is a useful program for plotting arbitrary functions.
  • Ubuntu is a popular, free, linux distribution that works on most x86 hardware.
  • SWI-Prolog

    Google Search

  • The original page rank paper.
  • A more mathematical view: The $25,000,000,000 Eigenvector, The Linear Algebra Behind Google.


  • Robocup