Artificial intelligence aims to understand thinking and intelligence in ways that enable the construction of computer systems that are able to reason in uncertain environments. Work in AI has supported the development of driverless cars and house-cleaning robots as well as systems that have defeated world chess champions and planned space explorations. The course has three core sections: search, representation, and uncertainty. In each section, it will provide a thorough understanding of major approaches, representational techniques and core algorithms. In particular thje course focuses on the trade-offs between the model structure of different frameworks and the algorithmic constraints that this structure implies. Central topics in search will include classical search algorithms, heuristics and relaxation, and adversarial game-playing. The representation section will cover constraint-satisfaction, logical formalisms for representing knowledge, efficient algorithms for logical inference, and an introduction to planning. The section on uncertainty will introduce probabilistic reasoning, the formalism of Markov decision processes, and conclude with an overview of Bayesian networks for modeling uncertainty.