Final Project

For your final assignment this semester you'll have the opportunity to do whatever is most exciting to you (within reason and definitely within AI). You'll propose and complete a project of your own design. This is intended to be another group project, where the size of a group is two or three. I am, however, willing to consider solo projects, if there are compelling reasons to do so. The project will span about 3.5 weeks, and includes a number of milestones:

These are described in more detail below.

Project Discussions (Apr 10-18)

In selecting a project you should, of course, do something that will be fun for you. It's also important, however, that your project involve a significant AI component and that it be of the right scope. In order to help ensure that that will be true, you should talk to me about what you hope to do. Some of you have already done so, and I very much look forward to seeing how your projects turn out.

If you haven't yet met with me to discuss your project ideas, you must do so either this week or very early next week (i.e., on Apr 17 or 18). It is extremely important that you meet with me to discuss your projects. Your written proposal should not be the first time I'm learning what you'd like to do.

Project Proposal (Paper copy due to me no later than 4PM on Thu, Apr 20)

After I informally approve your project idea, you should prepare a written proposal, approximately 2-3 pages in length. Turn in one proposal per group. I prefer that you use LaTex with 11pt article style, but this is not a requirement.

The proposal should obviously include the names of all group members. It should begin with a high level description of the project. In this section you should introduce the project and your overall goals. You should also discuss the relevance of AI to the project. You might include other information as well, such as what you find motivating or compelling about the project, for example.

Next the proposal should expand on the description of what you plan to do. When in doubt, provide more detail rather than less. In particular, be sure to itemize the various components that you will need to implement, list the external resources that you will use (APIs, for example), and tell me which programming language you will use. (I prefer Python or Java, but in certain circumstances -- i.e., for compatibility with an existing codebase -- I may approve other choices.) In addition, if you will need any special resources in our lab (for instance, access to the CS Department cluster to do large scale experiments or an allocation of a significant amount of disk space for large quantities of data), please be sure to let me know, so that we can work directly with Mary to arrange these. Finally, if you plan to divide the work among yourselves (rather than work on everything together), tell me who will be responsible for what.

Next you will need to provide a schedule for completing the work. With so many weeks of unstructured time, it's easy to fall into the trap of putting off working on the final project until it's too late to actually get it done. To help you avoid this problem, I am requiring that you submit your code at two checkpoints prior to the final code due date. Organize your schedule using these checkpoints as a guide. In creating your schedule, don't forget the importance of testing.

Be sure to provide references for any sources (including software) that you are using. Also remember to read and cite research articles. Any AI techniques or algorithms you implement will have their foundation in AI research, either current or past.

Please turn in a paper copy of your proposal no later than 4 PM on Apr 20. Once I approve the written proposal, we can consider it a sort of "contract". The sooner you turn it in, the sooner I can approve it, and the sooner you can get going.

Checkpoints (11 PM on Apr 27 and May 4)

I expect that you will be making regular progress toward completion of your project. To help you stay on track, I have set two checkpoints before the final due date. Turn in all code completed by each of those dates, along with a short paragraph describing where you are with respect to the milestones you set out in the proposal.

Project Presentations and Demos (May 10, 11, 12)

We will schedule presentation sessions for May 10 and 12 during our normal class time. If we cannot fit all of the projects into those two class periods, I will schedule a few for May 11. As we get closer to those dates, I will send out a poll to be sure we find a time when everyone can attend.

The presentations and demos are intended to be formal presentations of your work. They should be well-organized with appropriate visuals (slides, work on the board, handouts, as appropriate). Be sure to build time into your schedule to prepare the presentation. Remember that you will have an audience -- your classmates as well as CS faculty. Demonstrate your respect for them by presenting a thoughtful and well-planned talk and demo.

As we approach the date for the presentations and demos, I will give you clear guidelines on how much time each team will have.

Final Code (Due 4 PM on Fri, May 12)

Final Paper (Due 4 PM on Thu, May 18)

Your final deliverable will be a paper describing your project. In the paper you will discuss your project in detail, situate it in the context of others' work, and evaluate your progress as a team and as individuals. The paper should be 7-8 pages long. I prefer that you use LaTex with 11pt article style, but this is not a requirement.

If your project involves building a system, you should clearly state your goals for the system, give an overview of its architecture, and describe in some detail the algorithms selected to implement the AI modules of the system. You should also cite relevant research and other articles to situate your project in the broader context of work in this general area. In assessing your system, you will need to clearly articulate exactly what you are evaluating, how you have gone about performing evaluation, and how it stacks up. For instance, say you've implemented a system that "reads" long articles and generates one-paragraph summaries of them. What inputs can your system handle? What does it produce? Have you built in any special domain knowledge that restricts the topic of the articles? Does your system identify the most relevant information? Does it organize it well in terms of the flow of language? Is it grammatically correct? What are the limitations of your system?

If your project includes an empirical comparison of algorithms, you should clearly specify what you are comparing, what you are measuring, the methodology you developed for the empirical investigation, and any data sets or existing code you used as part of the work. You should discuss -- critically and analytically -- the results of the investigation.

Finding Relevant Research Articles

Your non-code references will primarily be journal and conference articles, though in some cases it may be appropriate to cite books as well. There are many e-resources in our library. If you have not searched those in the past, feel free to talk to me or to any of the science librarians in Schow. Another great resource for research articles is Google Scholar.

Using a standard search engine to find articles can in some cases be worthwhile, but it is critical that you be able to evaluate how reputable your sources are. While this is by no means an exhaustive list, some of the major publication venues in AI are as follows:

Many AI conferences are very strictly refereed. The papers in them, while typically shorter than journal articles, are generally of very high quality. Conference proceedings that you might want to read include the following.

A good summary of other Artificial Intelligence journals (some on much more specific topics) can be found at:

If you have any questions at all on the legitimacy of a source, please ask me.