摘 要:课程体系如何反映出学生所选专业领域的未来发展,是高等教育必须解决的一个现实课题。本文分析了计算机科学课程体系的形成与发展,阐述目前计算机科学课程体系争论的核心内容,分析未来计算机科学教育发展的走向,并对其课程体系的框架进行了科学的分析与预测。
关键字:计算机科学 课程体系
1、引言
教育的目的是为学生的将来做好准备,所以课程体系必然反映出学生所选择的专业领域的未来发展,然而计算机科学是一个相对新的科学领域,而且它能具有很快地融合其他领域和学科的特点,因而要探讨计算机科学课程体系的架构就更加复杂。对此本人从计算机教育科学的历史演变上,说明其课程体系的形成与发展,并阐述目前计算机科学教育的课程体系争论的核心内容,分析未来计算机科学教育发展的走向,以促进计算机科学教育的繁荣与发展。
2、课程体系的形成与发展
众所周知,计算机科学是从电子学、科学、数理逻辑和计算数学的交界处发展起来的。在发展初期(20世纪50年代开始到60年代中期),数值分析、开关理论、逻辑设计、计算模型构成这一领域的核心,而把操作系统、编译器、数据库、网络、处理器硬件作为其应用。这时课程计划都是基于ACM68课程体系的某种形式或是后来78课程体系的形式。到20世纪70年代末,各院校的课程体系逐渐与商业教学计划相一致,而纷纷发展自己的软件课程集,呈现出教学计划的多样性。此时,计算机科学从形式方法和抽象思维的狭义概念已经扩展到计算与信息技术(CIT),这里所说的计算主要涉及传统计算机科学的技术方面,而信息技术涉及面要宽得多,凡与计算机技术的使用相关的都应包含在内。20世纪80年代及90
年代初期开展的关于计算机科学教育的争论,重点似乎都放在如何教问题求解技巧及编程语言的选择上,而忽略了计算机科学教育目的的本身。自1991年ACM/IEEE计算机课程体系以来,核心课程并没有太大变化,只是鼓励了计算机科学和工程中教学计划的多样性,并要求保有公共内核。该内核定义成一系列知识单元(KUs),可用这些知识单元组合课程。目的在于为学生提供设计与构造计算机系统的基本原理,通过程序设计语言训练学生掌握自动处理数据与信息的算法过程。涉及的科目包括程序设计、数据结构和算法、操作系统、编译和翻译、计算机体系结构、软件工程、通信与网络。重点放在用于开发计算机应用的软件、硬件工具的开发,而不是那些应用的本身。这对资源有限的各院校适应当时技术的变化带来了困难,同时也对教育者提出了挑战。这就是91课程体系不同于基于课程定义的68课程体系和78课程体系在计算机科学教学计划中没有普遍使用的原因。2001课程自从公布了ACM和IEEE标准后,改进了91课程的不足,主要表现了技术的变化。同时该模型能够与资源协调有机的发展,促进课程的研究与发展。
到二十世纪末课程体系的观点是抽象第一,其构造模型是先给学生介绍概念,而不要求学生发展设计技巧。即介绍算法分析时并不要求设计程序,在实现细节被引入之前就介绍类库,把它作为编写软件的虚拟机。理论通过证明的形式来介绍。这样使得与经典工程学科相比具有共同的学科架构。即,讲授理论时并不涉及解决实际世界中的问题,在四年制的学位计划中最初阶段很少包含特定工程专业一些分支的内容。有了这个新的课程方向,课程体系的开始部分(知识单元)就可以相对固定,而将特定技术领域放在后面。这种变化带来两个有用的结果:主要经验可以在教授入门课程时建立起来。与发展趋势有关的设备可以在以后的研究中再去购买,就如同在其它工程学科一样。事实上,这时人们对计算机科学本身的认识才颇为深刻,在“Computing as a discipline”报告中对计算机科学进行了界定,计算机科学和计算机工程之间本质上没有区别,计算机科学注重理论和抽象,计算机工程注重抽象和设计,计算机科学和工程居中,从研究的范畴上统称为计算学科。而计算学科是对信息描述和变换的算法过程的系统研究,主要包括对其理论、分析、设计、效率、实现和应用等过程的研究
3、课程体系争论的核心内容
从上述课程体系的历史发展可见,计算机科学课程体系模型一直在推陈出新,不断发展。无论如何,未来计算机课程体系都必将提供统一的形式,但这并不意味课程实验的结束。伴随这种过程,受教育者终身学习变得越来越重要,面对终身学习和职业常变的未来必须具有适应新模式的能力。这必然强调计算机科学课程体系基本的核心理论课程和应用技术课程,使之在二者之间求得平衡。
下面从三个方面来阐述课程体系争论的核心内容。
3.1 教育学的课程论点
来自教育学的课程内容虽然焦点是针对所定义的样板课程,但对课程留有一定的实验空间的呼声也极为高涨。因为定义的课程内核是有限的,能否概括计算机科学的内涵有待于深入研究。2001课程确定了可供选择课程的成分,而且鼓励教师从可供选择的知识单元组合课程并进行实验,使教师很容易从已有的教学内容或从91课程内容中过渡到2001课程,便于教师的实践。然而仍存在如下的主题争论:
算法优先——强调编码技巧的算法。
硬件优先——晶体管的抽象作为一个开关,而且一种高级语言是通过机器代码进行工作的。
对象优先——以一个定义明确的对象开始,允许学生使用预先的抽象。
需要优先——很多的传统目标。
功能优先——使用一种语言不能混淆语法规则,存储器管理等。
3.2技术应用的课程论点
在计算职业中,应用特指应用程序,它实施某个领域中非编程用户到各种任务。应用程序把理论的结果应用到用户所在领域的实践中去。许多计算机科学家认为,在应用上花时间,就意味着在研究上失掉了相同的时间,并且从科研的角度上来看没有任何回报。另一方面,许多商人认为,应用是他们在市场上主要提供的东西。他们希望计算机科技人员和自己并肩作战,开发各种应用程序。在这样的环境氛围中,计算机科学课程确立的思想表现在两个方面。一方面注重计算机科学教育的核心课程,拓宽基础,以宽口径的基础课程进行学生的科学素质教育,适应计算职业的技术变化。另一方面,以基础课程够用为主,充分扩展计算机技术的应用,重视与计算职业边界相关课程的开发,培养胜任能力。重视实践和描述性的知识课程,主张教育课程应分散在计算机科学、软件工程、计算科学、计算机工程以及其它系的课程中去。
3.3教育改革的课程论点
来自教育改革的课程论点表现在两个方面:一方面是合作。即在计算机科学课程的公共内核之外考核各种计算课程体系,针对每个学科确定一个讲授课程集,并决定哪些教学计划应该包含哪些课程。最后为每个学科定义非计算专业的服务课程集。为使所有计算学科有一个统一的框架,使所有学科相得益彰,减少重复,尽可能多支持其他学科,更有效地开设全校基础平台计算机课程。另一方面是继续分离。计算机科学附属于电子工程学科,成为电子工程学科课程的子集。
上述三种论点的产生实质是对计算机科学的内涵没有认清。“Computing as a discipline”报告认为:理论、抽象和设计是计算机科学领域的三种主要形态,每一种形态都有自己的主领域,它提供了定义学科的条件。教育学的课程论点其实质强调计算机科学形态的抽象根本,而忽视了理论和设计的形态。技术应用的课程论点强调的是设计实现,教育改革论处于二者之间,游离不定。