Projects for CSE 415 (Spring 2016).
CSE 415: Introduction to Artificial Intelligence
The University of Washington, Seattle, Spring 2016
Due Dates: Code on Tuesday, May 31 at 23:59, and reports on Friday at 23:59 Friday, June 3, via Catalyst CollectIt.
 
Group Work.

This assignment should be done in teams of 2 or 3. However, teams of 1 are also permitted.

Purpose.

The project is an opportunity to explore an AI topic in greater depth than in a normal assignment. It is also a chance to work on something of personal or team interest, distinct from what others are doing in the class. Finally, it involves a more independent style of study than the regular assignments.

What to Do.

Choose one of the options. Sign up for a 15-minute meeting with the instructor. I'll post the schedule on GoPost.. Meetings with the instructor are optional. There will be a conversation in GoPost for scheduling. Then follow the guidelines for the option you choose.
 

Options.

  1. Conversational agents that manage information, working with uncertainty and/or retraction of facts, dealing with inconsistency, etc. (extensions of Linneus)
  2. Reinforcement Learning in Problem Solving: Explore the use of Q-Learning in solving a combinatorially challenging problem such as Rubik's Cube. You may adopt the approach suggested in Assignment 6, Part 2, extra credit (Towers of Humptulips). If you focus on Rubik's cube, consider a variety of simplifications including 180-degree moves only, 2x2x2 size, fewer than 6 distinct colors, combinations of heuristics and Q-Learning, where heuristics may be based on the use of "pattern databases".
  3. Problem formulation: Do an in-depth version of Assignment 4, option 3 (wicked problems)
  4. Classifier Inference: Using Python and Numpy/SciPy implement two different kinds of classifiers. Then compare their performance on multiple criteria (accuracy, training time, etc). Finally, implement either bagging or boosting to combine them. Demonstrate quantitatively what advantages you get from bagging or boosting. The choice of datasets is up to you. Ideally there will be at least one standard dataset commonly used in classifier design, plus at least one original dataset that you either create or find online that has not already been used in this kind of experiment.
  5. Other -- but get instructor clearance. Your technique must be accompanied by a user interface (either simple NLU or graphical) must be in Python 3, and should implement a "transparency" feature to display the intermediate results, so that users can easily understand what is going on.
Criteria.

Each project should address the following criteria.

  1. Originality. The project must not be an edited version of something developed elsewhere. You are encouraged to meet with the instructor to discuss your ideas related to originality of your project.
  2. 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.
  3. 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.
  4. 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.
Demonstrations.

Project presentations are currently scheduled to take place during class on June 1 and June 3. During this time, each student should complete two peer evaluations on each day. Printed copies of the forms will be available in class. Each team should bring a laptop to class that day in order to demo your project to small groups. We will spend part of each period having a few volunteer teams present to the whole class, but most of the time will be spent with multiple presentations to small groups happening simultaneously.

What to Turn In.

Turn in the following files (zipped up or tarred) by the project turn-in deadline. Report.pdf; code files; data files; an optional Presentation.pptx (or other standard format);

Reports

The report should be an electronic document in the form of 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. This should include the names and URLs of any websites that you used and whose ideas or other resources were incorporated into your project. In each case, describe in a sentence what role that website played in your project and what you incorporated from it.
Project Plans Due May 20

Fill out the online project planning questionnaire by Monday, May 23 at 6:00 PM.

Peer Evaluations:

Peer evaluations will take place in class during the last week of classes. Each project team should bring a laptop computer on which to demonstrate their program. If you cannot bring your own laptop, please arrange with a classmate to use his or hers. If you cannot locate a suitable classmate, then at least do bring your necessary files on a USB drive in a folder set up in such a way that it will be very easy to start a demonstration on another computer.

Updates and Corrections:

The draft version of this page was updated to the official version at 5:00 PM on May 18. The deadlines for code and reports were separated (as of May 26), with a later deadline for the reports (Friday, June 3 at 23:59). If necessary, additional updates and corrections will be posted here and/or mentioned in class, in GoPost, or via the mailing list.