### Checklist for Preparing Camera-Ready Versions

 Please contact Tao Xie if you have new points to suggest for such checklist. He constructed this checklist because (1) he has been "paranoid" about preparing camera-ready versions because once getting one's camera-ready versions in the digital library, they are there for the rest of one's life (and in fact longer than that) and (2) he is a bit tired of pointing out the same writing issues again and again on his students' writing and would like to save his efforts by asking his students to go through such checklist first. Note that such checklist would be useful for both preparing an initial submissoin and preparing a camera-ready version. A researcher should address sloppiness issues (even minor writing issues): if you are sloppy in writing, people would judge you to be sloppy in general (e.g., in research) and then would question the credibility of your work outcome. One last note before getting to the checklist: preparing (e.g., reviewing and editing) a camera-ready version takes significant time; if you don't find so, very likely you are not doing your job satisfactorily. Tao's average time spent on a single page of writing (letter-size, doule column page) would likely to be 1 hour or above.For ACM Format, please refer to this document for tips.=============Basic Steps:Install and use TeXStudio to edit your LaTeX files in the following steps Iterate through each section/LaTeX file:Look for those words with red underlines (highlighted by TeXStudio as typos) and if they are typos, fix them; otherwise, right click on these words to bring up a pull-down menu, and click "Add to Dictionary" so that these words (and later occurrences) won't have the red underlines.Iterate through each paragraphStep 1. For the paragraph, eyeball through the texts of this paragraph in the LaTeX files, watching out for low level writing issues such as subject-verb inconsistency, using a singular countable noun without using "a", "the", "our", .. before the noun, using "a" vs. "an" before a noun.Step 2. Click "Build & View" menu in TeXStudio to produce the PDF file from the LaTeX files. For this paragraph in the PDF file, eyeball through the texts of this paragraph to double check, with focus on (1) the semantics and meaning of the texts, and word usage consistency (not using "program" and "app" interchangeably in the same paragraph/paper); and (2) look-and-feel issues in the generated PDF view of the paragraph. In case you find any issues, right click the places with issues in PDF to bring up a pull-down menu, and click "Go to Source" to navigate to the rough location of the place in the LaTeX files, and fix this place.Click the "External Viewer" (the red book icon in the top-left corner of the PDF view in TeXStudio) to bring up the external viewer of the final generated PDF, and then globally search the following keyword on the PDF file by "CTRL+F":Search for keyword "this": make sure that EVERY "this" has a noun after it.Search for keyword "which": make sure that EVERY "which" has a "," before it, and make sure the noun before and closest to "which" is indeed what "which" refers to, and make sure the verb after "which" has noun-verb consistency.Make sure you have a funding acknowledgment in the end of your paper (before the references). Without it, your travel to present the paper may not be supported by the grants. Double check each single reference entry in the end of the paper for the following common issues:Special terms may have some letters with wrong upper/lower case. In the corresponding bibtex entry in the bib file, you have to add {} around the letter or the whole word to preserve the upper/lower case, such as putting {} around "N" in "title={Mag{N}et: a Two-Pronged Defense against Adversarial Examples}".Your conference names should have the same format across entries, e.g., "booktitle = {Proc. SOSP}," or "booktitle = {Proceedings of  ACM Symposium on Operating Systems Principles (SOSP)} but not both. You can choose the short form such as the former if you need space or the long form such as the latter if you have space. Make sure you change some letters from lower case to upper case: some conference names in bibtex entries copied from the ACM or IEEE Digital libraries may not have the correct upper case for conference names such as "proceedings of the ACM SIGSOFT symposium on the foundations of Software Engineering". So don't use the excuse to say "see, I copied this entry from the ACM Digital Library and it doesn't have the right format!" when you have the wrong format being caught by me.Your entries shall have page numbers unless you couldn't find page numbers on the Internet, e.g., papers in NDSS.More details are below.============= Numbers of the same type/category in the paper should have the same significant digits after the "." such as 8.2% and 9.0% instead of 8.2% and 9%. For numbers listed in tables, make sure your align them to the right; the reason is that doing so allows readers to easily spot out that one number is larger than another one. Figure captions should be below figures whereas Table captions should be above tables. All (sub)section/paragraphs titles should have the same style of making leading characters to be upper case. All reference entries should have the same reference format. Below are a sample of consistency: Don't forget to add page numbers for journal/magzine articles or conference/workshop papers. You should include no geo-location info for all conference/workshop papers or include such info for all conference/workshop papers, but not a mixture. Paper titles should have the same style of making leading characters to be upper case. If you use LaTeX, don't put additional { and } to enclose your whole paper title in bib files: doing so would force the generated reference entries to preserve the upper-case style of the original paper title in bib files. You also need to put { and } to enclose specific words that you would like to preserve their upper case characters in the middle of the words such as   "title     = {{FlumeJava}: easy, efficient data-parallel pipelines}," If you are using AAAI styles, you may use \shortcite instead of \cite to avoid writing "Xie and Notkin (Xie and Notkin 2003) proposed ..." but just "Xie and Notkin (2003) proposed ...". For example, you can say "Xie and Notkin~\shortcite{xie03:rostra}" in LaTeX or "\citeauthor{xie03:rostra}~\shortcite{xie03:rostra} proposed ...". More details are below.\cite: Cites the given reference(s) with a full citation. This appears as “(Author Year)” for one reference, or “(Author Year; Author Year)” for multiple references. \shortcite: Cites the given reference(s) with just the year. This appears as “(Year)” for one reference, or “(Year; Year)” for multiple references. \citeauthor: Cites the given reference(s) with just the author name(s) and no parentheses. \citeyear: Cites the given reference(s) with just the date(s) and no parentheses.Double check subject-verb consistency: many students tend to make such mistakes. Try your best to arrange figures/tables near top of pages. If you use LaTeX, you could mark figures/tables as [t] and let the layout algorithm do the magic. If you use MS Word, you are doomed: ignore this guideline because it is not easy or worthwile to spend your time to follow this guideline. All figure/table captions or footnotes should have the same style of writing. For example, you could make all captions to have "." in the end or without "." in the end, but not a mixture. Note that it is fine to have "." in the end of a phrase being the caption. Don't forget to add the "Acknowledgments" section/paragraph/footnote if your work is supported by grant(s) or there are people who helped you in preparing your paper and deserve acknowledgments. Without funding acknowledgments,  reimbursement to your conference/workshop trip to present the paper may not be successfully handled by using the corresponding grant(s) that supports the work in the paper. Check with your advisor to see what text to include in the acknowledgments. When you use noun+noun or adjective+noun to modify another noun and add "-" to connect the first two words if the real meaning is so, or rewrite it to avoid stacking nouns. For example, "Test Case Code" => "Test-Case Code", "Semantic Pattern Matching" => "Semantic-Pattern Matching" Noun stacking could be commonly caused by using a noun derived from a verb. Noun stacking would cause wide-spread usage of "-". When you find such issues, you should turn such noun derived from a verb to a verbal. Below are some examples of improvement Semantic-Pattern Matching. => Matching Semantic Patterns. Negative-Expression Identification. => Identifying Negative Expressions. ACP Model Instance Construction => Construction of ACP-Model Instances Subject, Action, and Resource Identification. => Identifying Subjects, Actions, and Resources. Policy Effect Inference. => Inferring Policy Effects. ACP-Model-Instance Transformation. => Transforming ACP-Model Instances When you include a project URL in the paper, don't create a webpage or directory under your own homepage. The reason is that when you graduate from the university, your homepage will go away. Instead, please create one under the group web such as https://sites.google.com/site/asergrp/projects as a subdirectory such as https://sites.google.com/site/asergrp/projects/covana. Don't use an HTML webpage as the URL but use a subdirectory. Name your subdirectory with the name of your approach (if your approach doesn't have a name, create a name that is unique enough to allow others to easily identify your approach by the name (e.g., don't give a name that is too general such as "testing", "regression", ..) If ACM formats, remember to change your copyright box to reflect the actual conference/workshop info. If you use MS Word, make sure you sort your references based on the order of the first author's last name for each reference. Also see Tao Xie's slides on Common Technical Writing Issues and Tools and Tips for Writing Paper linked from Tao Xie's advice portal. Below are things to do on finishing up a paper (here are some more tips: Instructions for the Preparation of a Camera-Ready Manuscript in LaTeX, Form & Style, Rules to write a good research paper). 1. Turn on the spell check feature of your LaTeX editor (like TeXnicCenter)  to show the real time warning as red underlines like in Microsoft Word. In TeXnicCenter, Tools->Options->Spelling tab-> enable all checkbox options in that tab including "Check spelling while typing". Then before you send your paper for me to review or submit it to somewhere, make sure you don't have red marks except for those words from the program source code like method  names or variable names. You can add those special words (such as "AspectJ") that are not in dictionaries but are ok in spelling to avoid their being marked with red underlines later on. 2. Run the style-check on your LaTeX source files before you send me your paper for me to review or submit it to somewhere. The instructions of using style-check can be found here. You should create style-check patterns as regular expressions based on common errors that I pionted out on your writing in the past. 3. Print out your paper draft and go through it on hardcopy, identify errors, and fix them before you send me your paper for me to review or submit it to somewhere. Relying on screen reading is very inefficient in spotting out writing errors. I don't do review on screen but on hardcopies. In addition, don't revise your draft while you are still in the middle of reviewing it; revise your paper only after you finish reviewing the whole draft or at least a good portion of your draft. More other steps before you submit a paper: Use spell checker features of your editing software and fix typos. Use style-check to scan through your tex files (instructions are below) and fix any warnings that you think need to be fixd. Especailly pay attention to those warnings including ASE, which are created inside the ASE group. Check the top margine of your generated PDF. If they are too narrow, follow the instructions here If you are submitting to an IEEE conference, they usually provide an IEEE PDF eXpress interface for you to check the compatibability of your generated PDF. One common issue of generated PDFs is missing embeded fonts. Here are some instructions on dealing with the issues. Some layout/format styles to follow: Try to arrange all figures or all tables on top of the page rather than in the middle or bottom of the page. If you have only one single-column figure/table, try to arrange it on top right-column. In addition, don't make a table out of powerpoint or word and then transform it to an EPS figure. You should directly write the table in LaTeX formats. There are several advantages: they look nicer; their content can more easily modified in LaTeX; most importantly, you can use LaTeX macros to automatically update the contents by using a (Perl) script to transform the raw experimental data to the data entry data. See my ASE 04 LaTeX source example in making tables. Make sure all items in your bibliography are consistent. For example, make sure all references have page numbers (except for references on books or URL resources). If you use the format of "In Proc. International Conference" then stick to it for all references. If you use the abbreviation of conferences/workshops, then put abbreviations for all possible references. Look out for widow or orphan. You should try to avoid these, as they disrupt your layout, are unattractive, and can be confusing. To adjust space for avoiding them, put \vspace*{-5.0ex} (changing 5.0 to other numbers as you need; change - to + if you want to expand the space) below or above figures, tables, or their titles. An “orphan” is a word or short section of a line isolated at the bottom of a paragraph or a page. Occasionally reports will have orphan headings - that is, headings which are at the bottom of the page, with the text that follows them on the next page. A “widow” is a word or sentence isolated at the top of a page (especially an otherwise blank page). An "orphan" is an isolated line of text at the bottom of a page; an "orphan heading" is a heading without following body text at the bottom of the page; a "widow" is an isolated line of text at the top of a page. Thanks to Conference Publishing Solutions: LaTeX: In order to eliminate widows and orphans, you can copy the following commands into the LaTeX source before \begin{document} :  \clubpenalty = 10000 \widowpenalty = 10000 \displaywidowpenalty = 10000  Sometimes, orhpans and widows will survive these commands, in which case a \vspace command might help. Balanced Columns on Last Page Thanks to Conference Publishing Solutions: LaTeX: In order to balance the columns of the last page to the same length, insert the following command into the LaTeX source before \begin{document} :  \usepackage{balance} and the following in the text that would appear as first column of the last page without balancing:  \balance  (Alternatively, \usepackage{flushend} might work as well.) Headline-Style Capitalization (Thanks to Conference Publishing Solutions) Capitalize: first and last word, first word after a colon (subtitle) all major words (nouns, pronouns, verbs, adjectives, adverbs) Lowercase: articles (the, a, an) prepositions (regardless of length) conjunctions (and, but, for, or, nor) to, as Hyphenated Compounds: always capitalize first element lowercase second element for articles, prepositions, conjunctions and if the first element is a prefix or combining form that could not stand by itself (unless the second element is a proper noun / proper adjective) Font Embedding (Archive PDF, als known as PDF/A-1a, cf. AIIM's PDF/A Committee) (Thanks to Conference Publishing Solutions) Check if a paper has all fonts embedded: pdffonts mypaper.pdf. Evince: Open and print-to-file with the document viewer Evince in order to get all fonts embedded. LaTeX - config: Update the file updmap.cfg of your LaTeX installation by changing some parameters as follows:  pdftexDownloadBase14 true dvipsPreferOutline true dvipsDownloadBase35 true dvipdfmDownloadBase14 true  It has been reported that the package mathabx is causing Type-3 fonts to be used (under pdfTeX-1.40.9). LaTeX - via PostScript: Use the tool chain latex + dvips + ps2pdf (the way via PostScript, see below for more on ps2pdf). LibreOffice / OpenOffice: Font embedding can be achieved via "File" - "Export as PDF ..." - "PDF Options - General" - "Option PDF/A-1a". Word using PDFCreator as printer: It has been reported that PDFCreator can be useful for creating PDF files from a Windows appliation. (Font embedding is decribed here.) Word using Nitro as printer: It has been reported that Nitro PDF produces problematic PDF files. Word 2007 using Adobe Acrobat Distiller 9: "File" - "Print (Adobe PDF Printer)" - "Properties" - tab "Adobe PDF Settings" - uncheck "Rely on system fonts only; do not use document fonts" and then click "Edit (Default settings)" - "Fonts" - "Embed all fonts". (Description with pictures by Ipek Ozkaya) In addition, check that the list of fonts under "Never Embed" is empty (illustration). Word using Postscript Printer and Acrobat Distiller: Create a PDF file from Word by first printing to a Postscript file (using print-to-file) and then distilling the file into a PDF file (using Acrobat Distiller). If this does not embed all fonts, the printer driver might replace some fonts with machine-specific fonts, which is easy to adjust in the properties of the printer driver. (This method is reported to be effective if converting from Word directly to PDF using Distiller adds random white boxes in the paper, typically near pictures.) PostScript: If your PDF file does not have all fonts embedded, try to produce a PS file, e.g., using latex and dvips, and then convert that PS file to PDF using ps2pdf as follows: ps2pdf -dSubsetFonts=true -dEmbedAllFonts=true -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -sPAPERSIZE=letter mypaper.ps mypaper.pdf Some conferences may require you to submit a single tex file including everything. But usually you have multiple tex files for a paper. Here you can find the guidelines of merging multiple tex files and bib files into a single file. Using style-check in our research server I have installed style-check in our research server. To use it, you need to go to your home directory, type in:   ln -s /home/public/tools/stylecheck/.style-censor  .style-censor This command generates a symblic link to the ASE group common ruleset for checking. You only need to type in this command once. Next time when you log in, the link is still there. You upload your tex files to a directory under your home directory in the server. Go to the directory, type in the command line:   style-check.rb -v *.tex If you want to save the checking results, you can type in:  style-check.rb -v *.tex > checklog.txt You can view the log either in Linux or download it to your local machine. Try to search the line starting with "(matched". Then the line above it is the verbose description of what the problem is. The line fruther above is the place where the problem is found and the end of the line shows the matched phrase. You can focus on those version descriptions that start with " ASE " You are encouraged to add more rules that you think you often violate in to the rule set! To update to the rule set, you can modify ~\.style-censor and add whatever rules that are specific to you. Your group members can also get to share them automatically.. Note that if you plan to add more rules here, please put comments and put " ASE " in the beginning of your comments so that we know the rules are created by our Illinois ASE group and warnings related to them should be paid more attention. Note that after "%" you need to specify a class (syntax, capitalize, phrase, spelling, or ignoredcommand) and then put your comments. More details on them can be found at here. To read how the existing rule sets are written. You can take a look at the files located at /etc/style-check.d/ and the rule set inside our ASE group: /home/public/tools/stylecheck/.style-censor. When you directly modify your ~/.style-censor in your home directory, the changes shall be reflected on the one shared by us because of the symbolic link you created earlier. I have incorporated many guidelines in my Common Technical Writing Issues slides. But some of them may not be easily incorporated. You shall take a look at the slides. Reference formats  Make sure you have consistent format for the references. I usually use the following format: D. Shepherd, J. Palm, L. Pollock, and M. Chu-Carroll. Timna: a framework for automatically combining aspect mining analyses. In Proc. 20th IEEE/ACM International Conference on Automated Software Engineering, pages 184-193, 2005. To save space, you don't need to put conference locations, months, publishers, or "(Proc)eedings of the". The items in the above format are mandatory. But if you do want to include any of them in your references, include them **consistently** for all references. If you copy bib entries from ACM Lib, you often need to turn the first character of the words in the conference title to upper cases. In my bib file, I usually put the id for a bib entry with AuthorlastnameYear:FirstConcreteWordOfTitle like "sen06:cute" for the entry below. If some characters of some words in your reference paper title should be upper case, you need to do special things as below. Bibtex automatically turns the words (except for the first character of the the first word) into lower cases. To force some words in the generated title to maintain their original upper cases, you should put {} around these words. For example, you may have title like: @inproceedings{sen06:cute,   author =    {Koushik Sen and Gul Agha},   title =    {CUTE and jCUTE : Concolic Unit Testing and Explicit Path Model-Checking Tools},   booktitle =  {Proc. 18th International Conference on Computer Aided Verification},   year =  {2006},   pages =  "419--423",   note =   {(Tool Paper)}, } Then the generated reference would include a title like "Cute and jcute: Concolic ...". To generate "CUTE and jCUTE: Concolic ...", you need to put {} around "CUTE and jCUTE" in the bib file like:  title =    {{CUTE and jCUTE} : Concolic Unit Testing and Explicit Path Model-Checking Tools},