作为计算机专业的本科生应该怎样学习并提升自己

最近刚好辅导了两个大二学生做了为期一学期的 project,但是到最后没有做出什么有实质性的东西。现在回想起来,部分原因是因为对他们当前的知识层次、水平理解不充分,导致我设定的目标超出了他们的能力范围。比如他们连图论都没学过,但我却希望他们能come up出一个图算法。当然,部分原因也是因为他们给我的简历里有点水分,导致我的评价不准。因此首先要提出的一点就是,认识清楚自己现在的现状,循序渐进,不要好高骛远。同样地,由于不清楚楼主的现状,下面列的一些建议,只能作为一些很宽泛的目标,基本上是我认为CS专业合格的学生/毕业生的一些标准。关于提升自己的几点建议:不要满足于课堂与课本上的知识,有时间可以多阅读基本不同的教材。在学习这门课时,给自己设定目标,学习完后能理解一些景点的理论,积累足够的实践,以及知道当前发展的现状。多动手实践。如果一门课的project设计得好,理论上是足够你花上大段时间去解决,并且有很多开放性的地方值得探索与思考的。尝试比较一下世界知名大学的课程设计(MIT, berkeley),看看你的 project 是否达到了相当水平。如果没有,尝试同时完成更 challenging 的题目。开始接触开源社区,多阅读源码。你可以从捣鼓 Linux 开始。github 则是一个非常优秀的社区。掌握一些必备的 tools,比如 regex, vim, grep/sed/awk, git/svn, 等等。不要忘记算法与理论知识的积累。基本的算法与数据结构要达到烂熟于心。离散数学、图论要学好。如果你有兴趣深造,不要忽略数学。线性代数、概率统计、优化等,将来会很重要。假期有机会的,可以找一个靠谱的实习。Expose 在好的环境里,能了解到当时工业界一些标准与流程,能很大地开阔眼界。如果你的学校级别类似 UIllinois,也许交换不会让你 gain 太多。但是交换本身总是一段有趣的经历,特别是交换到不同国家的学校。这里很好奇楼主是在什么学校,又是根据什么排名得到『专业世界排名大概10位波动』。根据我的了解,如果能在世界排名这么前列,感觉课程设置不会这么简单(看起来像技校),也估计没有时间让你思考这个问题……在我就读过的一些学校里,每周通宵 2-3 晚赶作业、project是家常便饭。虽然这样子也许没有时间让你思考、回顾自己的规划,但是一个好的program,读完下来,联系上自己以往学习的知识与经历,一般会有一种豁然开朗、水落石出的体验。Anyway, 在 grad level,UIllinois 的 CS/Engineering 基本上稳坐全美 top 5;本科自然也不会太差。另外,村里不像大城市,没什么事情干,所以你要么去party要么去学习,XD善于利用互联网资源,寻找自己需要的资料。这是一个伟大的时代,互联网能给你几乎任何知识。回想起自己本科时,网络资源尚没有这么发达;在课程设置不尽理想的情况下,没有很好地利用网络得到足够的培训,只拘泥于老师给的东西,现在想起来也觉得浪费了很多时间。保持你对CS的热情与兴趣。这是学习任何东西最重要的原始驱动力。


    推荐阅读