CPSC 453: Artificial IntelligenceSpring, 2003. Instructor: David J. Eck. Monday, Wednesday, Friday, 10:10 -- 11:05 AM Room Lansing 300.
About the Course
The field of Artificial Intelligence is a mess. Since its inception fifty years ago, it has been plagued with cycles of overly optimistic forecasts and failure. At the same time, it has made progress in a number of areas and has seen increasing application in the real world. It is a field that has no commonly agreed upon definition. Some AI researches believe that they are developing a replacement for the human race. Others just want to get some practical work done. Unlike other fields of computer science such as graphics or networking, AI has no general theory or unifying principle. A working definition might be: AI is the field of computer science that tries to do things that are difficult or impossible to do with traditional programming techniques. In this course, we will look at many of the problems, techniques, and applications that have traditionally come under the umbrella of AI. This leaves room for a very large number of topics, and we won't be able to cover everything. Nevertheless, we will also on occasion look beyond these limited practical issues to the philosophical and ethical aspects of AI and to its application to the study of human cognition.
The textbook for the course is Artificial Intelligence: Structures and Strategies for Complex Problem Solving, Fourth Edition, by George F. Lugar. This is a long book that covers many ideas, and often devotes too few pages to complex topics. The first 200 pages, which cover background material, are dense and soporific, and I would hate to devote a large chunk of the course to covering them. Instead, I will spend just a little time outlining the basics: predicate logic, state space, and search algorithms. Then, except for a few introductory sections, we will start using the book where the actual AI material begins, on page 193. We will fill in any necessary additional background material as it comes up in context. At the same time, we will start working on the Prolog programming language, which is covered in Chapter 14 of the book. In addition to the textbook, there will be handouts on various topics.
There will be assignments to hand in almost every week. These will include programming assignments in the two main AI programming languages, Prolog and LISP. There might also be some programming in C++, since neural networks and genetics algorithms are usually programmed in C++. Expert systems and neural networks are often created using special-purpose development environments rather than by direct programming, and you might use these environments in a few assignments. Finally, there will be some written assignments, such as the very first assignment, which is given at the end of this handout.
In addition to weekly assignments, you will do a term project. You should spend time on this project throughout the term. The completed project is due at the scheduled final exam period for the course. During the final exam period, you will make a presentation on your project to the rest of the class. The project will count for 20% of the total course grade.
The term project will be organized around some particular problem or problem area where artificial intelligence techniques are useful. You should pick a topic during the first few weeks of the course and start thinking about it and researching it. If you find it necessary, you can modify or even completely change your topic at any time before Spring break. By that time, the problem that you are working on should be completely and finally specified. Shortly after Spring break, I will ask you to give a preliminary report on your project to the class. There will probably be another report a few weeks before the end of the semester.
The completed project will include a variety of materials. Some of the items you turn in should be programs that you write or similar work such as an expert system created in an expert system development shell. The programs should demonstrate a variety of approaches to the problem you are considering. Some of the approaches might use simple, non-AI techniques. Others might apply AI techniques to small or restricted versions of the problem. Obviously, since AI problems are complex, I don't expect a complete or definitive solution. In addition to the programs, you should do some research on the problem and report on what you find. This might include finding programs that other people have written and trying them out. You might want to present your research in the form of a "research journal" that contains short reports on the materials that you find. If you prefer, you could write a single, longer research report. Finally, there should be an overview or summary document of some form that is at least a few pages long.
My preference is to see all this work organized into a Web site, although I do not absolutely require this. If you choose to create a Web site, you can add to it gradually throughout the term as you collect and create materials. Then, at the end of the term, all you will have to do is add the summary page.
You will probably want to do some research on the Web to see what people do with AI. You can also get ideas from the textbook. To get you started, here are some possible problems and problem areas:
- chess, checkers, or go
- AI player for a RTS or FPS computer game
- play in a poker game with human opponent(s)
- email filtering
- learn a customer's preferences and make book recommendations based on them
- finding good approximate solutions to the traveling salesman problem
- symbolic integration of mathematical functions
- prove mathematical theorems
- teaching some subject, such as algebra, to a child
- composing original music
- understanding spoken language
- machine translation from one language to another
- give advice for stock market investments
- doing more intelligent Web or database searches
- model adaptation and evolutionary change
- model and explain the human mind
We will be discussing some of these ideas on January 17 and 20 in the context of the first assignment. This is the only description that you will get of the term project. Please start thinking about it now, and consult with me about your plans.
Tests and Grading
There will be three in-class tests, which will be given on Wednesday, February 12; Monday, March 24; and Friday, April 25.
Your grade for the course will be determined as followed:First Test: 15% Second Test: 15% Third Test: 15% Term Project: 20% Assignments: 35%
It is important for you to come to class and to be prepared to participate when you get there. If you miss more than a few classes, or if you often come to class unprepared to participate in discussions, I reserve the right to decrease your final grade for the course based on poor attendance or poor participation.
Office Hours, Email, WWW
My office is room 301 in Lansing Hall, just next door to our regular classroom. My office phone extension is 3398. I am on campus most days, and you are welcome to come in anytime you can find me there. I will announce office hours as soon as my schedule is determined, but note that your office visits are not restricted to my regular office hours.
My email address is email@example.com. Email is good way to communicate with me, since I usually answer messages within a day or two of receiving them.
The Web page for this course can be found at http://math.hws.edu/eck/cs453/s03/.
This assignment is due in class on Monday, January 20: The assignment goes along with the handout, "What is an AI Technique?", which will be distributed on the first day of class. For the assignment, you should pick a problem where AI techniques would be useful. Describe three approaches to the problem, using a format similar to the one used in the handout. The first approach that you describe should use traditional programming techniques. The third approach should use techniques that can be described as artificial intelligence. The second approach should be intermediate. Note that you are not being asked to design fully functional programs, or even to guarantee that the approach you describe will work. The purpose of the assignment is to demonstrate some understanding of the difference between artificial intelligence and standard programming techniques. You can choose any application area. If you need ideas, look at the list of possible term project topics given above.