Academic Writing for Computer Science

Academic Writing for Computer Science

Richard Zanibbi
Rochester Institute of Technology (NY, USA)

Oct. 2005, Revised: Sept. 2007, Aug. 2008, May 2014

The purpose of this document is to summarize my views on academic writing for Computer Science. Comments are welcome ( For those interested in more detailed advice, including how to structure a paper and how to use math, pseudo code and figures effectively, I recommend consulting Zobel's excellent book on this topic. As an aside, for examples of excellent essay writing on Computer Science topics, see the (particularly early) work of Paul Graham.

Writing Clearly

A reader's attention is a scarce resource that written documents need to make the best possible use of. Writing clearly allows you to increase the amount of information that the reader can take in within a fixed (let's face it: usually short) amount of time. Some of the main issues to address are the following:

  1. Have someone else read your document, even if only quickly. We're often surprised by what is unclear in our writing when we show it to others, and this is a very efficient way to identify possible weaknesses in the document.
  2. Know who your reader, the audience, is. For a course paper, this is the instructor/markers. For research, this is researchers in a research area (e.g. AI, Expert Systems, or Software Engineering), etc.
  3. Tell the reader what the topic of the document is, in as specific terms as possible; this lets them make use of what they already know.
  4. Organize the document clearly into sub-topics, issues, or problems, with section headings (titles for sections) to reflect this, but within reason. Too many headings can actually slow a reader down.
  5. Tell the reader about the organization of topics in the document, and order the sub-topics in a way that makes sense (providing a good "flow" of ideas). A good academic paper is not a mystery novel; its main function is to explain clearly, not to entertain, inspire, or awe.
  6. Insure that your text is as technically correct and complete as possible. This means that explanations and examples are correct and consistent with one another, data such as experimental results are presented in their entirety, accurately and without bias, and that important relationships between concepts are made explicit. Any additional information required for a complete understanding is indicated through citations of appropriate references. What references are needed depends upon who we are writing for (for example: citing documents explaining basic automata or complexity theory is usually a waste of time for Computer Science students).
  7. Use the clearest and simplest language possible. Academic writing should be formal and use appropriate terminology, but a clear explanation is more important than always using the formal term for a concept. For example, if a children's game is a good analogy for a concept you are presenting, it is probably better to talk about "the children in the game" rather than "the set of players employing mixed strategies in CG-A" to introduce the analogy.
  8. Use grammatically correct and stylistically consistent prose. I strongly recommend the famous book "The Elements of Style" by Strunk and White, which discusses writing clearly and correctly, and is quite short and cheap. Here is a (silly) example of stylistically inconsistent prose:
    "The negative correlation of increased ice cream prices with child happiness has been well documented by Vitiello and Natarajan [3,6,10,17]. I really wish they would keep prices down, because I really love chocolate ice cream (yummy!) and graduate school doesn't pay that much (you've read Ph.D. comics, right?)."


  • Primary Reference: the original source where a fact/idea/theory/opinion etc. is stated.
  • Secondary Reference: a document that cites a primary reference.
  • URLs (web links): avoid these.

Generally, in good academic writing one aims to use as few secondary references as possible, and avoids "ternary" (a document that cites a secondary reference) or more distant documents altogether. The reason to avoid "ternary" and more distant references is that people in general are bad at keeping the core information/spirit of a document's content if they use someone's summary of someone's summary of someone's summary ... etc. (consider what happens with gossip, for a day-to-day analogy).

Avoid using URLs, except where it is completely unavoidable: the web is dynamic, files move regularly, and URLs are hard to read and contain little information about a source (also, see the section on Bibliographic Formats, below). Another reason to avoid URLs for web pages is that unlike academic papers and conferences in Computer Science, web pages usually have not been peer-reviewed, and many are written to persuade, not inform.

With the current rate of publication, often it is impossible to cite all literature on a subject. Choosing which references to include in a discussion requires a balance between frequently cited peer-reviewed papers (often these are 'seminal' primary references that present key ideas or techniques) along with other papers that clarify the discussion or support arguments in your paper. Any reference that does not contribute to the main discussion of the paper should be omitted, and you should read all papers that you cite.

Don't aim to maximize the number of citations in your paper. In essence, locating the references that will define and/or support a paper is a complex search problem, and is a skill that takes a great deal of practice for most people to develop. Make sure to read paper abstracts and skim papers before deciding to read them in detail, to make your search more efficient.


While you are permitted to quote sources directly (using "", or offset in an indented block between paragraphs), generally in academic writing most of the words should be your own. If you are paraphrasing someone else's words or explaining a fact/concept/etc. from another paper, you should provide the relevant citation at the end of the sentence. Another option is to provide citations before or after a section of text, to indicate where the concepts came from, for example:

    "Mark's opinions on appraising land for resale may be found elsewhere [1,3,4]. The types of land that Mark preferred to appraise included...."

When you use someone else's words or ideas without giving credit, this is called plagiarism, and is considered a form of academic dishonesty ("cheating"). As an example, copying and pasting sections of a document and including it in one of your own, without explicitly citing the source (e.g. using a '[number]') is a type of plagiarism.

Bibliographic Tools (e.g. LaTeX/BibTeX)

One of the frustrations of computing research is the lack of standard biliographic formats - each professional organization (e.g. IEEE, ACM, SPIE) and often even individual conferences will use different citation and bibliographic entry styles. Fortunately, if you use LaTeX to create your paper, then publication venues often provide bibtex files that can automate citation and bibliography style.

Make use of bibliography database programs, so that you can easily collect, select, organize, and annotate your references. Most modern systems, such as BibDesk allow you to save the .pdf with the .bib entry, and even mark-up the .pdf file, a very useful feature. There are many systems for organizing paper databases; a short list of systems that I know of include: EndNote, Mendeley, Zotero, and JabRef.

Personally I find that for each paper I write, I need to copy entries from my bibtex bibliography database into a separate file, as different styles use different fields. Further, I find that the formatting and amount of information provided by .bib databases online differs dramatically, and so there is always some editing of the bibliography entries that is needed. Carefully editing your bibliography is a sign of respect to the journal/conference, and more importantly your readers, who need accurate and complete information if they choose to find or quickly scan the references cited in your paper.

Note that using URL's for references is unacceptable when a proper paper citation is available. If you must use a URL, accompany the link with the name of the author(s) of the document, document title and creation/posting date of the web page.