自从写了博文《你的论文,你做主—研究生毕业论文的写作过程》之后,在博客上、QQ上、邮箱里收到一些读研一研二的学弟学妹的消息,他们关心的问题包括:如何开题?如何做仿真实验?如何找到论文的创新点?以及要想实习的如何找到实习单位等等。
今天上午,我打开邮箱,发现一封本校学弟发来的邮件,里面涉及到科研和找实习相关的问题,具有一定的典型性。我就在这篇博客里面尽我所能为之答疑解惑,可以供大家参考。由于本人能力有限,回答问题可能会有周全或不正确的地方,请路过的高手批评指正,也请科研经验和工作经验丰富的朋友为他们提供一些指点。
请恕我冒昧,由于这封邮件里面没有涉及到什么隐私方面的内容,我将原文粘贴如下:
您好学长!
我在逛CSDN的时候无意间发现了你的博文,发现您写的博文很有价值,在表达自己的看法的同时开阔了别人的知识面,为此我一口气读了你大部分博文,读你的博文成为我每天晚上睡觉之前的必修课,我从中受益匪浅。
我是南邮信号研一的学生,在字里行间看到你也是南邮的研究生,心里多了些亲切感,当我读到你的博文写大论文的一些注意事项,写大论文的一些注意事项(续):我是如何找到创新点的?,这两篇博文的时候,有些疑问或者说不懂得地方想请教您一下,希望您能在工作之余帮我解答一下,谢谢!
是这样的,我想问的是在找到创新点之后的一些问题:
一、仿真怎么进行?一般用什么仿真?用matlab还是其他什么仿真工具?
二、如何得知你的结果是可行的?如何得知你的结果比之前的好?
如果和之前作者的比较的话,怎么得到作者仿真程序,我想只有得到作者的程序之后才能和自己的仿真结果进行直接的比较,我这点比较迷惑。
三、作为信号的学生,我个人还是觉着要把编程学好,像C/C++/JAVA,我想请教一下您,您是怎么学习他们的,看的什么书,等等。
四、有机会的话我也想去单位实习,我想请教一下您,去面试的时候一般要经历哪几步,考官一般问些什么知识。
以上就是我的一些疑惑,希望学长您能在百忙之中拨开我心头的迷雾,期待您的回复,我会一直关注您的博文,同时希望学长工作顺利、心想事成!
葛庆阳
2013.1.3
我的答复如下:
首先,谢谢学弟对我及本人博客的夸奖。我于2011年10月开始在CSDN上面发表博客,但我写文章的时间远比这个早。在本科的时候,我就喜欢写一点文章,并因此获过几个小奖,其中包括2007年海南省的一个征文比赛的三等奖等。在工作之后,你会发现会写文章也是一个优势,特别是对于理工科的学生来说。因此,我也建议你平时多练练手,没事的时候写点博客。
既然我们是同一个学校,那么为你解答问题就成了作为学长的我的义不容辞的责任。
《写大论文的一些注意事项》(http://blog.csdn.net/zhouzxi/article/details/6885752)和《写大论文的一些注意事项(续):我是如何找到创新点的?》(http://blog.csdn.net/zhouzxi/article/details/6891966)写于2011年10月,当时我在暑假就将大论文的初稿完成了,在找到工作之后,我又回过头来将自己的论文修改了一遍。这时,我发现自己身边的很多同学才开始写论文,有的甚至还没有动笔。于是,我便写下了这两篇文章供大家参考,以让大家少走一些弯路。很感谢你看到了这两篇文章,呵呵!
下面就你提出的问题给予回答:
一、仿真怎么进行?一般用什么仿真?用matlab还是其他什么仿真工具?
答:仿真是编写程序在电脑上进行的,就这么简单。
我不知道你是在给导师做项目还是其它。如果是有项目可做,整个项目组会有仿真环境,你可以看一下你们上一级的师兄师姐是怎么做仿真的。通俗地讲,仿真就是实现算法或网络结构。就像迪杰斯特拉算法,你知道它是求最短路径的,这只是文字描述,将文字描述变成实际的代码并运行起来就是仿真。在自己有一定的想法之后,就要编写程序来实现这些想法,这就是仿真。因此,仿真可以随时进行。
研究领域的不同,项目的不同,课题的不同,具体算法的不同,仿真工具就会有所差别。因为我不知道你的课题是哪个研究领域的,所以不好说该用哪个软件来仿真。总的说来,matlab是一个功能很强大的、通用的仿真工具,有人统计过,它可以用于20多个领域的仿真。就我个人的经验,只要是算法相关的仿真,都可以用matlab,而且其上手很快。我的毕业论文就是用它来仿真的。除此之外,我身边同学用得较多的还有NS2,用于网络仿真比较好,不过听说上手比较困难。其他工具有OPNET、OMNET++等。
有了想法之后,就会找到仿真工具,因此你大可不必首先局限死了要用某种仿真工具,最重要的还是想法,是idea。
二、如何得知你的结果是可行的?如何得知你的结果比之前的好?
答:就我个人的经验,在用程序跑起来之前,你都不知道你的想法是否可行,但这就是创新。
一般说来,研究生的论文重在改进,重在算法的应用。你要学会类比和联想,只要某种算法在其它类似的环境下可行,那么你也应该理所当然地认为在你的环境中也是可行的。这需要你多读几篇论文,学会观察、比较和思考。
要想证明自己的结果比之前的好,最直观的就是两者拿来比较。退一步来说,如果你无法实现仿真,那么也要在理论上说明你的算法比别人的好。通过一定的分析,你可以说明自己的算法在某个点上比别人好,这也是可以的。
要想得到作者的源程序比较困难,当然,这也不是不可能。CSDN上就有很多源代码可供下载。但我不建议你那么做。要想拿你的结果与原作者的相比,可以通过阅读作者的论文,看一下他是怎样实现的,你再照着一步一步地做,只要他的结果不是造假的,一般都能够实现。如果你不能和原作者的结果相比,你还可以自己提出多个方案,拿各个方案的结果来作对比也行。
对于论文的创新点,不一定非要与原作者的结果来做比较,你可以将某种算法应用在你的模型上,用仿真实验证明其可行性就行了。
三、作为信号的学生,我个人还是觉着要把编程学好,像C/C++/JAVA,我想请教一下您,您是怎么学习他们的,看的什么书,等等。
答:我是计算机应用技术专业的。但只要是信息技术领域的,都应该把编程学好,你有这种意识很不错。
我本科的专业是通信工程,因此相对计算机专业的学生来说,编程能力还有待提高。我现在的工作主要是用C/C++语言,C语言居多。编程方面的书很多,你可以到一些编程论坛里面去看一下。《C++
Primer》,想必你也听说过,建议你将这本书学透。要想提高编程能力,只有靠实践,只有靠自己不断地写代码才行。除此之外别无他法。
除了编程能力之外,你还要把数据结构和算法学好。因为单说写代码的话,大专生就可以完成。我们需要掌握更高层次的东西,学会一些思想、模型和算法。
如果你想做软件开发工程师,推荐你看一下《推荐开发人员看的11本较具影响力书籍》:http://news.cnblogs.com/n/129750/。
四、有机会的话我也想去单位实习,我想请教一下您,去面试的时候一般要经历哪几步,考官一般问些什么知识。
答:我建议你有机会,一定要出去实习,不要只在学校里面埋头做研究,除非你想读博。你可以通过我们学校的BBS来发现招聘信息,我就是通过它找到实习单位的。
去面试的时候,面试官一般会照着简历来问你的问题。找实习和正式找工作是不一样的,前者的面试比较的随意,几乎什么都问。只要你专业基础过硬,就不用怕,就要看你的临场发挥了。
我在南京爱立信实习过,当时是两个外国人用英语面试的我。之前,我还不知道要用英语来面试,但我很镇静,没有出现吞吞吐吐的情况,他们就照着简历问了我一些学习、科研相关的问题。因此,面试不用太紧张,要有自信,只要发挥正常就行了。
为了面试成功,你需要具备一定的专业知识、对该公司和该岗位的了解(这两个事先一定要准备的)以及自信心和临场发挥。平时,要多多关注相关信息。
有关面试,推荐你看我写的一篇文章《爱立信实习总结之面试心得》:http://blog.csdn.net/zhouzxi/article/details/7447978。
以上便是我个人对你提出问题的一点想法,请参考,但请不要完全照搬。你要根据你的实际情况来搞科研和找实习,不要为了搞科研而搞科研、为了实习而实习。我的很多同学虽然没有出去实习,但最后还是找到了好工作的。
最后,再次感谢你对我博客的关注,你的来信就像冬天里的一把火,唤起了我心中的热情。我会把这个博客专栏一直写下去,希望大家多多交流、共同提高!