Expert systems are computer programs that contain subject-specific knowledge from human experts. They use this knowledge along with inference engines to provide expert-level advice. An expert system's knowledge comes from knowledge engineers who gather information from subject matter experts and codify it for the system. Expert systems are comprised of a knowledge base containing factual and heuristic knowledge and a reasoning component that uses techniques like forward and backward chaining to draw conclusions. Some applications of expert systems include medical diagnosis, agricultural pest control advice, and educational tools.