CSG120 Artificial Intelligence - Spring 2006 - The Project

Professor Futrelle - College of Computer and Information Sciences, Northeastern U., Boston, MA

Version of 15 January 2006

Introduction - Which programming language?

All students will do a programming project, with accompanying research on related literature. Common Lisp is preferred - one of your two textbooks, PAIP, is totally focused on Common Lisp. AIMA has substantial code online in Lisp and substantial portions of it in Python and Java. But the documentation is most thorough for the Lisp code, as far as I know. My lectures and examples from both texts will be based on Lisp, with a brief excursion into Prolog when discussing logic and knowledge representation. That said, there are some interesting and serious alternatives discussed below, including Prolog, Otter, Protégé, and Java.

The code you develop and turn in, whatever, however, and wherever you develop it, must be packaged to run on our Solaris system and tested to make sure that it does run there. That is where I will run your code to examine and grade your project. See a few additional instructions on the Assignments page.

If you do use Lisp, I would encourage you to build your project around some of the code available from the PAIP and/or AIMA codebases. This will lead you to a greater understanding and appreciation of AI programming techniques than trying to reinvent the wheel.

Logic languages/systems for your project

Prolog is a natural candidate for an AI project. I have set up a page about various Prolog and Automated Reasoning resources including a description of SWI-Prolog installed on Solaris, a system that you can install on your own machine if you like. Prolog is discussed at length in PAIP in Chapters 11, 12, and 20. A few students in my past AI courses have used Prolog in their semester projects.

Full automated reasoning: The Otter, Spass and Vampire systems. These are full resolution-based theorem provers that are sound and complete, unlike Prolog. They are also linked on the page mentioned above. A few students in my past AI courses have used Otter in their semester projects.

Protégé is an Ontology Editor and Knowledge Acquisition System. I would be delighted if one or more students based their projects on Protégé. The Protégé project, based at Stanford, has an interesting history. The primary scientist behind the implementation and support of Protégé, Natasha Noy, received her degree PhD in our College in 1997, working in my lab, under the direction of Professor Hafner (adviser) and myself. The thesis focused on representing knowledge of Molecular Biology. (We were happy to hear that Natasha gave birth to her second daughter in Fall 2005.)

Protégé is a free and open-source project written in Java. You can register, download, and use it on any machine supporting up-to-date Java. There are (as of 1/1/2006) 40,721 registered users of Protégé, so you can be assured that it's an important system. There are already about sixty Protégé ontologies available. You can experiment with these and create your own variants. As with anything, you should start with the tiniest examples in order to learn about the system.

Using Java -- Special requirements

A project in Java might be accepted if properly justified and in addition it must meet this condition: The Java AI project must include a visualization component, written using Swing and possibly Java 2D in addition. The visualization component can show the application, e.g.,a map, plan, graph, or tree, but must in addition display metadata, some of the behind-the-scenes computational progress/results. Java 5.0 is now the default on our Solaris system (and on our Windows systems, I assume). The API is available at: http://java.sun.com/j2se/1.5.0/docs/api/index.html. Sun's main page for Java 5.0 is at: http://java.sun.com/j2se/1.5.0/index.jsp.

Using Python - Special requirements

If you want to use Python, you'll have to develop a strong justification for it. Just saying, "Oh, it's the language I know best and want to use," is not in the spirit of the course. Also, I don't use Python myself, so your project would have to include even more extensive documentation, and code comments than I would normally require.

Find and discuss literature related to your project

Your project must include your finding at least two reasonably recent research or tutorial papers related to your topic. You are strongly discouraged from using web page documents. Instead, you should use our library's online research resources to find papers from journals or conference proceedings. Two other good sources are Google Scholar, http://scholar.google.com/, and Citeseer, http://citeseer.ist.psu.edu/, as long as the papers you use from those appeared in high-quality publications. You can also request a Consortium Card and then use other libraries such as MIT and BU http://www.lib.neu.edu/access/circulation/blccard.htm. You must describe and discuss the papers in your reports to demonstrate that you understand their content and their relation to your project.

Choosing your project topic

You should choose a topic that interests you, even if the material about it will not be covered until later in the course. I can help you get started with whatever you choose. If you have any questions at all, please contact me before you devise and hand in your initial plan, Proj1, and continue to consult with me throughout the semester as you need to.

There are certain topics I prefer, and others I would discourage you from. I can be most helpful if your projects are in my areas of expertise and interest: Natural language, graphics knowledge, machine learning, and the domain of Biology and medicine. These are important areas for the application of AI techniques. I would discourage you from things such as board games. These generally boil down to combinatorial algorithms, with little or no knowledge-level components. On the other hand, there is work in "game AI". This typically involves designing intelligent colleagues and adversaries, ones that have interesting knowledge bases and knowledge-driven strategies.

How to write. Your audience

When writing, you should always write for an "audience", the people whom you expect to be reading what you write. Your audience should not be me, Professor Futrelle. Instead, you should imagine that your audience consists of other students in the class. You can assume they've been learning the course material, but you can't assume that they know the details of your project topic or the concepts in the references you find. Everything you write and hand in should be checked for sense, form, grammar, and spelling before you hand it in. This includes your five Assignments, not just your Project. It would be wise to have a classmate read over your Project handins before you hand them in, to be sure they read well and tell your story clearly.

How to write. All good writing requires extensive EDITING

There is an old and important adage about writing: There is no such thing as good writing, only good re-writing. Keep this in mind for all writing you do, whether it's for your project or just for email. I rarely just type in email text and send it. I normally look it over and keep making changes. Sometimes I print out an email and edit it before I finally send it.

Everything you write and hand in should be checked for sense, form, grammar, and spelling before you hand it in. This includes your five Assignments, not just your Project. It would be wise to have a classmate read over your Project handins before you hand them in, to be sure they read well and tell your story clearly.

Important project due dates

Go to CSG120 home page. or RPF's Teaching Gateway or homepage