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 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 combination of smaller homeworks (6-8) that take about a week to do, and three larger projects. Some homeworks will use or modify existing tools, but most 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 (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.

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 Protege, which is written in Java, and a neural network package written in C.

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.