论文对于硕士,尤其博士,是必须的一种技能,也是一道难关。所谓大道无形,小道可走。下面给出一些博士期间的写作心得,希望能有所裨益。论文可以有三个境界:毕业、科研、贡献。
现在只说第一个,为了毕业。
把论文分成三个阶段:读、写、改。
一、读
即:读哪些论文(对象),读论文的目的是什么(目标),怎么读(方法)
1.读什么论文。
读论文,需要读经典的专业基础论文、survey(概述)论文,及5-10篇左右读新的高质量的专业论文。
好的论文怎么找?首先找专业领域中好的会议、期刊;其次,经常访问专业领域有名的实验室、研究员的主页,关注其发表的论文方向及内容;50-100篇,半年;就可以开始动手写论文了。
2.读论文的目的。
读论文的目的有两个主要目的:
一是了解世界上本专业领域的内容和发展情况;
二是在了解过程中,产生自己的idea,进入这个领域。
什么是idea?怎么样产生?idea一般是在读论文的过程中产生的,给出三种比较简单产生idea的方法。
(1)第一种弥补缺陷法。即去发现别人论文中的weakness(缺陷)。你在读很多个论文时候,就会逐渐发现,每一篇论文都不是完美的,解决的都是某一方面的问题。很多论文,尤其是经典论,都有很多论文跟着去提高和改善原来论文的效率、方法什么的。因此,你可以根据这个特点,去找你感兴趣的论文的weakness,你提出相应的弥补缺陷的解决方案;
(2)第二种新型方案法。就是提出与论文不同的解决方案,你觉得你在性能、方法、效益等方面有新的方法,那就产生了新的idea,不断地磨合,修正,完善你的idea,就慢慢成为一篇比较好的论文;
(3)第三种减少约束法。即减少论文中的assumption(假设),一般来说,所有的假设都是约束条件,去除约束条件就是形成新的方法的过程。
这三种方法是比较简单的、操作性比较强的方法,比较有针对性的产生idea,避免看论文中的茫然状态。值得注意的是,在产生idea过程中,不要想着憋大的idea,不要试图完全推翻或者建立自己的体系。在目前阶段,对大多数人来说,这是不可能的。好高骛远,往往会半途而废。你有一点点的贡献就好。没有一篇论文是完美的,而任何人的工作都必须在其他人工作基础上进行的。
3.怎么读论文。
(1)首先,最忌讳的是一篇论文反复读前面的几段。要读,尽量一次性读完,不管理解多少,尽量一次读完,你可以一篇论文多读几遍。不要放。很多人都是,觉得读起来难,读一读,放一放,然后再从头读。好像烧开水,没等开锅呢,就凉凉了,然后再烧。
(2)第二,读的时候带着想法读。读论文不是相面,你要看看内容是什么,和以前的有没有区别,有什么不同,有没有weakness。但是在阅读的过程中,往往就忘了这个事情。怎么办呢,就是每次看完,对这篇论文做个summary,总结一下论文的主要阐述的内容和方法,和以前的对比一下,这样,就把论文吃透了。好的论文不妨隔三差五的多读几次。
(3) 第三,看到好的句子,记下来,然后自己写论文时候改一下就可以用的。尤其是读native的论文,非常必要。论文的文风怎么样,整个文章的版式,句子的书写,词汇的使用。论文读多了,就很容易把专业词汇积累下来,所以,尤其在开始的时候,一定要把好的句子、单词记下来。好记性不如烂笔头,非常推荐大家这样去做。
二、写
写论文和读论文过程类似,包括确定论文的性质,论文的目标(发表到哪里),写论文的方法。要了解论文的组成是什么,每一部分应该怎么写,然后再进入写论文的过程。
在具体写作的时候,需要考虑下面的过程:
1.写什么性质的论文。
如会议论文、期刊论文、letter、regular paper,或者写的是综述(survey)、方法、理论等等。不同的论文的对象,载体,篇幅,侧重点是不一样的。比如,会议论文、短论文等对新的要求比较高,比较短,其他的次之,所以论文写作要集中在新的方面;而期刊论文等对新的要求之外,还要求完善、高质量,所以写作时候要系统性和创新性并重。
2.写论文的目的是什么。
第一,你想要发表的地方是什么,会议还是期刊。不同的地方有不同的要求,尤其是期刊论文。所以,在写论文之前,尽量确定要投的期刊或会议。然后,去阅读几篇最新的该期刊或者会议的论文,明确一下体例和内容大致规划。重要的是,你选择的题目和投稿对象的要求尽量切合。第二,你想要发表的时间,一定要有个发表的时间点。一方面,人都是有惰性的,你限制了时间点,就能很好的督促你,你可以多选择几个,这样你就会处于忙碌和兴奋状态,成果就会快而且好,否则非常容易消极怠工。另一方面,很多毕业生,需要在写大论文之前,需要得到论文的接收函。在时间规划上也是有要求的。如果想在时间上快一些,可以找一下相关刊物的special issue或者special section等,一般这特刊,出版的速度相对快些。一定要提前谋划,无论是会议还是期刊,一般要提前半年以上。
3.写论文的方法。
首先了解一下论文的结构。通常一篇论文包括7个大的部分,每页大概10段,每段大概4,5个句子。所以,一篇会议论文大概200-300个句子罢了。一小时写5句,一天写一页也就差不多了,一周也就写一篇论文吧,当然前提是idea什么都比较成熟后。其实,如果真的想明白了,差不多2-3天也就可以了。
4.论文的组成。
下面,针对论文给出7个大部分的一些内容组成:
(1) Abstract—— 对自己工作及其贡献的总结:a)阐述问题;b)说明自己的解决方案和结果。(150-200words)
(2)Introduction——背景,以及文章的大纲、你的贡献:a)题X是重要的;b)前人的工作A、B曾经研究过这个问题;c)A、B有一些缺陷;d)我们提出了方法D;e)D的基本特征,和A、B进行比较;f)实验证明D比A、B优越;g)文章的基本结构,大纲。(1page)
(3)Previous Work——说明自己与前人的不同:a)将历史上前人的工作分成类别;b)对每项重要的历史工作进行简短的回顾(一到几句),注意要回顾正确,抓住要点,避免歧义;c)和自己提出的工作进行比较;d)不要忽略前人的重要工作,要公正评价前人的工作,不要过于苛刻;e)强调自己的工作和前人工作的不同,最好举出各自适用例子。
(4)Our Solution——描述自己的工作,可分成多个部分:a)从读者角度阐明定义和表示法;b)提供算法的伪码,图解和相应解释;c)用设问的方式回答读者可能提出的潜在问题;d)复杂的冗长的证明和细节可以放在附录中,这里关键是把问题阐述清楚;e)特例和例外应该在脚注中给予说明。
(5) Performance Analysis——验证提出的方法和思路:a)合理地设计实验(简洁的实验和详尽的实验步骤);b)必要的比较,突出科学性;c)讨论,说明结果的意义;d)给出结论。
(6) Conclusion——总结、前景及结文:a)快速简短的总结;b)未来工作的展望;c)结束全文。
(7) References——对相关重要背景文献的全面引用:a)选择引文(众所周知的结论不必引用,其他人的工作要引用,经典的和新的论文要引用);b)与前文保持一致。
然后我们就开始写论文了。
1.写论文时候,最好一气呵成。千万不要犹豫,今天写点,明天写点的样子。那样往往写不好论文。一篇SCI论文,我想,一般最多用一周多一点的时间写完主题部分;而一般会议论文2,3天即可。当然,一些实验可能需要时间长些。无论如何,不可以拖延。可以说,每篇论文都可以发表,所以你写出的论文肯定是有成果的。
2.写论文时候,有些需要注意的语言表述的地方。首先,尽量拼写、语法正确。保证全文没有单词错误和明显的语法错误,这个非常重要。论文学术是非常严谨的,错误拼写容易让人觉得水平不高。另外,写作句子尽量简单,每个句子只包含一个意思,这个和中文论文差别很大。记住一定用简单的句子,一般情况下,即使算上从句也尽量不要超过两句话。第三,避免用口语。例如so、the same as、one hand…on theother hand等等。从native和好的论文里面,把重要的连词的应用学好。如therefore,however,moreover等等,尽量装着学术化一些。第四,尽量避免第一人称,we怎么怎么地。
3.论文的组成元素。通常,包括图形、公式、算法、证明等等。论文应该是图文并茂的。通常情况下,如果读者是同一领域的研究人员,他们看完论文的图片及图注就可以知道这篇文章大体所做的工作。因此,要标注好每一幅图片所展示的信息,但尽量简洁。图和文本要保持一致,并且互为补充,所有图在论文中都是必须提及的。不同的图有不同的要求:
(1)对于说明性、功能性和流程性等的图,我建议一般先自己在纸上手绘大框,这样方便设计、修改,等定型后,在用专业工具绘画,这样一般效果很好而且节省时间。
(2)另外,当采用柱状图、折线图等,优先用黑白色,然后是灰色或阴影的,最后才是彩色的。据说有大概10%的男性是红/绿色盲,因此要避免使用红/绿色,而且打印时候大多时候是黑白的,所以,在采用颜色标识的同时,尽量加一些标识性的线条标志,要有区别于其他区域的大小和形状。对于这些性能分析、对比等,在解释时候一定要尽量说明图的形成原因,并包括数据。如与谁相比,能效提高百分之多少,什么原因造成的等等。
(3) 第三,作图工具一定要专业,尽量避免用excel等做,通常做的不是很好看。图的质量一般是300dpi以上,所以如果可能,尽量用专业工具作图,然后粘贴。在论文录取后,尤其期刊论文,一般需要提交高质量的图片,尽量是jpg和tif格式的。
(4)最后,论文排版要尽量和论文要求一致,直接使用投稿对象的模板。如果latex等熟悉的朋友,尽量用latex,排版的质量非常棒的。
除了图,论文里面还应该有公式、算法、证明、定义等。一定尽量用专业的东西编写,这些地方尽量不要用图片。整篇论文要尽量用多种元素说明,避免整篇大片大片的文字描述。
最后,好的论文要有好的明确的题目,我一般是先写一个然后整篇论文写好后,再修改、定稿。
三、改
好的论文不是写出来的,是改出来的。完成一篇论文后,先通读一下,看看有没有什么要更改的。一般来说,更改有本人更改和他人更改两种。写完之后通读一次,先不要再读,放两三天再说。这样容易产生新的更好的想法,然后再仔细更改。更改是个打磨的过程,必须字斟句酌,可以参考其他好的文章,对照写。改论文绝对不是查缺补漏那么简单,要从审稿人、读者多个角度去看,想想读者能从你这个论文里面获得多少、想看的是什么。另外,一定请领域朋友帮助审查一下,以便检验论文的正确性和新鲜性,而且可以对一些术语用词进行改善。
改好之后,就是投稿。
一定要选择和自己论文非常搭的期刊或者会议投稿。如果是正常期刊的论文,一般随时都可以投稿。但是对于特刊、会议一般是有时间限制的。对有时间限制的,建议尽量提前一两天投稿。我见过很多人,都是非得到最后那天才投稿,这样如果发生意外就不好补救了。另外,有些期刊为了增加公正性,要求匿名投稿,这个一定要注意。
最后,不管论文接受还是被拒,都会有比较好的意见回来,一定要认真阅读这些意见并做相应的修改及反馈。
一些需要注意的地方
(1)论文的滚动问题。一个方向,发表一篇论文后,不是就完成大吉了。还有尽量深挖你这个课题。一个主题多种实现方法。一个好的idea,我觉得怎么应该发一到两篇conference和一个journal
(2)论文合作:在质量和数量上大幅提高。
(3)作者排序的问题,为以后工作做准备。
(4)项目申请问题。
(5)最低满足论文之后,是为以后铺路的问题。平实心态,积极争取。
以上是自己在做研究时候的一点点小心得,为写而写,寸光短视,指望有所裨益。
软件工程学习心得
在本学期的软件工程课程的学习中,我们学习了十一章的内容。第一章软件与软件工程的概念,这一章主要讲解的是一些概念性和基础性的内容,例如软件的概念、特性,软件危机的主要表现,软件工程的概念以及软件生存期、典型生存期模型等等。第二章软件工程方法与工具,这一章主要对软件工程方法进行介绍,包括三种方法:传统方法、面向对象方法、形式化方法。还引出了工具UML。第三章软件需求获取与结构化分析方法,本章详细介绍了需求获取与需求分析阶段的任务以及结构化分析方法,画分层的数据流图、E-R图以及状态图式本节的重点。第四章结构化分析方法,这一章重点讲解了使用变换型映射方法和事务型映射方法生成初始的模块结构以及模块结构的改进。第五章编码,这一章重点讲解了编码的风格及规范,还告诉我们编码规范说带来的好处,并告诫我们将来一点要形成好的编码风格。第六章软件测试方法,本章讲解了软件测试相关的概念及重要性,软件测试与开发各个阶段的关系;还介绍了白盒测试技术以及黑河测试技术。第七章统一建模语言UML概述,本章详细介绍了UML的基本模式、事物、关系及建模时用到的各种图进行了介绍。第八章面向对象分析,这一章主要讲解了面向对象分析的3种模型,包括功能模型、静态模型和动态模型。第九章软件体系结构与设计模式,本章对软件体系结构的基本概念、典型风格等进行了讲解。第十章面向对象设计,本章的重点是对面向对象分析时建立的对象模型进行调整和细化。第十一章软件维护,本章主要介绍软件维护的任务、软件维护活动以及软件维护方法进行了介绍。
要学习软件工程,学会如何系统的思考,以及养成良好的编码习惯,想学好软件工程,就必须知道软件工程的目标、过程和原则:
软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。
软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。
我们学习了详细设计的方法,其原则是过程描述是否易于理解、复审和维护,进而过程描述能够自然地转换成代码,并保证详细设计与代码完全一致。包括程序流程图、N-S图、PAD图、HIPO图
程序流程图:程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。在流程图中只能使用下述的五种基本控制结构:顺序型;选择型;while型循环;until型循环;多情况型选择。
N-S图:一种符合结构化程序设计原则的图形描述工具,称为盒图,又称为N-S图。在N-S图中,为了表示五种基本控制结构,规定了五种图形构件。顺序型;选择型;WHILE重复型;UNTIL重复型;多分支选择型。
PAD图:它是用结构化程序设计思想表现程序逻辑结构的图形工具。PAD也设置了五种基本控制结构的图示,并允许递归使用。
HIPO图:HIPO图是由一组IPO图加一张HC图组成。它是美国IBM公司在软件设计中使用的主要表达工具。
HC图既是层次图,用于表示软件的分层结构。HC图中的每一个模块,均可用一张IPO图来描述。IPO 图由输入、处理和输出三个框组成,需要时还可以增加一个数据文件框,这种图形的优点,是能够直观地显示输入—处理—输出三者之间的联系。
还有测试方法:按照测试过程是否在实际应用环境中来分,有静态分析与动态测试。测试方法有分析方法(包括静态分析法与白盒法)与非分析方法(称黑盒法)。
静态分析技术:不执行被测软件,可对需求分析说明书、软件设计说明书、源程序做结构检查、流程分析、符号执行来找出软件错误。
动态测试技术:当把程序作为一个函数,输入的全体称为函数的定义域,输出的全体称为函数的值域,函数则描述了输入的定义域与输出值域的关系。
还学习了其他很多工具、语言、方法等,虽然不是都学得很透彻,但我相信在今后的学习中一定会慢慢的完善的。
软件工程对于初学者来说,知识基础较薄弱,对一些应用操作、概念、工具方法等理解起来较为困难,要能从整体概念上较好地理解和把握、学好软件工程,不是仅仅把几本专业书籍细致地看几遍,然后上机练习几次就可以成功,学习过程中要注意多看多练要注意结合实际,更要多思考,面对错误不要一范就问,要尝试自己去解决。但是还要注意什么都学,肯定是什么都学不透的,要集中精力打攻坚战,学习软件工程首先要明白自己的学习目标究竟是什么,根据自己的实际工作出发,有针对性的在相应的学习方向上进行提高,制定出详细的学习规划。还要注意与其他科目的相辅相成,就像我们在学习面向对象分析的时候要结合大一学习的面向对象及其方法学这一专业科目进行研究拓展;在学习语言时,要看看与C语言的联系,多思多想,把从各个科目学到的知识通汇贯通。
在软件工程的学习中,我了解到了软件并非是一些代码这么简单,在开发软件的过程中,编写代码的工作量其实只占不到所有工程量的30%,而后期的管理和维护更是占了60%到80%之多。一个完整的项目规划须包括,软件的定义,可行性分析报告,项目开发计划,软件需求说明书,概要设计说明书,详细设计说明书,用户操作手册,测试计划,测试分析报告,开发进度报告,项目开发总结报告,软件维护手册,软件问题报告,软件修改报告,等多个文档,每个文档都要上级验收审查,而文档数量众多,要做好这点真的不是很容易,而恰恰写好文档正能保证完成软件工程其中一个目的的关键,既研究如何用最小的开销做出生存期较长的软件,再加上各个阶段都要进行周密的策划、详细的分工部署和人员安排,且各阶段要据具体情况不断的反复才能达成,所以代码只是开发软件这个浩大的工程的一个小小的过程。
而编码的学习中,我更了解到形成自己独特的规范的编码风格是非常重要的事。因为这影响到了软件后期繁重的维护,大家都要阅读你的程序,如果你写的程序毫无规范可言,那么别人怎么能读懂你的程序?读不懂程序,维护又从何谈起呢?所以,我们在今后的学习中,一定要注意这方面的培养,在写程序的过程中,要逐步的在规范的基础上形成属于自己的风格,即方便自己的修改,也方便日后他人的阅读。
在学习中,我们还要注意比较三种方法的优缺点,例如:传统方法虽然使软件摆脱了混乱和无序,但其在适应需求变化的方面不够灵活,而且传统方法要么面向行为,要么面向数据,缺乏两者的有机结合。而面向对象方法的程序设计和问题求解更符合人们日常自然的思维习惯,适合大型、复杂及交互性比较强的系统。形式化方法则是一中基于形式化数学变换的软件开发方法,它可将系统的规格说明转换为可执行的程序。
在今后的学习中要注意多读书、多思考、多练习、多讨论,不断熟悉书本的基础,并以此为基础将其扩散开来,应用于今后的实践。不断锻炼自己,向一名合格的程序设计师迈进。
相关於这个的!~
计算机专业这一门科深深的吸引着我们这些同学们,上计算机系已经有近一年了。自己也做了一些思考,认为计算机专业需要相当多的实践,而在实践中不但掌握计算机技术(包括程序设计),还要掌握许多其他专业并不“深究”的东西,例如,算法,体系结构,信息管理等等。当初听到要学专业的东西,心想咱们这到底念的是什么系?
对于我这个初学者的知识基础较薄弱,对一些应用操作理解起来较为困难,要能从整体概念上较好地理解和把握应用软件,不是仅仅靠几本培训的书籍还买了几本有关专业的书籍,细致地看几遍,然后上机练习几次就可以成功。因此学习过程中要注意多看多练。要注意结合实际,充分利用互联网学习。说极端一点,互联网上应有尽有,只是我们没有找到好的路径,互联网是人类知识智慧的汪洋大海,比如通过电大的远程学来进行学习,还有到一些有关专业论坛转转进行学习,网上学习会有很大收获。除了学科知识,上网技术以及信息的检索、加工、发布的能力也会有提高,人与人之间的理解、交流上都会有丰富的体验。网上学习容易出现的问题是好奇,上网漫无目的不停浏览。因此,在进行网上学习前,一定制定好学习计划和目标,确保高效的上网学习。
计算机专业对于求学者的我切记贪多嚼不烂。因为初学者最易犯“大而全”和“速成”的错误,须知“罗马非一日之功”所能建成。什么都学,肯定什么都学不透,要集中精力打攻坚战。我认为学习计算机首先要明白自己的学习目标究竟是什么,根据自己的实际工作出发,是做系统维护、软件开发、图像加工、公文处理、网页制作还是数据库管理,然后再有针对性的在相应的学习方向上进行提高。要制定出详细的学习规划,包括需要购买什么书籍,家里如果没有电脑可供练习,是否需要购买一台电脑等问题……如果没有学习规划,不投资学习机器,没有实践场所,没有学习资料,光想凭“言传口授”就想速成做个“全才”,可能吗?
学习方法因人而异,我的学习方法以下几个原则:
1.“循序渐进”——要求应注重基础,切忌好高骛远,急于求成。循序渐进的原则体现为:一要打好基础。二要由易到难。三要量力而行。
2.“精读精思”—— 要广泛阅读和精读,善于提出问题和解决问题。
3.“自求自得”——就是要充分发挥学习的主动性和积极性,自求自得的原则要求不要为读书而读书,应当把所学的知识加以消化吸收,变成自己的东西。
4.“知行统一”——就是要根据认识与实践的辩证关系,把学习和实践结合起来,切忌学而不用。因此,知行统一要注重实践:一是要善于在实践中学习,边实践、边学习、边积累。二是躬行实践,即把学习得来的知识,用在实际工作中,解决实际问题。