每周我们都会收到大量简历,相当一部分来自计算机科学系的毕业生。
我检查了他们的学习内容,尽管听起来迫有趣,却似乎和就业市场无关: 神经网络, 计算机视觉,人工智能,机器人技术,编译工程,机器学习,量子计算,贝叶斯网络,嵌入式系统 ... 这些毕业生中有多少会经常使用这类知识? 这些课程可不是骗人的,而是来自英国前5位的计算机科学系(根据一家有名的国内报纸的排名)。
这种不协调(教育和技能)部分是被一个观点误导了: "计算机科学”毕业生不必去搞软件, 所以应该多教点科学而非职业上的方法。可是,我所认识的计算机科学毕业生都没去搞科学,而是去搞软件编程了。有意思的是,我随机抽取了大约10-15所大学的课程,只有2所教软件工程。
还有相当奇怪的是,只有一个课程涉及XML, 还是可选部分。而在当代软件中还有不用XML的吗? 那为什么计算机科学毕业生不能说出何时用SAX何时用DOM呢 ?
那么,哪些内容应当包含在当代计算机科学/软件开发专业的课程中呢? 我粗略地写在了下面( 顺序没有考虑,只是按照意思流来的...):
- 编程基础(变量,数据类型,引用,指针,作用域,错误处理,迭代,核心算法-搜索,排序等)
- 基础数学,基础统计学
- 模式和反模式(真实世界的例子,不只是理论)
- 现实世界中的数据库(正规化和反向规格化, SQL,索引)
- 良好的代码架构基础:松耦合等
- 面向对象的设计,接口等
- 规划的重要性和工具: Spec'ing,UML等
- 架构:C/S,SOA,P2P等
- 一两个'大'语言(Java, C#,C/C++)
- 一两个'脚本语言或'敏捷'的语言( PHP,Perl, Python,Ruby)
- XML (DOM/SAX, XSLT/XPath, 等)
- 经济学,商学,成本项目,商业压力
- 版权,隐私,数据保护
- 项目管理/时间管理
- 国际化,本地化,编码, Unicode
- 语法,标点符号,简洁和明确的书写
- 界面设计,易用性,可获取性,人机交互
- 安全
- 代码阅读
- 常见协议( TCP/IP,HTTP,SMTP,FTP )
- 测试,调试,性能,重构
- 问题分析
- 代码控制,变更管理
- 典型的软件生命周期
- 元数据,信息架构等
- 地理信息系统基础
- 触摸输入
- 健康和安全(营养?)
( Dan Zambonini 作为技术总监服务于Box:一家英国Internet开发和咨询公司. 作为语义web和XML技术的倡导者,他的工作领域包括XML, XSL, RDF, SVG, P3P, OWL, XHTML, CSS, XForms和其它一大堆缩写的技术 )
本文版权所有,未经许可,请勿转载
内容合作请 联系我们









计算机科学系该教些什么?






