原文地址:http://matt.might.net/articles/what-cs-majors-should-know/ (英文版)

鉴于该领域发展的范围只广阔,识别计算机科学科目中的内容就变的极具挑战性。

我所在的学院的老师们正在进行这样一场辩论,所以我把我的想法合并起来给这个问题一个答案:“每个主修计算机科学的学生都应该具备哪些知识?”。

我将结合以下四个大家关心的方面给出这个问题的答案:

  • 每个学生应该知道怎样才能找到一个好的工作?
  • 每个学生应该知道怎样才能保持终身就业?
  • 每个学生应该知道怎样才能进入研究生学院?
  • 每个学生应该知道怎样才能产生社会效益?

我的想法在下面考虑了现代计算机领域的一般因素和具体意见。

作品和简历

从工程和数学角度出发,计算机科学采用基于此个人简历的方式雇佣毕业生。

简历不能说明自己具备程序员的能力
(原文:A resume says nothing of a programmer’s ability.)

任何一个该专业的学生都应该构建一个作品。可以是一个简单的个人博客,记录发布一些你个人成就的文章。或者更好的是将自己的每个项目页面实现在公网可浏览的代码(服务器或许可以使用github或google code托管)。代码作品可以让雇主直接判断你的能力,GAPs(成绩单)和简历都不能做到。

教授应该特意布置一些项目作品的作业,以让学生花时间在每门课程结束时有一个作品去结束他们的课程。

像这样:

沟通技巧

独狼在计算机科学专业是濒危灭绝的物种,现代计算机科学家必须将他们的想法有说服力的、清晰准确的传达给非程序员。

在小公司里,程序员是否能将自己的创意传达给管理层,这会对公司的成败产生一定的影响。不幸的是,这不是固定的东西,也不是增加一门单独的课程可以解决的

具体建议

我推荐学生们掌握像PPT或者keynote(我的最爱)这样的演示工具(对不起,尽管我爱他们,但基于LaTeX的演示工具太过于静态)。为了写出漂亮的数学文档,LaTeX遇到了不公正,因为技术课程中的所有文档都被要求用LaTeX提交。

推荐阅读

  • Writing for Computer Science by Zobel.
  • Even a Geek Can Speak by Asher.
  • The LaTeX Companion.
  • The TeXbook by Knuth. (Warning: Experts only.)
  • Notes on Mathematical Writing.
  • Simon Peyton-Jones’s advice on How to Give a Good Research Talk.
  • My advice on how to send and reply to email.

工程学核心

计算及科学不是工程学,但是,他们很相似。计算机科学家发现他们自己像工程师一样,计算机科学家发现自己和传统工程师一样,需要学习一门语言,一门根植于实际分析的语言,学习代数、概率学和物理。

计算机科学家应该通过电磁学去理解物理学,但是对于此他们需要先通过学习多元微积分。(微分方程是一个很好的办法)。

未完待续