计算机工程能力教学体会(共5560字).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《计算机工程能力教学体会(共5560字).doc》由会员分享,可在线阅读,更多相关《计算机工程能力教学体会(共5560字).doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机工程能力教学体会(共5560字)计算机工程能力教学体会 1现状分析培养高质量的软件开发人才一直是社会和行业关注的焦点。早在11年前,对于工程教育的迫切性就被人提出来1。工程教育本身也作为一个系统问题被讨论2。现在从国家层面在战略上建立了软件学院进行专门培养,各个高校也不断推出新的课程、新的措施方案。在这一领域虽然比过去似乎已经有了翻天覆地的变化,但来自企业的呼吁似乎一直反映出诸多不尽如人意。更多的思路希望将企业的力量直接引入到教学,比如实训基地等3;而国家层面也非常关注实训4。但实际效果可能变得流于表面,因为企业往往难以将核心的工作拿给学生做,而其训练的项目也并未从更全面系统的角度去设计
2、,其锻炼效果就有限了。在软件开发这一领域,由于其具有变化迅速,新技术不断涌现的特点,导致不少在教育内容上选择了追逐新技术、新语言、新平台,以能用会用这些流行主流技术为目标。典型的代表就是北大青鸟,有些二本的学生在毕业前专门花钱去青鸟学习,似乎可以看到这种教育的优势。但另一个矛盾的情况是,往往那些关注员工后劲的公司却不愿意招聘青鸟的学生。如果将目光投向国外的顶级大学,例如斯坦福,其教学上并没有去“依赖”校企合作,以及很热门的“实训”。其核心课程依然是过去的传统经典课程。以一个研究生为例,一学期能修2门课是正常,3门就很优秀。它并没有追逐所谓的新技术。但无人质疑其学生的工程能力、科研能力和创造能力
3、。2什么是计算机工程能力的核心什么才是我们软件开发教育的核心知识架构,怎样才能培养学生可持续发展的核心竞争力?我们调查过一些非常高水准的软件开发者,发现他们往往在底层软件上持之以恒地进行长时间深刻的锻炼,然后在未接触的新领域才能非常迅速地掌握核心。例如,一个非计算机专业的系统分析员曾经“只”在DOS这种原始的操作系统下玩了10年,甚至自己写过一个汉化的DOS。他只有书本上的一点点网络知识时,就用一两天时间解决了一个学通信的研究生1个月都不能解决的网络故障。这是一个典型的例子,他并没有“实际的”网络经验,什么使得他如此轻松地进入了新的领域呢?而另一个曾就职于vmware、google等顶级公司的
4、程序员,在Unix下只用C语言做了10年系统级编程。当用Java,C+甚至是javascript时,其学习时间只是1天,很快就比做了几年专门java编程的程序员还精通。如何才是软件开发人员的本质力量?什么才能让他们在变化万千的新技术面前屹立不倒,乘风破浪?2.1计算机工程能力我们认为计算机工程能力包含两方面的内容:(1)核心知识架构;(2)计算机的思维方式。什么是核心知识架构呢?是反应该领域最基本规律和支撑技术的知识。简单地说就是传统的操作系统、编译、数据库。操作系统将硬件、软件、高级语言和汇编融汇在一起,它几乎包括了软件工程中所有重要的因素。举一个简单的例子,似乎只有面向对象这种“高级东西”
5、才有的虚函数运用,其实在Linux中就有相应的虚文件系统。操作系统是最为复杂的计算机工程之一。编译融汇了大量的算法,而且能让大家真正看“穿”语言的外表,深入到其内里,体现了最根本的计算机技术。其优化技术,也深刻地和硬件交融在一起,很好体现了底层风范。数据库,不仅是运用算法最多的地方,甚至是超越操作系统的一个复杂的系统,从缓存技术到i/o优化,到索引,再到事务处理,无一不是反映计算机最深刻规律。大家可以发现,所谓核心知识架构,都具有两个特点,反映本质规律,体现软硬融汇交织。也只有这样,才能建立下面谈到的“计算机思维方式”。2.2核心知识架构为什么我们没包括一些新兴的语言和技术呢?似乎它们很“实用
6、”。而且已经出现的问题是,按照传统科目和方式学习后,学生在企业什么都不会。这也正是大家关注工程教育的初衷。为什么不强调这些新兴实用技术的教育还在强调“古老”的“基础”。计算机领域一个显著的特点是,表面上知识更新非常快,新技术、语言层出不穷。这很容易导致当我们发现学生能力欠缺时,将问题归罪于新技术的学习不得力,知识结构老化。但其实目前的问题可以从另外一个角度考虑,是否是基础教育不得力?分析国外著名大学,如斯坦福、伯克利的课程,我们发现两个特点:(1)关键的基础课程,如操作系统、编译原理、数据库,始终是其最重要的课程,并没有过分追逐各种“新潮”技术。(2)学生一学期能修的课程非常有限,一般为3门课
7、。而国内却呈现相反的状况,比如编译原理被降到了选修课的角色,新潮课程层出不穷,一个学生二年级一学期要修13门课。在这种走马观花的状况下,计算机这种具有强烈“手艺”色彩和工程实践的学科,被完全纸上谈兵化。而一些可怜的实验内容,还被学生的复制拷贝所湮没。我们认为,恰恰是这种情况,使得基础核心知识教育没有工程化,没有充分动手,导致了基础知识教育某种程度上的巨大失败。从以下鲜明的对比可以窥见问题的端倪:国内学生反映操作系统课程是文科课程(只需要背条款考试即可);而相对地,国外著名高校操作系统课程要求学生实现“小”操作系统。国内数据库只讲其应用(如大量讲解sql等运用,sql即使非计算机专业人士也很容易
8、学习,这也是它被发明的初衷)。斯坦福的数据库课程中有一门需要实现一个数据库系统。在笔者走访的计算机工程上优秀的人才,发现其共同的特点就是在诸如操作系统或数据库上都有很深入的学习经历,比如前面提及的自己构建过汉化DOS系统,或者在Unix下,做内核以及驱动很多年等。而当他们接触新技术时,之前深刻的经验和淬炼的思维就让他们如虎添翼,快人一等。更有甚者,国外真正的最顶级专家,都是在这些领域有无与伦比水平的专家,从delphi的缔造者,转战到微软并入主.net平台的开发,也可看到雄厚的底层知识和能力的巨大作用。所以“老”知识并不是障碍,而是通向天堂的阶梯。究其原因,就涉及到工程能力的第2个方面,计算机
9、思维方式。2.3计算机思维方式对非专业人士它是很抽象的概念,而对真正专业人士,这又是一个非常鲜活的概念。这里限于篇幅,我们只举一个简单的例子。面对在C+中外部代码如何直接修改私有变量的问题,计算机的思维方式就是:对象也是放在内存中,只要能拿到对象的地址,并知道对象的布局,那么就可修改。而没有建立这种思维的人,就完全被高级语言的语法所左右,无从下手。一句话,无法看到本质,没有从下而上的底层思维。核心知识课程的有效深入教学和计算机思维方式建立有何直接关系呢?我们认为核心知识因为其反应了计算机本质规律,而且从底层建立起来,所以对其深入掌握运用后,它从开始的逼迫到最后的陶冶,最终潜移默化地让受众建立起
10、“计算机思维方式”。而这正是计算机工程师安身立命之本,就如同音乐家有其独特的音乐思维方式一样。为什么诸如java之类的课程于建立计算机基本思维不太合适呢?因为它更高层,无法让学生看到最下面。而唯有彻底、深刻和系统的底层淬炼,才能真正建立起“计算机思维方式”。3如何打造强大的计算机工程能力大家一方面指责基础课程的“空洞”、“无用”、“陈旧”;另一方面在不断开设的海量新课和技术中压得学生更加远离编程,远离实践。即使能培养出熟悉某种语言的学生,也无法看到他们和培训学校有何不同。实训也似乎没有根本解决问题,我们在实践中发现,往往是那些自己醉心于编程的学生最后有着卓越的表现。让基础知识能支撑和指导实践,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 工程 能力 教学 体会 5560
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内