<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE document PUBLIC "-//CNX//DTD CNXML 0.5 plus MathML//EN" "http://cnx.rice.edu/cnxml/0.5/DTD/cnxml_mathml.dtd">
<document xmlns="http://cnx.rice.edu/cnxml" xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="id11286853">
  <name>A Guide to Writing a Successful Paper on an Analysis of Algorithms and Data Structures</name>
  <metadata>
  <md:version>1.1</md:version>
  <md:created>2007/11/13 09:14:03.691 US/Central</md:created>
  <md:revised>2008/03/28 12:04:24.407 GMT-5</md:revised>
  <md:authorlist>
      <md:author id="wavelets">
      <md:firstname>Cain</md:firstname>
      
      <md:surname>Project</md:surname>
      <md:email>cainproject@mailman.rice.edu</md:email>
    </md:author>
  </md:authorlist>

  <md:maintainerlist>
    <md:maintainer id="wavelets">
      <md:firstname>Cain</md:firstname>
      
      <md:surname>Project</md:surname>
      <md:email>cainproject@mailman.rice.edu</md:email>
    </md:maintainer>
  </md:maintainerlist>
  
  <md:keywordlist>
    <md:keyword>Algorithms</md:keyword>
    <md:keyword>Communication</md:keyword>
    <md:keyword>Data Structures</md:keyword>
    <md:keyword>Writing</md:keyword>
  </md:keywordlist>

  <md:abstract>This guide describes how to explain your research in a persuasive, well-organized paper modeled on those published in computer science journals. To illustrate specific elements of this type of paper, this guide refers to a published sample(Sagapyroon, A and Aloul, F.A., 2007. Using SAT-based techniques in power estimation. Microelectronics Journal 38, 706-715.) Access the full paper via the Rice proxy at http://www.elsevier.com/wps/find/journaldescription.cws_home/405904/description#description.</md:abstract>
