**Description**: Introduction to the theory of Artificial Intelligence and the practical application of AI techniques in Functional (Common LISP and/or Scheme) and Logic (Prolog) programming languages. Students gain practical experience through programming assignments and projects. A-F only.

**Objectives**: The objective of the course is to expose students to the concepts in artificial intelligence and the functional and logic programming paradigms. This is fundamental knowledge for all computer science students as described in the current ACM (Association for Computing Machinery) curriculum recommendations. Artificial intelligence has only been available to seniors (400 level) and infrequently offered at UH. The addition of this course will bring the fundamentals of artificial intelligence along with alternative programming paradigms to more students. This course integrates with the new curriculum and provides an alternative to ICS313, programming language theory, which is a requirement for ICS majors.

**Course Learning Outcomes**: • Students are familiar with the fundamental concepts and algorithms of Artificial
Intelligence including searching, planning, problem solving, logic and knowledge
representation.
• Students are able to implement AI algorithms in a functional (e.g., Scheme or Lisp) or logic (e.g., Prolog) programming language.
• Students appreciate the problems, current limitations and future potential of AI
• Students are able to recognize when AI techniques might be successfully applied to problem and when the problem is beyond the current state-of-the-art in AI
• Students have successfully implemented several small AI programs.

**Program Learning Outcomes**

- a. Students can apply knowledge of computing and mathematics appropriate to the discipline
- b. Students can analyze a problem, and identify and define the computing requirements appropriate to its solution
- c. Students can design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs
- i. Students can use current techniques, skills, and tools necessary for computing practice

**Prerequisites**: 241 and (212 or 215), or consent.

**Textbook(s)**: AI Algorithms, Data Structures, and Idioms in Prolog, Lisp, and Java, 6th edition by George F. Luger and William A Stubblefield, Addison Wesley.
Artificial Intelligence: Structures and Strategies for Complex Problem Solving, 6th edition by George F. Luger, Addison Wesley.

**Grading**: 40% on assignments
20% on in-class quizzes
15% on the midterm exam
25% on the final exam.

**Schedule**

- Week 1: Course introduction and goals, why study AI Programming? An overview of past and present artificial intelligence programming
- Week 2: Functional programming, the Lisp top-level loop, basic syntax and semantics.
- Week 3: Creating functions and programs in Lisp for solving problems, basic search techniques in state spaces
- Week 4: Built-in operations, variables and data types in Lisp, list processing
- Week 5: Static and dynamic scoping, depth-first, breadth-first and iterative deepening searches
- Week 6: Lisp macros, destructive operations, complex data structures
- Week 7: Informed search algorithms, best-first and A*. Knowledge representation for search problems
- Week 8: Expert Systems, forward and backward chaining, applications in specialized areas such as medicine
- Week 9: Intelligent agents, agent environments, agent architectures, and reasoning methods
- Weeks 10-11: Midterm exam, Logic Programming
- Week 12: Predicate logic, deduction, introduction to programming in Prolog * * Week 13: Resolution, Prolog databases, theorem proving
- Week 14: Backtracking, Prolog control structures
- Week 15: Building expert systems in Prolog, knowledge engineering
- Week 16: Design and implementation of large AI programs, knowledge acquisition