1. 程式人生 > >如何寫好一篇高質量的IEEE/ACM Transaction級別的電腦科學論文?

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

轉自《知乎》如何寫好一篇高質量的IEEE/ACM Transaction級別的電腦科學論文?
問題:
作為一個博士生,一直為寫論文頭疼,讀過很多高質量論文,覺得寫的真好,但是輪到自己寫總是力不從心。 最討厭的是活生生的把一個A級別的idea寫成C質量的論文…..

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

看過很多如何寫論文的文章或者視訊, 但都面向的是如何寫論文, 而不是如何寫Transaction級別的論文, 希望得到一些指點

回答:
作者:Terafer
連結:https://www.zhihu.com/question/22790506/answer/81787300
來源:知乎
著作權歸作者所有,轉載請聯絡作者獲得授權。

恭喜你已經有了一個A類別的idea和相應的實現以及資料,那麼接下來就是寫文章的問題了。計算機論文寫作還是有一定的規律可以遵循的。

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

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

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

一般來說Intro寫完以後會寫一章相關工作(Related Work)。從最Related的論文開始寫起,比如說以上提到的三篇。這裡需要著重講的是,Related Work不是記流水賬(e.g.,甲用了idea A,乙用了idea B,丙用了idea C),而是要比較這些論文,闡述她們各自的優缺點

Related Work寫完後,你需要寫一個Overview來總括你的問題和解決方案。我的經驗是最好想一個最最簡單的例子(Running Example),然後使用這個例子引出你要解決的問題。接著再把之前在Intro中提到的現有解決方案挨個說一遍,並且用那個案例表明三個解決方案的不足(這裡最好用實際資料)。最後把你的解決方案介紹一下,重點是與前人做的相比較。如果你用了一種新的演算法,你可以大概提一下這個演算法的思路以及實驗資料;如果是新架構,最好放一張架構圖上去,然後闡述一下新架構的優勢(以及劣勢)。在這一章介紹自己的idea的時候,你只需要概略描述即可,凡是涉及到技術細節的東西均可以引用後面的章節來節省頁面空間。

後面這一章就完全是技術細節了。如果是自己做的的話,這一章是最好寫的,因為你只需要把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一作。


個人總結:
理清寫作目的、思路,介紹相關工作,做足充分比較,客觀評價自身工作的優缺點。英語!英語!英語!

注:本文轉載自https://blog.csdn.net/u010592301/article/details/54094790

轉自《知乎》如何寫好一篇高質量的IEEE/ACM Transaction級別的電腦科學論文?
問題:
作為一個博士生,一直為寫論文頭疼,讀過很多高質量論文,覺得寫的真好,但是輪到自己寫總是力不從心。 最討厭的是活生生的把一個A級別的idea寫成C質量的論文…..