What is a domain?

Applications that require interaction in the world have to be circumscribed in some way. You can't do everything. AI researchers often describe the constrained task that an application solves as a domain. ``Informally, a task domain is some world that you want to reason about.'' (CI) If you find this use of the term hard to remember, just think of a killer space robot announcing evilly to some task it faces: Ha! Now you're in my domain!

The concept of a domain may be an informal one, but the process of identifying a domain is the distinct and definite first stage of building successful AI applications. A domain should correspond to a coherent set of problems for a program to solve, and a coherent body of knowledge and problem-solving techniques that a program can rely on to solve these problems. The first part of the class project will ask you to define a domain this way -- to describe the problems to address and the knowledge that might go into solving those problems. No programming or logic is involved in identifying a domain, just accurate information and careful thinking about what happens in the world and how a program can respond to what happens in the world. Yet it is probably the most important step in building a real-world computational artifact.

There are both engineering and scientific reasons for this. First, engineering. If you are not very clear in advance about your domain -- about the problems that you are trying to solve and the knowledge you will use to solve it -- then it is very hard to say whether your program is a success or a failure, or even how it could be improved. This has been a hard lesson for the field of AI, where researchers have repeatedly made vague and grand claims about what was possible and outsiders have been disappointed by what actually was achieved.

Second, science. When application designers identify a body of tasks and a body of knowledge, they have to make assumptions about the world. They make commitments to questions about how to model the domain, what tasks frequently arise, what results are acceptable, and so forth. These assumptions have to be met for the program to work as intended, but the designer may not have access to all the informatoin they'd like in setting up the domain. That's why careful thought is required. But it's also why fields like cognitive science can learn from experiments building computational artifacts. Some domains -- communication with people is a good example -- push our understanding of the world -- in communication, it is our understanding of one another, of what people do and what people want. Going from domain assumptions to (usually failed) experiments in solving tasks relying on those assumptions informs our understanding of an independently interesting aspect of the world.

Class Home
More Questions and Answers