分享 [干货]《How to Read an Engineering Research Paper》笔记

whitecrow · 2014年05月18日 · 最后由 congee 回复于 2014年05月25日 · 5445 次阅读

我的博客原文:http://liusihao.com/post/85169957748/how-to-read-an-engineering-research-paper

《How to Read an Engineering Research Paper》是一篇非常棒的技术论文指南阅读指南,极大提高了我阅读技术论文的效率,作者是 UCSD 的一位教师,主攻 complex software systems。

《How to Read an Engineering Research Paper》原文地址

1,为什么阅读 research paper 是困难的? 因为 paper 总是假定你已经了解了那个领域,而且 paper 较长,而你的时间很有限。为了解决这个问题,需要特别的阅读技巧。

2,高效的阅读方式有什么效果?

  1. 你知道你应该在 paper 中得到什么。
  2. 并且知道如何在 paper 中迅速定位你需要得到的信息。

3,首先你应该了解 paper 的格式

  1. introduction 部分用于描述工作的动机,解决方案的简介。
  2. body 部分描述解决方案的细节,并且用实验和术语来做细致的评价。
  3. 最后,paper 有总结和回顾,包括主要贡献的讨论

4,在阅读 paper 时你应该回答这些问题:

  1. 它写这篇 paper 是为了解决什么问题?
    回答这个问题要分两点:
    第一点是人本问题:对这个世界有何被预期的助益?比如能够提高生活的质量,节约时间啊,增强安全性之类。
    第二点是技术问题:为什么这些 paper 中所谈到的问题没有一个明显的解决方案?它暗示了以前的解决方案是不恰当的。什么是以前的解决方案?还有它们为什么不恰当?
    最后,你能够将这个问题的主题解决动机被萃取为一个“research question。”,通常情况下,上述元素(elements)并没有在 paper 中被明确直接地表述出来。

  2. 它推荐了什么样的解决方案?
    也可称为假设或 idea,它应该能够回答为什么 paper 中的解决方案能够工作?而且比以前的方案更好?它也会讨论如何设计和实现这个解决方案。

  3. 它在这个解决方案上做出了哪些评估?
    一个单独 idea 并不适合发表在公开的 paper 当中,它的论证、实现和实验对它的 idea 有什么价值、有什么预期的助益或问题?

  4. 对于已确定的问题、idea 和评估,你有什么分析?这是一个好点子吗?在工作中它有什么缺陷?最有趣的点是什么?最具争议的点是什么?

  5. paper 有什么贡献?
    除了常规贡献外,还包括这些贡献:idea,软件、实验技术。

  6. 这项研究未来的方向是什么? 不仅是作者定义的方向,你自己在读 paper 时有什么点子?这可能关乎当前工作的缺陷和批评。

  7. 你还遗留哪些问题?
    哪些问题你想公开讨论?哪些困惑或难点难以理解?通过讨论这些问题,你能够更深入你的工作。

  8. 你在这篇 paper 中可以带走哪些信息?
    总结论文的主要含义,这能够快速地刷新和重构你的记忆,并让你试图鉴别工作的本质。

在练习中,直到你能够全部回答这些问题才算将一篇论文读完。你可以用这个清单来检查你是否读完了 paper。

阅读一本书和读 paper 不太一样,如果你通过回答上面这些问题来读书,对于书里每一章的细节并不公平。

建议做笔记。除了填写上面这个清单,我也提倡直接在 paper 加上注释的方式来阅读。这是我建议的阅读和标注过程:

  1. 高亮重要的 comments,或打下划线。
  2. 标记 motivation/problem, idea/solution, their evaluation, and contributions 的段落。
  3. 在 paper 开头,写下可获取的信息。
  4. 在 paper 开头或结尾,写下关键性问题。而其它不那么关键的问题就写在 paper 周围。
  5. 试图回答这些问题,无论通过任何途径。

即使当你完成了上述过程,你很可能并没有对 paper 进行批判性思考。这时候你需要进行第二次阅读了。为了结构化你的阅读和笔记活动,你可以使用这个清单

没想到能在 ruby-china 看到这个 post,po 主现在在 UCSD 读 cse master,两个学期前上过 bill 的 cse218 Advanced topic in software engineering, 这个学期在上 bill 的 cse210 Principles of Software Engineering。Bill 自己开玩笑说,这个文章的 citation 估计比他的论文都多。

研究生的软件工程课其实挺没意思的,每周三四篇论文,都要填楼主 share 的 rubric,然后上课都是大家围成一圈讨论 paper,外面一圈记录讨论的内容,并给出反馈,然后交替进行。

这周 bill 出差,下周等他回来估计我也可以跟他讲 ruby-china 上有人把你的文章分享了过来~

#1 楼 @dotcomXY 我一直很好奇学术圈对于 complex software systems 的研究。哈哈,如果方便的话还请帮忙问问 bill:不知道有什么可以借鉴到工业界当中的地方?如果读相关论文的话,从哪些论文开始读作为入门比较好?非常感谢 :D

#2 楼 @whitecrow Bill 在 complex software system 上有很多比较大的贡献,code refactoring 第一次出现在 literature 里,应该是 Bill 的 phd 毕业论文,1991 年的时候。http://en.wikipedia.org/wiki/Code_refactoring。论文的话, http://cseweb.ucsd.edu/users/wgg/CSE210/readings.html, http://cseweb.ucsd.edu/users/wgg/CSE218/readings.html 都是我们的 required reading, 里面精选了很多现在成为软件工程 foundation 的 paper,比如 Rails 里强调的 Single Responsibility Protocol, DRY, class 继承和 composition 的基础 subtyping, subclassing,design pattern 的最早的四人帮写的 paper,open close principle, 第一个介绍 software architecture 的 paper,还有些软件工程 methodology 最早的 Literature,spiral model, waterfall,这些都是 complex software system 应用到工业界上的例子,如果想读一些相关的 literature,上面的两个链接里的 paper 应该足够了

#3 楼 @dotcomXY 非常感谢,这些论文 list 对我的帮助真的很大 😄

这篇指导来得太及时了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号