The subject is up to you, but you must write and turn in a proposal justifying why the topic is interesting and doable, showing you have a grasp of the pre-existing literature and how your idea fits in, and describing what you propose to accomplish. You should state a hypothesis you wish to verify and disprove, convince me it is interesting and important, that you are the person to do it (namely that you have the background you need) and that you have the tools to do it (hardware, software, and references).
PLEASE feel free to bring your ideas to the Prof or TA (just a few words after class can be very valuable) before writing your proposal.
It can be strictly a written (scholarly, researchy) paper -- my guideline would be "20 references (at least half from books and refereed papers) connected by a good story". A good story involves conflict and resolution , and in this case the conflict is between competing sciehtific hypotheses you lay out, and the resolution is your compelling argument that one is better.
You can do your own research (mathematical, psychophysical, programming), you can write a critical review of the state of some area that interests you (The Turing Test: its relevance and how close have we come?; The Promise and Disappointments of Neural Nets, The Possibilities and Difficulties of Understanding Video, Successes and Failures of Automatic Planning), like that.
To be perfectly fair, I'll warn you that non-experimental overview or critical papers usually get low grades because of: no hypothesis, no research methodology, no evidence of much time spent on the work, no reputable references. Stuff off the web is in general an opinion or a tutorial, not a refereed scientific result. You can find actual reputable scientific work on the web, usually as pointers to an already published piece of work, but you have to prove that's what it is), in any case not ENOUGH references. You Have Been Warned!
Or it can be a programming project. Several quite good ones appear in the problem sections of your text, with little keyboards next to them. Or make up your own.
If you want to do vision but not Quake vision, here's one of many ideas: last year's third programming problem, a Telling O's from X's Last year I was not terribly impressed by what people did, in general: The key is that it's just not interesting to solve a simple case of character recognition. But it is nice when you can make up your own data. So the key is to create challenging problems within a simple format. NOT hard given the various text fonts out there, including handwriting. So here is a large Database of digitized digits to play with.
For your amusement, delectation, and inspiration, here are some student projects from 2002 and 2003:
Last update: 18.1.01