This course is an introduction to the fundamental problems of AI and general approaches employed by the AI community. We will cover knowledge representation, heuristic search, problem solving, game-playing, logic and deduction, planning, machine learning and natural-language processing.

After taking this course, students will have a basic understanding of major AI tools and algorithms. They will be able to choose suitable tools from the AI toolbox to solve a particular problem and be able to adjust the generic algorithm to fit a particular purpose. This course will provide necessary skills to solve constrained optimization problems, solution modeling under input errors, and classification problems.

At the end of this course, students will be able to:

**Express**data and knowledge by using logical models and knowledge representation schemes (PI-a2).**Apply**logical principles for sound reasoning to prove theorems (PI-a3 ,e1).**Analyze**knowledge rich domains to formulate heuristics (PI-c3).**Understand**algorithms for search, adversary search, CSP and planning to develop efficient solutions (PI-c3, e1).**Analyze**real-life applications to represent uncertain knowledge with the help of probability theory (PI-a6).**Understand**algorithms for probabilistic reasoning in Bayesian Networks (PI-a6).**Understand**algorithms for simple and sequential decision making (PI-a6, e1).**Understand**requirements for supervised, unsupervised and reinforcement learning and apply machine learning algorithms (PI-a6, c3).