</metadata>
  <content>
    
    
    <para id="element-496"><note>For details on how to choose a project or conduct research on this topic, see <cnxn document="m15917">Analysis of Algorithms and Data Structures</cnxn>.</note></para><section id="id-987874266539">
      <name>Leading through Excellent Papers</name>
      <para id="id11842415">As a member of a research community in either academia or industry, you will need to publish your ideas and research work. A research paper places your work in context, helping readers to understand why the study was undertaken, what others have done in this same area, and the important question (hypothesis) that you examined. Your paper allows you to convince the readers that your conclusions and recommendations, backed by your evidence, are sound. </para>
      <section id="id-907592676781">
        <name>Meeting Readers’ Expectations through Structure</name>
        <para id="id12096805">Readers expect certain questions to be answered as they read papers: </para>
        <list type="bulleted" id="id12131704">
          <item>Why is this work important (introduction)? </item>
          <item>How was it done (methods)? </item>
          <item>What were the results (results)? </item>
          <item>What do those results mean (discussion)? </item>
        </list>
        <para id="id12585971">A traditional scientific research paper is structured to answer these questions. However, computer scientists often choose to further subdivide the content, using headings that signal the technical content that they discuss in each subsection. Note the descriptive headings that Sagahyroon and Aloul use to organize their paper: </para>
        <list type="enumerated" id="id5940614">
          <item>Introduction </item>
          <item>Boolean SAT and integer linear programming</item>
          <item>Problem description and formulation
             <list type="enumerated" id="id5693578">
             <item>Estimation of weighted maximum switching activity</item>
             <item>An illustrative example</item>
             <item>Maximum power-up current estimation</item>
             <item>An illustrative example</item></list></item>
             <item>Experimental results
              <list type="enumerated" id="id6326851">
              <item>Weighted maximum switching activity results</item>
              <item>Maximum power-up current estimation results</item></list></item>
          <item>Conclusions</item>
        </list>
        <para id="id11280918">This guide discusses how to prepare each of the traditional sections of a research paper and includes questions for you to consider as you write. Read each section of your draft to determine how well it answers these questions. Next, revise the draft so that it is clear, complete, and concise. The abstract, which appears first in publication, should be written last, and advice about it appears after information on the conclusion.</para>
        <section id="id-423025729999">
          <name>Introduction</name>
          <para id="id11346893">The Introduction formally invites your readers into your paper by providing background information necessary for understanding your research. Your first sentences should signal the focus of your paper and engage the reader’s attention, as in the following sentences from Sagahyroon and Aloul: </para>
          <para id="id11160183">
            <quote type="block">The last few years have seen a remarkable growth in the use of Boolean satisfiability (SAT) models and algorithms for solving various problems in electronic design automation (EDA). This is mainly [because] SAT algorithms have seen tremendous improvements in the last few years, allowing larger problem instances to be solved in different applications domains . . . . The growing integration scales in VLSI and the recent surge in the deployment and initialization of portable electronic devices have brought power dissipation to the forefront as a major design concern.</quote>
          </para>
          <para id="id11619055">Once the reader’s attention is engaged, most Introductions move from what is known about the topic to what is not known or in question, and then to the specific question that your research answered. As you write, include references to credible, peer-reviewed sources to support your claims. Your introduction should answer the following questions:</para>
          <list type="bulleted" id="id11046186">
            <item>What algorithms or data structures did you compare? How are they used? How have others studied them in the past?</item>
            <item>What question did you answer, or what problem did you solve through this comparison?</item>
            <item>Why is this question or problem important?</item>
            <item>How have others answered this question or solved this problem in the past? Why have these approaches been tried? To what extent are the approaches adequate?</item>
            <item>What was your specific hypothesis (i.e., what did you expect to happen)?</item>
            <item>How did you test this hypothesis?</item>
            <item>What insights does your comparison reveal (i.e., why is your specific approach useful)?</item>
          </list>
          <para id="id11846756">At the end of the Introduction, readers expect to find a concise forecast of the research work reported. This forecasting statement or paragraph offers the main point or claim of your research and previews what the reader will learn in the remainder of the paper. This forecast does the following:</para>
          <list type="bulleted" id="id11069234">
            <item>States the specific problem your research explored</item>
            <item>Highlights unique aspects of your approach</item>
            <item>Reviews, briefly, your most important findings (and why they are important)</item>
            <item>Provides a roadmap for the rest of the paper.</item>
          </list>
          <para id="id12745687">Consider the forecasting statement associated with the Sagahyroon and Aloul paper. Notice how these authors employ a consistent, easy-to-follow structure that leads readers through the main points of their paper.</para>
          <table id="id10629452">
            <tgroup cols="2">
              <colspec colnum="1" colname="c1" colwidth="200"/>
              <colspec colnum="2" colname="c2" colwidth="200"/>
              <tbody>
                <row>
                  <entry>The primary objective of this paper is to demonstrate the validity of ILP solvers, SAT-based and generic-based, in addressing the two [power] estimation problems discussed above.</entry>
                  <entry>Summarizes the authors’ specific claim or contribution. </entry>
                </row>
                <row>
                  <entry>In this work, we first show how to model the two problems as SAT, i.e., 0-1 ILP, instances; and secondly we evaluate the performance of the latest SAT and generic ILP solvers in handling these instances. </entry>
                  <entry>Summarizes the methods used and specific comparisons made. </entry>
                </row>
                <row>
                  <entry>We show that generic ILP solvers are likely to achieve better results than SAT-based and random-based approaches when solving the proposed power problems.</entry>
                  <entry>Describes the results obtained. Note that this summary could have been strengthened by including an explanation for why the generic ILP solvers perform better (though this paper actually makes no claims about why, but simply demonstrates the viability of generic ILP).</entry>
                </row>
                <row>
                  <entry>The paper is organized as follows. Section 2 includes background information on SAT and ILP. Section 3 describes the estimation problems and their formulation using 0-1 ILP. Experimental results are presented in Section 4, and the paper is concluded in Section 5.</entry>
                  <entry>Provides a roadmap for the rest of the paper.</entry>
                </row>
              </tbody>
            </tgroup>
          </table>
        </section>
        <section id="id-762999356517">
          <name>Methods (Algorithms and Implementation)</name>
          <para id="id11572422">This section tells how you conducted your project. It should be detailed enough to guide someone who wants to reproduce your study. It should not, however, be structured as a chronology of what you did (for example, “First we tried this, but that didn’t work, so then we did this.”). If you encountered problems, first discuss the methodology you finally settled on. Insert notes about problems and adjustments you made, when these are relevant to the final outcomes, in the Results/Discussion section.)</para>
          <para id="id10757495">The Methods section of a computer science paper is usually divided into two parts. In the first part, identify the algorithms or data structures you investigated: </para>
          <list type="bulleted" id="id10036972">
            <item>Summarize the algorithms generally for your audience </item>
            <item>Highlight features relevant to your project </item>
            <item>Refer readers to your references for further details </item>
            <item>Use code snippets, descriptions, or diagrams to describe an algorithm or an optimization you employed. (Note: Do not provide your code as part of your paper. Further, do not spend a lot of time describing the algorithms, since the algorithms won’t be your new contribution.) </item>
          </list>
          <para id="id10037542">The second part explains how you implemented the algorithms in your research. </para>
          <para id="id12369522">Another way to think of the content of the Methods section is to imagine the questions that the two parts of the Methods section answer. </para>
          <para id="id10685512">Part 1</para>
          <list type="bulleted" id="id12063902">
            <item>What algorithms or data structures did you select? Who created them? What is their asymptotic behavior? What other specific characteristics are worth noting for this study?</item>
            <item>What programming language and platform did you use? What impact did these choices have on your project?</item>
          </list>
          <para id="id12584582">Part 2</para>
          <list type="bulleted" id="id12092521">
            <item>How specifically did you implement the algorithms?</item>
            <item>How did you handle instrumentation code? Why? </item>
            <item>Did you perform any optimizations? Why or why not?</item>
            <item>How did you choose to test and benchmark your code?</item>
            <item>What inputs (data) did you select to test your implementations? Why?</item>
          </list>
        </section>
        <section id="id-9676067421">
          <name>Results / Discussion (Benchmarking and Analysis)</name>
          <para id="id12026535">Unlike many articles in the traditional sciences, computer science research articles tend to combine results and discussion. Journals adopt this structure because the raw data are less important than the analysis. Provide representative examples that illustrate trends or outcomes that are important to your hypothesis. Focus most of your time, however, on the analysis of the results and what they reveal about the algorithms you are studying. </para>
          <para id="id11664529">You will summarize the results of your benchmarking tests primarily in figures. <emphasis>You will be graded on the quality of your figures.</emphasis> Consider the following advice as you sort through the raw data:</para>
          <list type="bulleted" id="id12757667">
            <item>Select what is important to the question. Choose a representative subset (and be sure to justify your choice in the text). Don’t display all of the data you collected. It’s up to you to select and represent results. </item>
            <item>Make your data readable and understandable in tables and graphs, using colors, shading, or other means to highlight the points you plan to make. </item>
            <item>Plan to meet the needs of two kinds of readers. While many scientists will read your paper from start to finish, some scientists gauge whether or not to read an entire paper by first skimming the abstract and then examining the figures. To capture the interest of “skimmers,” ensure that your figures highlight your key findings and phrase the captions so that readers can follow your argument. Use informative titles that enable a reader to make sense of the figure without reading the paper’s text. Read through the figure titles, one after the other, and see if the titles capture the main points of your argument. To avoid confusion, check for consistency between the phrasing in the titles and the words in your figures’ axes or your tables’ column headings.</item>
            <item>In addition to employing informative captions, explain all your tables, diagrams, and figures in the text. Insert tables, diagrams, and figures <emphasis>in the body of the paper for submission in this course.</emphasis> Introduce a figure before it appears; discuss it afterward. </item>
            <item>Take a look at examples of good and poor graphs from papers from earlier years at the Cain Project Web site: <link src="http://www.owlnet.rice.edu/~cainproj/courses/comp482.html">http://www.owlnet.rice.edu/~cainproj/courses/comp482.html</link></item>
          </list>
          <para id="id11341952">The analysis of the results is the most important part of your paper because it presents your original work and explains its significance. Your analysis confirms or denies your study’s basic hypothesis, interpreting your numerical results to demonstrate how they answer the questions you set out in the introduction. The analysis must support your conclusions. </para>
          <para id="id11264271">Try to think about what your reader wants to know about your results. Here are some questions to guide you:</para>
          <list type="bulleted" id="id9974582">
            <item>What, specifically, did you learn from comparing these algorithms or data structures?</item>
            <item>What do your results say about the problem or question you were investigating? </item>
            <item>Was your hypothesis confirmed or disproved?</item>
            <item>Are the results what you expected? </item>
            <item>If you obtained anomalies or other unexpected results, can you explain them? If not, how could you set about in the future to identify what caused them?</item>
            <item>How do your results compare to past findings? Are they consistent? Different? Why?</item>
            <item>How would you respond to objections or questions that other researchers might have about your methods, results, or interpretations? </item>
          </list>
        </section>
        <section id="id-740065632739">
          <name>Conclusion</name>
          <para id="id11800733">The conclusion answers the readers’ question: “So what?” It should give your readers points to “take home” from your paper. It should state clearly what your results demonstrate about the hypothesis you were testing in the paper. It should also generalize your findings, perhaps suggesting how others can use them in future research. All generalizations should be supported by your data, however; the discussion should have proved these points, so that when the reader gets to the conclusion, the statements are logical and seem self-evident. No new evidence should be introduced in the conclusion. </para>
        </section>
        <section id="id-821985959432">
          <name>Abstract</name>
          <para id="id11117669">An abstract appears at the beginning of a paper, but you should write it last because it summarizes your whole paper. Readers should be able to read only the abstract and still understand your primary points. Your abstract should briefly answer the following questions: </para>
          <list type="bulleted" id="id11377924">
            <item>What question did you answer or what problem did you solve through this comparison? </item>
            <item>Why is testing a hypothesis about this question or problem important (why should your readers care about the work you conducted)?</item>
            <item>What methods did you select? Why did you select these particular approaches?</item>
            <item>What results did you obtain?</item>
            <item>What is the significance of the results? </item>
            <item>What do they tell about the comparison you made? </item>
            <item>Was your hypothesis confirmed? </item>
            <item>Are there any surprises or anomalies in the results and, if so, how might you explain them? </item>
            <item>What other interpretations might be considered? </item>
            <item>What additional research could be conducted based on your findings?</item>
          </list>
        </section>
        <section id="id-241890266701">
          <name>Acknowledgements</name>
          <para id="id10438740">One of the ways that you demonstrate your professional identity is by acknowledging the help others have given you. For example, a professor or researcher may have shared a data set or testing facilities that made your project possible. Friends may have provided access to a manuscript that has not yet been published, or they may have answered a question through email correspondence. Another undergraduate may have run hours of tests for you or loaned you the use of a computer. Thanking such people demonstrates your ethical awareness that research is often, perhaps even usually, possible because of many generous individuals and organizations.</para>
        </section>
        <section id="id-746005163601">
          <name>References </name>
          <para id="id12086074">All facts, algorithms, figures, or tables taken from print or online sources should be cited and the sources listed at the end of the document in a section titled “References.” An article that has been published in a peer reviewed journal and located in an on-line repository (such as JSTOR) is acceptable, but you must state the date on which you retrieved it and give the URL for its permanent location. Web sites posted by individuals are not acceptable references. Do not cite the course textbook for background.</para>
          <para id="id11219400">All references should be in Association for Computing Machinery (ACM) style, which is summarized below. Full details on ACM style and style templates can be found at <link src="http://oldwww.acm.org/pubs/">http://oldwww.acm.org/pubs/</link> (scroll under Policies and Procedures for guidelines on plagiarism and electronic submission of articles using LaTeX or Microsoft Word). </para>
          <para id="id11633682"><emphasis>In-text citation style:</emphasis> To note a parenthetical reference, enclose the last name of the first author and year of publication [Burando 2007]. When there are two authors, both last names and the year of publication are included [Burando and Lee 2007]; when there are more than two authors, cite the last name of the first author followed by et al. [Burando et al. 2007]. If multiple citations are needed, list all in square brackets separated by semi-colons [Burando 2007; Burando and Lee 2007; Burando et al. 2007]. When a citation is part of a sentence, the name of the author is NOT enclosed in brackets, but the year is: "So we see that Burando et al. [2007]..."</para>
          <para id="id11820290"><emphasis>Journal reference style:</emphasis> ABDELBAR, A.M., AND HEDETNIEMI, S.M. 1998. Approximating MAPs for belief networks in NP-hard and other theorems. Artificial Intelligence 102, 21-38.</para>
          <para id="id11365188"><emphasis>Book reference style: </emphasis>GINSBERG, M. 1987. Readings in Nonmonotonic Reasoning. Morgan Kaufmann, Los Altos, CA.</para>
          <para id="id9996692"><emphasis>Article in a book or collection:</emphasis> GREINER, R. 1999. Explanation-based learning. In The Encyclopedia of Cognitive Science, R. WILSON AND F. KEIL, Eds. MIT Press, Cambridge, MA, 301-303. </para>
          <para id="id10616465"><emphasis>Conference proceedings: </emphasis>MAREK, W., AND TRUSZCZYNSKI, M. 1989. Relating autoepistemic and default logics. In Proceedings of the 1st International Conference on Principles of Knowledge Representation and Reasoning, Toronto, Canada, May 1989, H. BRACHMAN AND R. REITER, Eds. Morgan Kaufmann, San Mateo, CA, 276-288. </para>
        </section>
      </section>
    </section>
  </content>
</document>
