CS 662: Artificial Intelligence Programming


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

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 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. It's very important to keep on top of things in this class; getting behind will make things very difficult. 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 be conversant with the use of most common data structures, such as lists, queues, hash tables, graphs, and trees. 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:



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.

What language will you be using?

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.

What's the class like?

Primarily lecture.

What will we learn about?

Some of the topics we'll cover are: Searching large spaces, processing unstructured and semi-structured text, 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 the issues surrounding automated processing of textual data.