We found this old letter in a pile of papers when we were cleaning out the office of a faculty member who left the University years ago. We're passing it along in case anyone might find it useful.
-- Doug Comer, 1993
To The Candidate:
So, you are preparing to write a Ph.D. dissertation in an experimental area of Computer Science. Unless you have written many formal documents before, you are in for a surprise: it's difficult!
There are two possible paths to success:
Here are a few guidelines that may help you when you finally get serious about writing. The list goes on forever; you probably won't want to read it all at once. But, please read it before you write anything.
The Old Guard.
Good writing is essential in a dissertation. However, good writing cannot compensate for a paucity of ideas or concepts. Quite the contrary, a clear presentation always exposes weaknesses.
"X does Y. This means ..."the reader can assume "this" refers to Y or to the fact that X does it. Even when restricted (e.g., "this computation..."), the phrase is weak and often ambiguous.
Use active constructions. For example, say "the operating system starts the device" instead of "the device is started by the operating system."
Write in the present tense. For example, say "The system writes a page to the disk and then uses the frame" instead of "The system will use the frame after it wrote the page to disk."
Example: say "no data block waits on the output queue" instead of "a data block awaiting output is not on the queue."
Be careful that the subject of each sentence really does what the verb says it does. Saying "Programs must make procedure calls using the X instruction" is not the same as saying "Programs must use the X instruction when they call a procedure." In fact, the first is patently false! Another example: "RPC requires programs to transmit large packets" is not the same as "RPC requires a mechanism that allows programs to transmit large packets."
All computer scientists should know the rules of logic. Unfortunately the rules are more difficult to follow when the language of discourse is English instead of mathematical symbols. For example, the sentence "There is a compiler that handles the N languages by..." means a single compiler exists that handles all the languages, while "For each of the N languages, there is a compiler that handles..." means that there may be 1 compiler, 2 compilers, or up to N compilers. When written using mathematical symbols, the difference are obvious because "for all" and "there exists" are reversed.
"After working eight hours in the lab that night, we realized..." has no place in the dissertation. It doesn't matter when you realized it or how long you worked to obtain the answer. Another example: "Jim and I arrived at the numbers shown in Table 3 by measuring..." Put an acknowledgement to Jim in the dissertation, but do not include names (even your own) in the main body.
You may be tempted to document a long series of experiments that produced nothing or a coincidence that resulted in success. Avoid it completely. In particular, do not document seemingly mystical influences (e.g., "if that cat had not crawled through the hole in the floor, we might not have discovered that the power supply error light was lit on the bridge"). Never attribute such events to mystical causes or imply that strange forces may have affected your results.
Summary: stick to the plain facts. Describe the results without dwelling on how they were achieved.
Both of the following examples are incorrect: "The method outlined in Section 2 represents a major breakthrough in the design of distributed systems because..." "Although the technique in the next section is not earthshaking,..."
One always cites papers, not authors. Thus, one uses a singular verb to refer to a paper even though it has multiple authors. For example "Johnson and Smith [J&S90] reports that..."
A citation of the form "Johnson and Smith believed X" casts doubt on "X" because it references the authors' thoughts instead of the facts. If you agree "X" is correct, simply state "X" followed by a reference. If one absolutely must reference a paper instead of a result, say "the paper states that" or "Johnson and Smith [J&S 90] argues that".
A reader can become confused when a concept and an instance of it become blurred. Common examples include: an algorithm and a particular program that implements it, a programming language and a compiler, a general abstraction and its particular implementation in a protocol or system, a data structure and a particular instance of it in memory.
When defining the terminology for a concept, be careful to decide precisely how the idea translates to an implementation. Consider the following discussion:
VM systems include a concept known as an address space. The system dynamically creates an address space when a program needs one, and destroys an address space when the program that created the space has finished using it. A VM system uses a small, finite number to identify each address space. Conceptually, one understands that each new address space should have a new identifier. However, if a VM system executes so long that it exhausts all possible address space identifiers, it must reuse a number.
The important point is that the discussion only makes sense because it defines "address space" independently from "address space identifier". If one expects to discuss the differences between a concept and its implementation, the definitions must allow such a distinction.
The facts that result from an experiment are called "data". The term "knowledge" implies that the facts have been analyzed, condensed, or combined with facts from other experiments to produce useful information.
A dissertation must carefully separate cause-effect relationships from simple statistical correlations. For example, even if all computer programs written in Professor X's lab require more memory than the computer programs written in Professor Y's lab, it may not have anything to do with the professors or the lab or the programmers (e.g., maybe the people working in professor X's lab are working on applications that require more memory than the applications in professor Y's lab).
One must be careful to only draw conclusions that the evidence supports. For example, if programs run much slower on computer A than on computer B, one cannot conclude that the processor in A is slower than the processor in B unless one has ruled out all differences in the computers' operating systems, input or output devices, memory size, memory cache, or internal bus bandwidth. In fact, one must still refrain from judgement unless one has the results from a controlled experiment (e.g., running a set of several programs many times, each when the computer is otherwise idle).
Even if the cause of some phenomenon seems obvious, one cannot draw a conclusion without solid, supporting evidence. In a scientific dissertation, one never draws conclusions about the economic viability or commercial success of an idea/method, nor does one speculate about the history of development or origins of an idea.
A scientist avoids all political influence when assessing ideas. Obviously, it should not matter whether government bodies, political parties, religious groups, or other organizations endorse an idea. More important and often overlooked, it does not matter whether an idea originated with a scientist who has already won a Nobel prize or a first-year graduate student. One must assess the idea independent of the source.
In general, every dissertation must define the problem that motivated the research, tell why that problem is important, tell what others have done, describe the new contribution, document the experiments that validate the contribution, and draw conclusions.
There is no canonical organization of a dissertation; each is different. However, novices writing a dissertation in the experimental areas of CS may find the following example a good starting point:
The easiest way to build a dissertation is inside-out. Begin by writing the chapters that describe your research (3, 4, and 5 in the above outline). Collect terms as they arise and keep a definition for each. Define each technical term, even if you use it in a conventional manner.
Organize the definitions into a separate chapter. Make the definitions precise and formal. Review later chapters to verify that each use of a technical term adheres to its definition.
After reading the middle chapters to verify terminology, write the conclusions. Write the introduction next. Finally, complete an abstract.
By the way, there is a key to success: practice. No one ever learned to write by reading long letters like this. Instead, you need to practice, practice, practice. Every day.
After great pain, a formal feeling comes.
-- Emily Dickinson
A man may write at any time, if he will set himself doggedly to it.
-- Samuel Johnson
Keep right on to the end of the road.
-- Harry Lauder
The average Ph.D. thesis is nothing but the transference of bones from one graveyard to another.
-- Frank J. Dobie