是否应当鼓励计算机专业的本科生积极参与科研?

按照官方说法,本科阶段的目的在于打好基础,全面了解掌握各领域的基础知识并找到自己的兴趣所在。参与科研可以加深对某一领域的了解,但我们也看到现有的评价体系让很多人为了获得某些好处而热衷于发表可能并没有太大价值的论文。这是否是本末倒置,让很多学生并没有真正学好必要的基础知识?以各位的了解,我们的对本科生发表论文的评价机制是否合理?
关注者
1,190
被浏览
65,188

10 个回答

谢邀。每天一篇长文还真是挺花时间的。


先介绍一下本人,我是清华大学计算机系本科,毕业后现在在卡内基梅隆大学(CMU)念博士,干很多乱七八糟的比如理论啊算法啊并行计算啊图形学啊以及蹭 @Yong He大神一起work过一些系统的project。


题主的问题问的很严谨,一看就是高端人士。所以把问题拆开来看,一共有如下几个子问题:1)本科生是否应该科研?2)本科生如何在课业和科研中分配时间?3)本科生应该在科研中承担怎样的角色?4)我们应该如何评价本科生科研?


直接给予回答太困难,我们先做一些基础铺垫。首先,当下很多人希望出国,出国又不花钱的好办法自然是念PhD。北美博士真的那么好申请吗?答案中已经说到,手上没有好paper是很难申请到好学校的。于是国内现在有灌水成风的气氛,不管做的事情价值多少,一定要发表,然后凑数。我个人是很反对的。


但是既然目的是出国(美国)申请,我们就需要首先看看美国本科教育是如何的。我在另一篇文章 国内名校的 CS 本科生实力超越欧美名校吗? 中比较详细分析了中美本科教育,当然了,主要是说差距在哪儿。由于美国对于天才学生的的初等教育比天朝好很多,因此很多学生到了大学只需要2-3年,甚至更短的时间就能完成大学的学业。因此他们就有更多的时间从事本科生科研。由于多种多样的原因,美国的本科生(美国人)在科研中可以游刃有余,因为有更好的老师,更宽松的环境,不像我们这么恶性的竞争,因此他们可以更加随心所欲。


另外,我相信所有出国的同学在申请的时候都对推荐信制度有着极大的质疑,但是这恰恰是(至少对于美国人)非常好的。因为科研是否有结果本身是一个非常随机的事情(知道一定能成功的就不叫科研了,那些最多算是实验),但是高水平的老师可以很容易洞察出一个学生是否有研究的天份和本能,因此通过推荐信来录取无疑是最好的选择。此外学生则没有发论文的压力,可以更加灵活的参与学校内各个实验室的工作,确定自身真正的研究兴趣所在。但是由于众所周知的原因,前面的每一条对于中国学生都不成立,因此可以说我们中国的本科生,无论你在清华还是普通一本,在与美国人的竞争中都处于绝对的劣势地位,而且这些劣势很难单单以个人的勤奋而弥补。于是我们只能通过变本加厉甚至丧心病狂的publication list来填充我们的申请材料,以期达到类似的竞争力。


但是这是否真的是好的呢?显然不是。首先,论文是结果但是绝对不是目的,以发论文为目标明显是本末倒置的。同时干这些事情需要大量的时间,这就挤兑了大学期间正常的学习时间。就以我身边的一些清华学生为例,有些自然是大神,天赋异禀,无师自通;但是也有不少人也通过各种投机取巧的方法罗织了很多的论文,甚至不惜以牺牲课业为代价,最后也去了四大(MIT,Stanford,CMU,Berkeley),然而功力不足,很多常识性的东西都不知道,这对于自身的发展肯定是极为不利的。


说完了背景,那再谈谈我对于题主的几个子问题的看法。以下各个论点对于出国和在国内保研的同学都是成立的。


