Projects (Overview with Links to Details)
CSE 415: Introduction to Artificial Intelligence
The University of Washington, Seattle, Winter 2018
The last assignment in the course is called the project, because it differs from the earlier assignments in three respects: (a) there is more flexibility in the topics; there are three options instead of one, and within each option there is some flexibility in terms of techniques involved and implementations; (b) the project is done in partnerships of two people; (c) although the implementation is important, there is also a nontrivial written report to turn in.

Whereas earlier assignments focused primarily on specific techniques and coding, the project offers an opportunity to think more broadly about building AI agents or systems, to collaborate and communicate with someone about the issues, and to be more creative in the design of the experiment, application or agent.

OPTION 1: Baroque Chess Agent. This option is for those who wish to further explore the design of game-playing agents. It builds on Assignment 4 by taking the issues of minimax search and its various optimizations to a game with a more interesting set of rules. Unlike OPTIONS 2 and 3, we plan to have a tournament among the OPTION 1 agents. There is starter code for this option. Click here for more information. The lead TA for this option is Yue Zhang.
OPTION 2: Feature-Based Reinforcement Learning for the Rubik Cube Puzzle. This option involves applying reinforcement learning to a problem whose state space is so large that it requires that states be represented in terms of a much more limited set of patterns or features (and therefore in groups of states) rather than their full details (and individually). The feature-based approach is important in practice. However, the Rubik Cube puzzle is sufficiently easy to understand that it grounds this option in something familiar. Click here for more information. The lead TA for this option is Bindita Chaudhuri.
OPTION 3: Supervised Learning: Comparing Trainable Classifiers. In this option, a team will implement two trainable classifiers and then compare their performance using two separate data sets and alternative training policies. The suggested types of classifiers are: (a) Random forests (of decision trees), (b) Two-layer feedforward neural networks, and (c) K-nearest neighbors. In addition to using these two classifiers separately, combine them by using either bagging or boosting, and describe any improvement in performance that results from combining them. Click here for more information. The lead TA for this option is Emilia Gan.
Partnerships. Partnerships are strongly encouraged but not required. Besides the advantages of a partnership in terms of sharing work, gaining experience with collaboration and communication, and probably having more fun, partnerships will be eligible for the extra credit section of the report, in which each student describes the partnership experience within the project.
Milestones. There are three separate turn-in deadlines for the projects.
  • Milestone A involves filling in an executable Python program that serves as a form. You'll explain who your partner is, what option you are taking, what ideas you have for your approach within that option, and the names and locations (e.g., URLs) of the two most relevant references you have identified as information sources supporting your project. The deadline for this milestone is Feb. 26, but we would hope and expect that most partnerships will have been formed and their plans set by Feb. 22 or 23, so that they are already designing code by Feb. 26.
  • Milestone B consists both of a progress report and a piece of working code that reflects the progress of your implementation. This is due on March 2. For this milestone, turn in both your Python file(s) and a 1-paragraph document that answers the questions: (a) what are the main techniques you are featuring in your project? (b) How far along is your implementation (what works, what does not yet work?).
  • Milestone C involves (a) final code and (b) final report. The code must be working and ready to demo in class on Wednesday, March 7. When it is turned in Wednesday night, it also needs to be commented and presentable, if it isn't already. The final report is not required in class but must be submitted by the midnight deadline with the final code.
Criteria.

Each project should address the following criteria.

  1. Originality. The project must not be an edited version of something developed elsewhere.
  2. Demonstration of an appropriate artificial intelligence technique. (In this project this is not likely to be an issue, since each option is oriented around some specific AI techniques.)
  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 March 7 and March 9. Each project should be shown on both these days. During the demonstration periods, 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 might 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 Milestone 3 deadline. (Late days are not allowed in the project.) Report.pdf; code files; data files if doing Option 3.

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.
  11. For 5 points of extra credit, include a section with a heading "Partners' Reflections" with two subsections, one for each partner. Each subsection should give the partner's name, main role(s) in the project, a description of the challenges and benefits of the partnership from that partner's perspective.
If required, further details will be announced later.