- 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.
Robotics
Robocup