首先,本科生是否应该科研?答案当然是!只要你还有继续念PhD的打算,就应该首先尝试一下科研的过程。姑且不说有多少PhD最终成为了科学家,PhD阶段就有很多年,你会在这么长的时间内处于两耳不闻窗外事的状态专心学术,这是怎么一直状态?你是否有思想准备?是否有能力handle?你是否能忍受的住寂寞?你是不是愿意献身科学事业?这些问题只有你在科研的过程中才能体会。如果在毫不知情的情况下就贸然选择PhD,无论对于自己还是你的老板,或者给你提供funding的政府或者公司都肯定是不负责任的。


其次,本科生如何在课业和科研中分配时间?毕竟课业才是本科生的主业,我认为本科生科研应该是在保证课业情况下进行的。众所周知中国本科计算机专业的课业压力并不是很大,即便清华也是如此(和美国相比),因此还是有充足的时间的。同时,本科是对于计算机科学打基础的最好的阶段,很多课程,比如很多数学课,编译器,操作系统或者其他的系统课程,只要错过了,以后很难会抽出完整的时间重新学习。如果这些基础都不知道的话,是很容易闹笑话的。当然了,还有一种可能性,就是国内的一些老师上课实在是太渣,学了感觉和没学也差不多,这种情况自己酌情考虑。


接下来讨论第三个问题:本科生应该在科研中承担怎样的角色?我个人认为,本科生不应该在科研中担任主角,而应该担任配角。在大多数核心的CS研究领域,比如理论,PL,compiler或者system,对于一个领域全面的了解没有个把年头是很难的。在都不知道这些领域的核心问题和详细了解所有其它人的研究进度的情况下,就自行发掘出伟大的想法,这基本是异想天开。即便对于应用领域比如计算机视觉,数据挖掘,或者计算生物,自然语言之类的,上手速度比较快(这也是几乎仅有的本科生能一作的方向),我认为本科生也应该是更多的去参与一个完整的project,体会一个领域的研究思路,研究方法以及对于个体的能力要求,而不是过于冒进的试图独立完成一些研究价值并不大的工作。


因此,有的人会问,那我完成了一个project后是否就应该独立研究了呢?我的建议还是不是,而是去体会更多的研究领域。科学研究的学习是一个漫长的系统性的过程,不是三天两天就能速成的,否则为啥博士要念这么多年?你的科研水平很难在短期就达到极高的水平,因此本科的时候还是应该以学习为主,找到自己最喜爱的领域。至少在美国,很多人都尝试过超过一个完全不同的方向,进而对于自己的各项能力有更加准确的评估。


最后是我们应该如何评价本科生科研?我希望大家能够以一种更加平和的心态来看待,而不是我们中国传统的大跃进式的眼光。本科生参与科研,主要是一种经历,和自我学习的过程。至于结果,完全没那么重要,真正科学界也不在意。近来很多报道依旧以一贯的我天朝习惯性的宣传口吻来讲述本科生科研的事情,比如“吴佳俊超老师”,交大ACM班罗列每年同学一作发表论文的篇数之类的。我当然不否认这些人也都是大牛(或者我们中国的老师水平实在是……不怎么行……),但是这种单一的罗列论文数量的衡量标准,绝对是弊大于利,可以类比中国体育的奥运金牌战略,亦或说我们国家的挑选100个有希望的科学家冲击诺贝尔奖这种滑稽的行为。天朝许多无良(or无知)媒体这种一刀切的指挥棒式宣传,也绝对不是很好的对于低年级学生的导向。人家吴佳俊有那么多优点,干嘛光盯着这个?


