A branch of computer science that is concerned with the automation of intelligent behavior. To be considered “intelligent”, should respond to situations flexibly, make sense of ambiguous or contradictory messages, recognize the different elements of a situation, find similarities between situations despite differences which may separate them and draw distinctions between situations despite similarities which may link them.