Artificial intelligence. Artificial intelligence (AI) is the part of computer science that is concerned primarily with giving computer programs abilities similar to those human abilities that require intelligence. Examples include: playing games, proving theorems, planning courses of action, and solving problems. In addition, AI is concerned with providing computer programs with abilities that, while they may be simple for humans, are extraordinarily difficult to achieve using standard computer science techniques. Examples of such abilities include: understanding and generating natural language (e.g., English), vision, and commonsense reasoning. From a computer science standpoint, AI tackles the truly hard (including intractable, NP-complete) problems, attempting to find satisfactory solutions in a reasonable amount of time. AI is a component of the interdisciplinary field of cognitive science and overlaps significantly with psychology, neuroscience, linguistics, sociology, human-computer interfaces, organization design, and philosophy, among other fields.

An agent-based approach. This course will take an agent-based approach to AI. We will study agents: pieces of software or software and hardware that can autonomously perceive their world, make decisions about it, and take actions. Agents and agent-based systems are increasingly important in computer science as a way of building complex, highly-competent systems. They are especially useful for such things as Web agents (e.g., to buy or sell things, to search for information, to filter information, etc.), personal assistants (to maintain schedules, handle routine e-mail, etc.), as a way of controlling autonomous robots, such as autonomous underwater vehicles, and as a way to control multiagent systems (see, e.g., the CoDA project.

We will start with very simple agents and move toward more intelligent agents as we incorporate AI techniques into their decision-making processes. We will study techniques useful for building such things as intelligent software agents and autonomous robot controllers as well as groups of such agents. These techniques are useful for other AI applications, such as expert systems, planning, scheduling, and natural language processing.

Class versions. The class has two versions: COS 470 is the undergraduate version; COS 570 is the graduate version. These are taught simultaneously in the same classroom and differ primarily by the assignments given to the students. COS 570 is one of the breadth requirements for the PhD program in computer science.

Prerequisites. Aside from the prerequisites listed in the catalog, the class assumes that you can program and that you have some maturity with respect to the study of computer science, but little else. The class is open to majors and non-majors alike. If you do not have the prerequesites listed and you are still interested in the course, please contact me to discuss it.