Your sources should be books and journals in local libraries, including the course textbook. For many topics, the best sources of information are on-line, e.g. newsgroup archives, Web pages, and ftp sites with software and technical reports or other documentation. Be sure to cite every source that you use in your paper. Material that is your own original thought, or is common knowledge, need not be cited. Everything else should be.
As you know, a good paper is written with the needs of its audience in mind. You should write the paper so that I can read it. Remember that I am not an expert in all areas of computer science, and I might not be familiar at all with your chosen topic.
The format of the paper is largely up to you. There should be a title, and a list of references at the end. For a paper of this length, it won't be necessary to include a separate abstract or table of contents. There should be a definite introduction section, and some kind of logical structure that will be obvious even to me. If you want to divide the paper into a few numbered sections, that's fine.
Some projects may involve a combination of implementation and written report. In such cases the report provides documentation over and above what's in the code you wrote, so a length of less than ten pages would probably suffice.
If your project involves some implementation, feel free to write something from scratch, or if appropriate add some functionality to some existing program that you may, for example, have down-loaded from the Internet.
All papers are expected to be grammatically correct, and spell-checked. Emacs has a spell checking mode. For grammar, I refer you to Strunk & White's Elements of Style, available at the UMBC bookstore for about $6.
I am willing to review an outline and/or drafts of your papers. In general, the earlier I see your work, the sooner I can give you useful feedback. I will announce the dates beyond which that sort of review is not as readily available.