Most of us have already done a fair amount of traditional programming in languages like Pascal, C, Java or C++. We would devise algorithms (procedural steps) for solving the problem one is attempting to solve. Therefore, we would write code in the syntax of the specific High level language, and upon being error-free; our program is ready to provide solution to the problem. Give it an input, and it results in a desirable output. What is the limitation of this kind of problem solving? The problem solving steps in this case doesn’t need to interpret data meaningfully or to unravel hidden nuggets of information in the data (data mining).
AI programming is dynamic in comparison to the static nature of traditional programming. One need to incorporate intelligence, learning and knowledge while developing AI programming systems. Say in computationally hard problems in Computer Science like Chess Playing or Travelling Salesman Problem, it is impossible to code every possibility that may result in the form of rules and actions that may be taken thereof. The combinatorial explosion inherent in solving these types of problems would come in the way. In such cases, one may need to use intelligent guesses (heuristics) or optimizer based search methods (Genetic Algorithms, Simulated Annealing & others) to guide solutions towards an objective function i.e., goal.
Besides heuristic and guided search, AI programming often would need to make use of some of the following: Knowledge Acquisition and Representation, Pattern Recognition, Decision Making under Uncertainty, Machine Learning, Statistical Reasoning, Memory based Reasoning, Case Based Reasoning, Natural Language Understanding, Speech Synthesis, Image Understanding & Computer Vision, Logic Programming, a good Inference Engine & a developed Knowledge base.