Projects
CSE 415: Introduction to Artificial Intelligence
The University of Washington, Seattle, Autumn 2009
Projects are an opportunity to invent your own artificially intelligent program that performs an activity that you specify.
Types of Projects
Projects can be of any of the following six types:
  • Thoughtful reconstructions of classic AI programs. During the 1950s, 60s, and 70s, many of the foundational ideas of artificial intelligence were developed and demonstrated in working programs. Most of these programs can no longer be run, because they were written in languages that are no longer supported or for machines that don't operate any more. A good project would be to select one of the early systems, and develop a new implementation of it using Python, adding a graphical interface and interactive features that make it easy for a user to quickly understand how the program works and to explore the effects of changes to parameter values, input data, and even the algorithm or set of rules used.
  • Intelligent tutors. An intelligent tutor is (traditionally) a conversational program that engages one student in a dialog and/or problem-solving session in order to teach one or more concepts and/or skills. A typical tutor, nowadays, is implemented as a rule-based system in which conditions are tested with regard to the student's input, the student's past record (using a "student model"), and in which actions may involve displaying a message or question to the student, bringing up an HTML page of material, or modifying an entry in the student model.
  • Problem-solving systems based on T-Star. These systems will help users solve traditional problems such as scheduling, spatial layout (floor plans), combinatorial arrangement (pentaminoes), graph coloring, graph isomorphism. Choose a class of problems and implement state/node representations and renderings, basic operators, and automatic search and evaluation functions. The T-Star software is available at the T-Star website. A list of steps for adapting the T-Star software to your own purposes is this guide page.
  • Collaborative problem-solving systems based on CoSolve. Using a new web-based environment for state-space search called CoSolve, design and implement a state space and set of operators for a new class of problems. Take advantage of the possibility of having teams of solvers apply your operators. For more details, email or talk to the instructor.
  • Bayes Net event analysis in Python. Such a program will make inferences probabilistically about evidence and hypotheses in a specific domain. This domain is up to you and might have to do with emergency management, diagnosis of a disease over a series of tests or observations, assessing people working on team projects, analyzing economic or business news, analyzing political developments from news headlines, etc. You should use the Bayes Net toolkit developed for the course.
  • Demonstration and application of a standard AI technique using Python + TKinter. For example, the ID3 learning algorithm for classification rules, concept formation in mathematics in the spirit of AM or Pythagoras: "Primes = Natural numbers such that the number of factors is minimized". (If you plan to use the Stone World code in your project, it is here: StoneWorld.py, and the helper module Match2.py.)
  • Image understanding applications using PixelMath. Detection or recognition of: faces, objects, drawings, captchas. Watermark embedding and extraction. Intelligence test problem-solving ("A is to B as C is to ...").
  • Teams
    Projects may be done in teams of 1 or 2 people.
    Meetings with Instructor
    Each team should discuss their project with the instructor.
    Demonstrations
    Project presentations will currently scheduled to take place during our last two class periods. During this time, each student should complete two peer evaluations on each day. Printed copies of the forms will be available at the lab. The form is also available here as a PDF file.
    Criteria
    Each project should address the following criteria.
    (a) Originality. The project must not be an edited version of something developed elsewhere.
    (b) Demonstration of an appropriate artificial intelligence technique. Most AI topics will be appropriate, but each student or team should meet with the instructor and get approval for their topic.
    (c) Transparency. The implementation should take specific steps or incorporate explicit features to help the user understand how the program works, typically showing in some form, key intermediate results, status of longer computations, and relationships among key data structures, rules, states, or constraints.
    (d) Interactivity. The program should allow the user to control the computation through interaction. There can be default parameter settings, but it must be possible for the user to easily override many of the defaults.
    Due dates
    Reports and source code are due Tuesday, December 15 at 2:00 PM. Use Catalyst Collect-It to turn them in.
    Reports
    The report should be an electronic document (either raw ASCII text, MS Word file, or a PDF file). The key elements of your report include:
    1. title of project;
    2. names and roles of each teammate;
    3. what the program is supposed to do;
    4. technique used and brief description (half a page) of how that technique works. If you use multiple AI techniques then describe each one but with somewhat less detail for each one;
    5. either a screen shot or a transcript of an interesting sample session;
    6. brief demo instructions;
    7. code excerpt showing some interesting part(s) of your Python code and some explanation of it;
    8. brief description of what each team member learned in this project;
    9. what you would like to add to your program if you had more time;
    10. citations for any references you used in the project.
    11. As an "appendix" to the project, provide full source code for your program.
    Fill out the project plan questionnaire by Wednesday, November 25.