• Course Introduction

      CS405 introduces the field of artificial intelligence (AI).  Materials on AI programming, logic, search, game playing, machine learning, natural language understanding, and robotics introduce the student to AI methods, tools, and techniques, their application to computational problems, and their contribution to understanding intelligence.  Because each of these topics could be a course unto itself, the material is introductory and not complete.  Each unit presents the problem a topic addresses, current progress, and approaches to the problem.  The readings include and cite more materials that are referenced in this course, and students are encouraged to use these resources to pursue topics of interest after this course.

    • Unit 1: Introduction to Artificial Intelligence (AI) and AI Programming

      While AI applications can be developed in any number of different languages, certain language features make programming AI applications straightforward. Prolog is structured in such a way that AI program development is supported by Prolog language features. Other languages, such as Java, support AI programming through code libraries. At this point in your career as a computer science major, you have already taken introductory programming courses; these should assist you in learning Prolog and using code libraries in other languages for AI program development.

      This unit will provide you with an introduction to AI via programming features that support basic AI applications. By satisfying the goals of this unit, you will have a familiarity with AI programming and be able to use it in future models to implement various AI applications.

      Completing this unit should take you approximately 10 hours.

    • Unit 2: Search

      Previous coursework has familiarized you with searching algorithms. In this unit, you will learn how to implement standard searching algorithms. We will first discuss the motivation behind exploring search from an AI perspective, learning new terminology as we go that will be used in this unit and beyond. We will then learn about basic search methods, as well as time and memory requirements, concluding with a discussion of the advantages and disadvantages of searching algorithms. By the end of this unit, you will be able to apply AI techniques when developing searching algorithms.

      Completing this unit should take you approximately 12 hours.

    • Unit 3: Constraint Satisfaction

      AI applications are built upon the idea of a problem statement with constraints. In AI, we must work within those constraints in order to develop an optimal solution. In this unit, we will define "problem" in specific AI terms and discuss different approaches to constraint satisfaction. Constraint satisfaction is an important subject area within AI. The famous Map Coloring Problem has simple variables and simple constraints and is thus useful in illustrating the basics of constraint satisfaction. By the end of this unit, you will be able to solve basic problems.

      Completing this unit should take you approximately 10 hours.

    • Unit 4: Game Playing

      Some of the earliest and most recognizable AI applications are games like chess and tic-tac-toe, the most famous being the chess match between Garry Kasparov and Deep Blue. In this unit, we will discuss the development of game-playing applications, as well as the relationship between game-playing and searching algorithms. The unit will also provide you with some best practices for building game programs.

      This unit has been designed to teach you how to design algorithms for game-playing applications. For our purposes, you will find tic-tac-toe, which uses features of search and constraint satisfaction, the simplest. We suggest that as an informal exercise, you create a tic-tac-toe application and then play against it, noting the algorithm's success rates and determining which modifications will need to be implemented in order to improve its performance.

      Completing this unit should take you approximately 10 hours.

    • Unit 5: Logic

      We have already briefly discussed logic, but this unit will provide you with a more formal definition. We will learn about two main types of logic--propositional and first-order. Prolog was designed for expressing logic. This unit gives you a strong foundation in logic so that you will be able to use or learn Prolog more easily to program logic applications. Similarly, you will be able to use or learn class libraries that support AI techniques in other languages, like C++ and Java.

      Completing this unit should take you approximately 24 hours.

    • Unit 6: Machine Learning

      Machine Learning refers to computer programs that are able to categorize data in order to maximize understanding of that information. Machine Learning is closely related to statistics and modeling and has a wide range of applications, from natural language processing, searching, robotics, and indexing, to other pattern recognition applications. This unit will begin by defining Machine Learning, its applications, and a number of other important terms that will be used in this unit. We will then go over the three main classes of Machine Learning: Supervised Learning, Semi-Supervised Learning, and Unsupervised Learning. You will also end up with an introductory foundation in Machine Learning that will be useful for further academic study in the field.

      Completing this unit should take you approximately 26 hours.

    • Unit 7: Natural Language Understanding

      This unit will provide you with a basic introduction to Natural Language Understanding (NLU) in AI. Syntax, semantics, and ambiguity of natural language are discussed. Simple examples are presented. Some of what we have seen, in search and in learning, is applied in NLU. Natural language processing and understanding is a large field of research and has entire courses devoted to it. So, in this introduction, our objective is simply to introduce the problems and approaches.

      Completing this unit should take you approximately 20 hours.

    • Unit 8: Robotics

      Robotics draws upon and integrates previous topics, as well as information and techniques from other disciplines, including many engineering fields, physics, controls, probability and statistics, differential equations, linguistics, and many applications, e.g., manufacturing, sensors, medical applications, etc. Some of the contributions of AI to robotics are search algorithms, representation and models for the robot world, inference, learning, and AI programming features and their integration.

      Completing this unit should take you approximately 9 hours.

    • Final Exam