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 2004.

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.

Some common questions:

What are the course requirements?

You'll have a medium-sized homework to do each week, based on the lecture topics for that week. This will typically involve using or adapting an existing AI tool, although some weeks it will involve writing code from scratch. In addition, there will be several larger projects throughout the semester. 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 programs in a fairly short period of time. 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.

- 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?

What language will you be using?

Much of the programming will be done in Python. You'll have two homeworks at the beginning of the class to get you up to speed with Python, which is a relatively easy language to pick up.

You'll also be using some special-purpose languages and tools, such as Jena, which is written in Java, and a neural network package written in C.

What's the class like?

Class structure will vary from week to week. Some weeks, we'll have straight lecture. Other weeks, we'll have a combination of lecture and lab, depending on the material we're covering.

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 spam classification, so you'll also get to learn something about the related technologies, such as XML, RDF, XSLT, and HTTP.