最后再说几个现实的问题。首先,我建议大家多尝试不同的研究领域(不同到比如theory/system/AI这个级别的分类),但是我如何找到合适的实验室和项目呢?这个问题确实在中国很严重,因此希望大家能尽早调研,而结果无非就是本校(或者北京的同学可以去清华)/MSRA(好像除了theory其它还是蛮齐全的)/国外学校三种。至于具体操作就不展开了,那又可以写现在这么长了。明显这三者的水平是有明显差别的,MSRA的大多数组比国内的大多数老师还是要牛的多,但是和美国顶尖大学的差距也是十分明显的。不过MSRA毕竟招人很多,作为中间的一个过渡地带,也是为我大天朝CS本科生的培养做出了杰出的贡献的。如何选择如何规划必须要早作打算,比如来美国要把套磁啊签证等时间都计算在内。我在清华旁听本科生出国经验介绍会(是学弟们讲啦,我都好老了,也从来没人请我讲)的时候,有一位就说到我本科阶段从事了情感研究,多媒体分析和计算机视觉,发现计算机视觉真是实在的计算机科学,我的真爱啊!我听得真是内牛满面……如果这就是清华学生能接触到的最高水平的锻炼的话,请大家酌情考虑MSRA实习/国外名校(如贵CMU)master的可行性。


另外一个显然的问题就是,既然我们和美国人相比劣势这么明显(人家高中就把大学的课学的七七八八了),怎么补救呢?也无外乎两种,一种是自身天资异禀,一天干人家三天的事情的大神;另外一种像我们这种正常人,可以比如在MSRA请求一两年的工作机会(大五),深入工作以弥补时间、数量上的不足;或者在美国申请硕士,在比国内质量高得多的整体环境下学习科研,以期更好的结果。相信我,这一两年时间对于你绝对是有益无害:首先,你的这两年的进步是实打实的,可以缩短你在博士期间学习过程;其次,你对于你的选择更加理性,不会再患得患失,少走弯路。



好了就说这么多,希望能对大家有所帮助。


好文合集:

申请美国 Top20 大学计算机 (Computer Science) 专业需要做怎样准备? - Yong He 的回答(如何申请PhD。)

申请美国 Top20 大学计算机 (Computer Science) 专业需要做怎样准备? - Yihan Sun 的回答 (如何申请master。)

看了 @Yan Gu学弟的说法,都不好意思答题了。

利益相关:2006年清华大学计算机系本科,2010年清华大学计算机系硕士,2013年清华大学经济管理学院博士在读

我就拿一篇论文来说一下,为何我鼓励计算机系的本科生去接触一点科研

论文(目前这还是一篇工作论文,但以我浅显的对学术水平的评价,它一定会发表的)是:
Baker S R, Bloom N, Davis S J. Measuring economic policy uncertainty[J]. Chicago Booth research paper, 2013 (13-02).

这是一篇经济学论文,为了紧扣主题,我就不评述其经济学意义了。单单介绍一下它衡量政策不确定性的方法。这个方法,按我的标准,放到我们java课程大作业都有点显简单了,放到小作业差不多合适。就是,作者判断了10份美国的主流报纸所有新闻中同时包含表义”Economic“、“Policy”、“Uncertainty”的词汇(大约判断了共10个词)的新闻百分比,而且匹配方法极其简单,就是严格匹配。将这个百分比称之为Policy Uncertainty Index。哪怕是高中学过一点编程知识的同学,都可以实现这个Policy Uncertainty Index。而截止我写这篇文章时,上述论文已经被引用了585次(按谷歌的统计)。我在读了经济管理以后的一个感触是,哪怕你在计算机系学渣如我,到了一个不太精通编程的人群中,也可以做很多有意义的事情。所以,不要怕自己学习成绩不好或担心自己的编程水平(实际上,学习成绩不好和编程水平一般是我本科时候不敢去接触的科研的主要原因),计算机是一门颇具应用性的学科,如果跟其他学科融合,不用很强的编程能力,你也可以做很多有意义的科研。我倒是建议计算机系的本科生能走出计算机系,去其他院系找老师聊一聊,说不定就有影响世界的想法可以实现呢

这个回答可能应该已经不是题主的本意了,我觉得题主可能想寻求的帮助是“计算机系的本科生要不要提前接触计算机方向的科研”。有这种想法的同学往往还是成绩或水平在全年级过硬的。我希望我的回答可以鼓励到那些在计算机系学习成绩或编程水平一般的同学