If you've gotten this far, you have probably read my basic philosophy of student research projects and are of the same mind. Great! So, how do you propose a project to me?
I am open to project proposals from any student on just about any topic, though preference will be given to proposals in areas that match up with my current areas of research. Currently, those include artificial intelligence, especially knowledge systems; object-oriented design and programming; and patterns as a means of documenting knowledge. I am always on the outlook for exceptional projects, in any area of computer science, in which the potential for interesting results is high.
For an undergraduate project, you should identify an issue, problem, or topic that builds upon the strengths of your undergraduate program. This often means a proposal in the same area as your senior sequence. In any case, you should bring enough background to the project that you can do something interesting. The proposal may involve software development, experimentation, or both.
For a graduate project, whether for the project option or the thesis option, you should identify a problem or topic that will demonstrate mastery of your major area of study. For the project option, your proposal should involve a software project of sufficient scope that you can demonstrate skills from several areas of CS. For the thesis option, your proposal should involve a problem whose solution will require application of knowledge from multiple areas of CS.
I realize that you may not know ahead of time whether your proposal satisfies these guidelines. That is what the proposal process is for... If it doesn't, you and I may be able to craft an acceptable proposal through a couple of iterations. I'd be happy to work with you, if basic idea of the project sparks my interest!
For either an undergraduate project or a graduate project/thesis, the steps for proposing a project are essentially the same:
If you would prefer to work with someone other than me, you can follow the same set of steps. But between Step 1 and Step 2, identify a short list of faculty to approach as potential advisors. Then perform Step 2 for each person on your list, in order of your preference.
If you have difficulty getting me to supervise your project, or more generally in finding any advisor for your project, you may be better working on a project of the faculty member's choosing. Identify a short list of professors whom you would like to work with or who work in an area that interests you. (Preferably both!) Visit each and explore the possibility of working on one of their current projects.