This course will cover: facts and rules, recursion, structures and lists, intelligent agents, solving problems by searching, classical search methods, knowledge and logic, first-order logic, inference in first-order logic, machine learning and natural language processing. This course aims for students to study foundations and the applications of artificial intelligence. The course focuses on both theory and practice. Grading: projects 50%, homework 30%, attendance 10%, class performance 10%.