How to Write

How to Write for Computer Science

I recommend having a look at Aalto instructions for writing scientific engineering text. Here is a quick cheat sheet.

Word order:

  • The word order is Subject Verb Object "Way" Place Time (or in Finnish: SPOTPA - Subjekti Predikaatti Objekti Tapa Paikka Aika):

    • If you deviate from this rule, you should usually introduce commas as follows (note: commas are optional many times):

      • Normal order: Students learn English quickly in school during Autumn.

      • Time first: In Autumn, students learns English quickly in school.

  • Main clause (päälause) before the subordinate clause (sivulause):

    • If you deviate from the above rules, you have to introduce commas as follows:

      • Normal order: Who cares if I skip grammar rules?

      • Reversed order: If I skip grammar rules, who cares?

  • The reason for changing the word order is that you want to emphasize the part that you moved to the beginning (which is important in English).

Passive voice:

  • Avoid passive voice because it gives the impression that you're not sure what is happening. You can detect passive sentences usually from (1) a verb that ends in -ing, (2) the use of "by" word, (3) "there is", (4) "it is" or (5) we need to...

  • Prefer always active voice: "a machine executes instruction" instead of passive "instruction is being executed by a machine".

  • The passive voice usually comes from translating your native language into English. Don't translate, learn to think in English!

  • Easy way to convert "there are different methods to xx" passive into active is to use "Different methods exists to xx"

Bad words:

  • make: this usually a too generic word. Try to figure out a more specific verb to describe the activity. Usually all sentences can be written without it.

  • happens -> use occurs instead

  • like -> use "such as" instead

  • to/for -> prefer "in order to" whenever you actually mean "in order to" because it is a more clear expression

  • there is, it is -> this is passive voice, just explain "who is doing what" instead of observing that something is happening

  • will -> usually can be just omitted unless you really are referring to the future. In scientific text, this word has a very strong meaning. For example: "This will occur" = We are 100 % sure that this occurs in the future and we can prove it scientifically.

Bibliography:

  • Never reference wikipedia directly. Find out the actual references outside of wikipedia and reference them instead.

  • Don't reference webpages but instead use a \footnote{}. If you really must reference a web page in bibliography (this is a bad practice!!!), then you should add a date when you viewed it (sometimes needed when you cite a web page frequently in your paper).

  • Bibitem should not be a substantive in the sentence. So, the sentence should make sense even if you removed the reference.

Citation:

  • This means that you have copied (i.e., you are quoting) a sentence from the source. [1]

  • This means that you have not copied the sentence from the source, but rather you wrote it yourself and you just want to reference the source [1].

Miscellaneous:

  • About the use use of "and" to bind two sentences together:

    • Never drive and send messages at the same time. [No comma because the sentences do not really make sense if separated by a dot]

    • The behavior is typical for cats, and dogs may behave differently. [Comma here because the sentences could be separated with a dot, i.e., the sentences are just are glued together with "and"]

  • Do not use the term "I" even though you are the only author of the paper. Always use "we".

  • Use "we" or "our" only when you wish to refer to the authors and e.g. their contributions. Otherwise avoid it. Also, please do not use it to introduce passive sentences either.

  • Might < may < can < will (from weakest to strongest expression)

  • Correct use of dash: Light-weight process vs. Light weight process migration

  • Package vs message vs packet vs datagram vs frame

    • Package: In Linux, a package typically refers to e.g. rpm or deb installation package (i.e. a file)

    • Message: application-layer concept than may span multiple IP packets

    • Packet: e.g. a single IPv4 or IPv6 packet

    • Datagram: usually refers to transport layer concept (e.g. UDP datagram)

    • Frame: link layer concept (the data after link layer header is a frame)

  • Flow diagram vs. state machine

    • Flow diagram shows an example traffic flow

    • State machine shows how the complete protocol operates

  • Avoid jargon if possible (see here why)

Suggested literature: