Introduction to Artificial Intelligence
Spring 2009

    

This course provides an overview of the theoretical and practical aspects of designing intelligent computer systems. Students are expected to implement the concepts learned during the course using standard and AI-specific programming languages and tools. The following topics are covered in the course:

Overview of Artificial Intelligence
            Historical Perspective
            AI in Modern World
State Space Representation
Search Techniques
            Uninformed (Best-first, Depth-first)
            Informed (A*, Best-first)
Search in Games
            Minimax, Alpha-Beta Pruning
Machine Learning
            Classification Trees
            Naïve Bayes
            Neural Networks
Logic
            Propositional Logic
            Predicate Logic
            Logical Inference
Probabilistic Reasoning/Bayesian Networks           
            Knowledge Elicitation
            Inference in BNs
Miscellaneous Topics (depending upon the availability of time)
            Evolutionary Computation
            Introduction to Robotics
            Natural Language Processing

Prerequisites:
CSE205: Data Structures and Abstraction
MTS201: Logic and Discrete Structures

Text Book
Tim Jones, Artificial Intelligence: A Systems Approach, 2007.

Reference Books
Ben Coppin, Artificial Intelligence Illuminated, 2004.
Kevin Korb and Ann Nicholson, Bayesian Artificial Intelligence, 2003
Steven Rabin, AI Game Programming Wisdom 3, 2005.
Steve Rabin, AI Game Programming Wisdom 4, 2008

Grading
2 Term Exams                                                 16 marks each
1 Final Exam                                                   40 marks
4 Assignments/Projects                                    4 marks each
4 Quizzes (best 3 counts)                                 4 marks each

Software Tools
SWI-Prolog                 (http://www.swi-prolog.org/)
GeNIe                         (http://genie.sis.pitt.edu/)
Weka                         (http://www.cs.waikato.ac.nz/ml/weka/)
KNIME                       (http://www.knime.org/)

For programming assignments, students can use any standard programming language (either Java, C#, C++, etc.).