今天看到
Andrew Tanenbaum (minix的作者。读过CS的人应该不陌生吧)。在
SIGCSE的计算机科学教育杰出贡献奖(Outstanding Constributions of Computer Science Education)上发言的
文字材料。A.T在演说里提出十大计算机科学教育的十大准则:
- 目光长远 (Think long-term)
- 强调原则,而非事实 (Emphasize principles, not facts)
- 对重大变革有所准备(Expect paradigm shifts. 翻成范式转变也忒生硬了,不知道有没有标准翻法)
- 解释事物内在工作原理(Explain how things work inside)
- 向学生展示怎么驾驭复杂度(Show students how to master complexity)
- 计算机科学不是科学(Computer science is not science)
- 在系统角度思考(Think in terms of systems)
- 讲述理论要适度(Keep theory under control)
- 拒绝炒作(Ignore hype)
- 毋忘过去(Don't forget the past)
教学一体,这10大教育准则其实同样适用于CS学习。准则1,2,3, 9告诉我们学习时应当注重思想,而不是某个具体的实现或巧合。今天的热门技术可以转眼明日花黄。OS360的任务控制可能今天没几个人知道了,但进程管理的原理仍然值得学习。编程语言几年一换,但抽象,数据封装,算法原理仍然几十年不变。要想在技术变迁的洪流里不疲于奔命,只有原理优先,以不变应万变。准则3还提出了应对突变的对策:批判性思考,自学,和随时检验自己的假设。第三条尤其重要。套用Steven Seagal(当年我对他的合气道推崇之极

)的电影
Under Siege 2: The Dark Territory里那个邪恶工程师Travis Davis的话说:“假设是他妈失败之母"(Assumption is the source of all screw-ups).
准则4, 5, 7告诉我们深入了解系统工作原理的重要性。这就是为什么
这本书 仍然是CS学生的必读。高德纳早也知道内外兼修的重要性,所以才会在《计算机编程的艺术》里雄辩地阐述了为什么他要用MMIX(一门他创造的汇编)来描速算法。
6和8颇有意思。A.T相当强调CS务实的一面。准则6的最佳注解是一句流行的引言:工程师为了创建而学习,科学家为了学习而创建(Engineers learn to build,. Scientists build to learn). 关于准则7的例子隐隐有理论如果不能刻划现实,就用处不大的意思。这个俺有保留意见。理论本来就是一个演化的过程。无数优秀理论都是由无数人改进不够完美的理论二来。最近重读Klaus Scheider的
Verification of Reactive Systems第一章,形式化验证的家谱,就可以看出精彩的理论往往来自一系列向现实逼近的粗糙理论。何况当年看似粗糙的理论因为外界的变化也许就变得有吸引力了呢?这不是没有例子的。
准则10尤其重要。现在的电脑工业出了名的喜欢“重发现”当年的技术。虚拟机不是新鲜东西。垃圾处理不是新鲜东西。delegate不是新鲜东西。匿名函数不是新鲜东西。clsoure不是新鲜东西。OO不是新鲜东西。continuation不是新鲜东西。泛型不是新鲜东西。硬件的进步,软件开发技术的进步,以及理论的进步往往让当年被束之高阁的技术重见天日,再焕活力。所以了解历史绝对有助现实。
Andy Kessler的力作How We Got Here(免费书,叙述及其精彩,强烈推荐哈)也可旁证以古为鉴的重要性。发表于 @ 2006年01月22日 13:08:00|评论(loading...)|编辑