如何寫好一篇高質量的IEEE/ACM Transaction級別的計算機科學論文?

轉自《知乎》如何寫好一篇高質量的IEEE/ACM Transaction級別的計算機科學論文? 
問題: 
做爲一個博士生,一直爲寫論文頭疼,讀過不少高質量論文,以爲寫的真好,可是輪到本身寫老是力不從心。 最討厭的是活生生的把一個A級別的idea寫成C質量的論文…..算法

在這裏的高質量限於IEEE/ACM Transaction級別,或者同等級別的Conference, 例如SIGKDD,CVPR,STOC,CCS之類架構

看過不少如何寫論文的文章或者視頻, 但都面向的是如何寫論文, 而不是如何寫Transaction級別的論文, 但願獲得一些指點ide

回答: 
做者:Terafer 
連接:https://www.zhihu.com/question/22790506/answer/81787300 
來源:知乎 
著做權歸做者全部,轉載請聯繫做者得到受權。性能

恭喜你已經有了一個A類別的idea和相應的實現以及數據,那麼接下來就是寫文章的問題了。計算機論文寫做仍是有必定的規律能夠遵循的。idea

首先,你須要判斷本身的文章是投往哪一個A類期刊或者會議,是IEEE的仍是ACM的。一般IEEE會議的格式和ACM會議的文章格式要求有所不一樣,我建議你在投論文以前先把該會議的Call For Papers好好研讀一番,弄清楚文章長度,須要使用的Latex或者Word模板以及匿名方式等一系列非技術性問題,而後再開始寫做。code

在寫做以前,先問問本身若是這篇文章寫好之後給整個領域(community)的貢獻是什麼,這其實是整個文章的靈魂,也就是你解決某個問題(problem)的方案(idea)。想清楚之後把它(們)按照重要性順序寫下來,這些就是你在Introduction裏面告訴讀者包括審稿人的contributions。貢獻多是新算法,新架構,新實現或者是前人沒有的insights。你在寫contributions的時候面向的讀者頗有多是本身,因此可能忽略了problem背景和定義,這些就能夠慢慢在Introduction裏面填充。視頻

這樣Introduction就寫好了,好比說:某某問題是實際中存在的一個問題,這個問題重要性是blah,blah,blah。以前發表的論文針對這個問題提出了三個有表明性的解決方案(此處引用可能至少三篇論文)。第一個解決方案甲大概作了一二三,可是沒作四;第二個解決方案乙作了一四,可是沒作二三;第三個解決方案丙作了一二三四,可是性能比較差。在這篇文章中,咱們提出一個性能比較好而且同時作一二三四的解決方案。接下來寫咱們這個解決方案是如何實現同時支持一二三四的狀況下提高性能的。好比說用了新算法,新架構或者新的實現,均可以。講完基本技術創新點之後就是contributions,把以前想好的貼上去就能夠了。最後在Intro裏面加上後續內容組織,好比說第二章是相關工做,第三章是綜述,。。。ip

通常來講Intro寫完之後會寫一章相關工做(Related Work)。從最Related的論文開始寫起,好比說以上提到的三篇。這裏須要着重講的是,Related Work不是記流水帳(e.g.,甲用了idea A,乙用了idea B,丙用了idea C),而是要比較這些論文,闡述她們各自的優缺點。內存

Related Work寫完後,你須要寫一個Overview來總括你的問題和解決方案。個人經驗是最好想一個最最簡單的例子(Running Example),而後使用這個例子引出你要解決的問題。接着再把以前在Intro中提到的現有解決方案挨個說一遍,而且用那個案例代表三個解決方案的不足(這裏最好用實際數據)。最後把你的解決方案介紹一下,重點是與前人作的相比較。若是你用了一種新的算法,你能夠大概提一下這個算法的思路以及實驗數據;若是是新架構,最好放一張架構圖上去,而後闡述一下新架構的優點(以及劣勢)。在這一章介紹本身的idea的時候,你只須要概略描述便可,凡是涉及到技術細節的東西都可以引用後面的章節來節省頁面空間。get

後面這一章就徹底是技術細節了。若是是本身作的的話,這一章是最好寫的,由於你只須要把code/算法/架構在紙上還原出來便可。注意因爲頁面限制,通常來講這一章不可能包括全部細節,按重要性取捨吧。注意有些corner cases,若是很重要的話,千萬別省略。

技術細節講完了,若是頁面容許,你還能夠大體講一講你的實現狀況。好比說新的系統是在Linux上實現的,新加了20000行C代碼,1500行Python以及300行Bash script。C代碼主要幹什麼,Python主要幹什麼以及Bash script幹什麼,最好能與技術細節裏面所講的呼應。

天然地,技術細節和實現講完了就該講你是如何用實驗驗證你的解決方案支持你的contributions啦。根據上面的例子,你須要寫的是如何從實驗數據中展現你的解決方案支持一二三四而且性能不錯。支持一二三四這種是或否的問題比較容易說,可是性能不錯就須要和前人做品作大量比較了。柱狀圖,折線圖,表格等等數據展現手段,只要能說明問題均可以採用。這裏須要注意的是,只要你寫在論文裏面的文字或者是圖表,你都要想清楚背後的緣由,最好能在論文裏作充分的解釋。比方說,你採用了新的算法,性能見表1,緣由是複雜度下降了;你採用了新架構,性能提高見圖3,緣由是新架構節省了內存拷貝。一般來講,新算法或者架構會整體上提高性能,但也可能會有異常狀況,即新方案比不過老方案的地方。這時須要格外注意,由於這是你的weaknesses,你須要用使人信服的說法向讀者展現這些異常狀況存在的可能性較低,或者能夠經過某種簡單方式避免。

若是寫到這裏你還有充足頁面可用,你能夠試圖寫一個discussion章節來討論你的方案的缺點,以及將來有可能的改進狀況。不要怕展現缺點,你越誠懇審稿人對你印象越好。若是你是故意遺漏新方法的一個很顯然的缺點,這會給審稿人很是很差的印象。你也能夠提一些你的方案的其餘應用等等。

最後就是結論啦,用一兩個段落歸納一下解決的問題,解決思路以及貢獻就能夠了,比較好寫。

若是你須要寫一些附錄,好比說文章裏有幾個定理沒有給出證實,那能夠在後面的Appendix章節中加入。一般Appendix審稿人不太會讀。

我還有一些小建議,但願能對你有所幫助:

  1. 找到會議程序委員會(Program Committee,也就是審稿人)的頁面,而後看看哪些審稿人作得和你作的相關。若是有的話你應該在Related Work中引用他們的做品,由於你們都但願本身的論文被別人引用。不要怕有禮貌得指出他們的論文缺點,若是你說得對,審稿人看到會很高興的。

  2. 論文提交前用你能找到的任何有效的書寫檢查軟件檢查一下拼寫錯誤或者簡單的語法錯誤,我知道有些審稿人會對這種小問題過敏,若是一篇論文中此類錯誤過多可能會致使直接悲劇。有條件的話,找一個英語爲母語的人幫你最後把把關。這裏我推薦你若是可能的話找一個美國教授合做寫論文,能夠節省不少時間。

  3. 若是你以前沒中過2-tier或者3-tier的期刊或者會議,那麼能夠先從這些着手,慢慢鍛鍊。

祝你好運!

利益相關:計算機博士剛畢業,期間3篇CCS一做,1篇PLDI一做。

相關文章
相關標籤/搜索