原文地址:matt.might.net/articles/wh…html
“什么是每个计算机专业的学生应该知道的知识?”,教职员工们正在参与这场讨论,我汇总了个人想法做为这个问题的答案。git
我试着把这个问题做为下面四个问题的结合来回答:程序员
得到一份好的工做
?维持终身就业
?进入研究生院
?对社会有利
?我下面的想法包含与现代计算机相关的通常原则
和特别推荐
。 计算机专业的学生,请自由使用这篇文章做为自学指南。github
若是有任何添加和删除的建议,请发电子邮件或推特给我。
邮箱:matt-blog@might.net 推特:http://www.twitter.com/mattmightweb
更新:谢谢您的建议和提醒,当我收到后,我会将其整理进文档,以保持积极更新。算法
计算机科学项目从工程和数学中脱离而出,采起了一种基于简历的方法来招聘毕业生。shell
一份简历没法说明程序员的能力。数据库
每个计算机专业的学生应该创建一个做品集。编程
做品集应该和我的博客同样简单,上面有每个项目或成就的文章。一个更好些的做品集应该包含每一个项目的文章以及可公开浏览的代码(托管在github或者Google code上)。vim
应该连接并记录对开源软件的贡献。
代码做品集可以让雇主直接判断你的能力。
GPAs(平均分)和简历却作不到。
教授们应该设计课程项目来丰富做品集,学生在每个课程完结时,应该花时间去更新做品集。
做品集例子:
计算机科学中的孤狼是一种濒临灭绝的物种。
现代计算机科学家必须习惯于和非程序员有说服力地、清晰地交流。
在较小的公司,程序员是否能和管理人员交流想法,可能会关系到公司的成败。
不幸的是,经过增长一门课程没法解决这个问题。(尽管技术交流方面的扎实课程并不会有任何坏的影响)
须要更多的课程提供学生机会,去展现他们的工做,并经过口头表达来保护他们的想法。
建议学生掌握一个像PPT和(我最喜欢)Keynote同样的展现工具。(抱歉,虽然我很喜欢基于LaTeX的展现工具,但这些工具太过静态)
对于制做美观的数学文档,LaTex是最好的选择。
全部技术文档的书面做业都应该用LaTeX提交。
计算机科学不彻底等同于工程学。
可是,足够接近。
计算机科学家会发现本身和工程师一块儿工做。
计算机科学家和传统的工程师须要说一样的语言---一门来源于实时分析,线性代数,几率论和物理的语言。
计算机科学家应该经过电磁场来研究物理学。可是,要作到这一点,它们须要经过多元微积分(以及用于良好度量的微分方程)来处理。
在进行声音信号仿真时,掌握几率和线性代数(一般是线性代数)是无比重要的。在解释结果时,没有任何东西能够代替对统计学的扎实理解。
推荐阅读:
计算机科学家应该适应并实践Unix计算哲学。 Unix哲学(相对于Unix自己)强调语言抽象和组成来实现计算。
在实践中,这意味着对命令行计算,文本文件配置,无IDE软件开发的概念感到满意。
因为Unix systems的流行,今天的计算机科学家应该能流利地掌握基本的Unix,包括以下能力:
emacs
和vim
编辑文件;学生们在不了解Unix哲学的强大能力前会抵制它。所以,最好的方法是激发学生去完成在Unix上具备相对优点的有用任务。 好比:
如下下内容正在翻译,敬请期待
系统管理
编程语言 离散数学
数据结构和算法
理论
计算机体系结构
操做系统
网络系统
安全
密码学
软件测试
用户体验设计
可视化
并行
软件工程
形式化方法
图形与仿真
机器人
人工智能
机器学习
数据库