Artificial Intelligence

Semester Spring Summer
Course 605.445.81 - Artificial Intelligence 605.445.31 - Artificial Intelligence
Instructor Steve Butcher
TA None None
Time Anytime Anytime + 4:30-7:35p
Place Online Online + K7 (5/23, 6/20, 7/18, 8/8)
Required Textbooks Artificial Intelligence: A Modern Approach, 3rd Edition By Norvig & Russell. ISBN13: 978-0136042594
This is a latest edition. Some reviews have said that it is more like 2.1 than 3.0, we'll muddle through. Although I have placed the book in the online EP bookstore, buy it where you can get it the cheapest.

Artificial Intelligence is a broad field covering topics ranging from game playing to localization algorithms, constraint satisfaction problems to neural networks. Many of the topics have their own courses (Neural Networks, Machine Learning, Bayesian Networks). By necessity, this will be a survey course requiring quite a bit of reading and self-study on student's part. Class time will be devoted to lectures and demonstrations covering the key points of the reading material but homework will often depend on information not necessarily provided in class.

This is a great time to take AI as we just had the 100th anniversary of the birth of Alan Turing considered to be one of the fathers of computing and artificial intelligence.

Once the semester starts, all information about the course, homework submissions, etc. will be provided through Blackboard. The class should be available the first day of the semester. You'll need your JHED and password to login.

There are weekly programming assignments in this course. This makes the course load a bit higher than average if you can't already program or don't know Python. In the "old days" you would have been learning Lisp at the same time. There are also required self-checks and class/online participation.

The required language for this course will be Python. Python is becoming the lingua franca of applied machine learning and statistics in industry through the use of the excellent NumPy, SciPy and matplotlib libraries. It has its foibles but it's a serviceable language for our purposes.

You should have installed Python (around version 2.7 but not 3) on your system before the course starts. You should also have installed NumPy, SciPy, and matplotlib as well as ipython. You can install the kit and kaboodle using Continuum's Anaconda Python distribution. I have also had students install everything on an Amazon server. For getting up to speed with Python syntax, I'd recommend:

If you want a book for reference, I suggest--but do not require--Python Essential Reference (that's the link to the Kindle edition).

You will be using iPython notebook for all of your assignments this semester. If you are unfamiliar with Mathlab-like environments, you can watch some videos to get a sense of what is possible. We will only be using a fraction of iPython's capabilities this semester.

Additionally, I require that your assignments be written in a Functional Style. What I mean by this is covered by the notebook found here: Python in a Functional Style.


If you feel like you might need a refresher in probability or linear algebra, I suggest the excellent tutorials at Khan Academy. I do actually cover some probability so you should concentrate on linear algebra if you feel like you need to.

Alan Turing Year