Here's the course description from the department handbook:

0203-662: Artificial Intelligence Programming (4). Prerequisites: CS
245 [Data Structures and Algorithms]. Use of artificial intelligence
techniques to solve large scale problems. Search strategies,
knowledge representation, and other topics chosen from: simulated
annealing, constraint satisfaction, logical and probabilistic
reasoning, machine learning, expert systems, natural language
processing, neural networks, genetic algorithms, and fuzzy logic.
Both theoretical foundations and practical applications will be
covered. Coursework includes written assignments and programming
projects. Four hours lecture. Offered Spring 2006.

Could you be less specific?

The purpose of this class is to teach you about the design of
intelligent systems. This includes designing programs that can adapt
to new situations, make smart decisions in uncertain situations, and
function in complex, unpredictable environments (like the real
world).

We're NOT going to be talking about how to build HAL, or Data, or the
T-1000. We won't spend much time talking about consciousness, or
whether machines can be as intelligent as people. We'll be talking
about how to make existing software act smarter.

What are the course requirements?

You'll have approximately nine assignments to complete throughout the
semester, typically taking 1 or 2 weeks each. Some of these will be
pen-and-paper, but most will involve a nontrivial amount of
programming. You will also have two midterm exams and a final. More
detailed info can be found on the syllabus.

What sort of background should we have?

You should be comfortable writing medium-sized (200-300 lines)
programs in a fairly short period of time (about a week). You should
also be familiar with the concepts from discrete math, especially
graphs, basic probability, combinatorics, and big-O notation. Here's a
few sample questions that you should be able to answer - if you don't
know how to answer these (or at least how to approach them), you may
want to dig out your discrete math text.

Math questions:

- What does it mean for a graph to be strongly connected?
- What does it mean for an algorithm to run in O(n) time? What about O(2^n) time?
- Given an alphabet of 26 characters, how many different six-letter arrangements are there?
- Given that the first three letters of a word are 'cat', what is the probability that the word is 'cattle?'
- What is the probability of flipping a coin four times in a row and getting 'heads 'each time? What about at least one head?
- What is the probability of flipping a fair coin and getting 'heads', given that you've just gotten 25 heads in a row?

Programming questions. If these look straightforward to do in your favorite programming language, you're in good shape. Otherwise, you may want to dig out your Data Structures text for some review.

- Given a list on n elements, how would you find the smallest? How much time will this take?
- What is a priority queue? How can it be implemented using a heap?
- Write a recursive function to traverse a binary tree in-order.
- Given a list of (name, value) pairs, sort the list in ascending
order of
*values*. - Given an HTML document, find all the anchor links and print them out.

What language will you be using?

Almost all of the programming will be done in Python. You'll have two
assignments at the beginning of the class to get you up to speed with
Python, which is a relatively easy language to pick up. I will assume
that you do not have any familiarity with Python, but that you are
comfortable with the essential concepts of programming, and that your
learning curve will involve learning the specifics of Python and its libraries.

You'll also be using some special-purpose languages and tools, such as
Protege, which is written in Java.

What's the class like?

Primarily lecture.

What will we learn about?

Some of the topics we'll cover are: Searching large spaces, knowledge
representation, machine learning, decision making, and planning. The
syllabus has a tentative list of topics.
The projects will have a "web-based" focus, including focused
crawling, the Semantic Web, and text classification, so you'll also
get to learn something about the related technologies, such as XML,
RDF, and HTTP.