1.问题的提出
在我国,高等教育一直受到人们的关注,特别是近些年来,当实现从精英教育转向大众教育的跨越时,如何科学办学,不断提高教育质量,为创新型国家建设培育创新型人才,更是成为人们关注的重点。为了促进我国高等教育质量的迅速提高,教育部从2001年开始,就质量工程问题先后发布了一系列文件,如《关于加强高等学校本科教学工作,提高教学质量的若干意见》(教高[2001]4号)、《关于进一步加强高等学校本科教学工作的若干意见》(教高〔2005〕1号)、《教育部财政部关于实施高等学校本科教学质量与教学改革工程的意见》(教高〔2007〕1号)、《教育部关于进一步深化本科教学改革全面提高教学质量的若干意见》(教高〔2007〕2号)教育部高教司于2003年组织各个学科专业教学指导委员会研究相关专业的发展战略和规范。
周远清同志曾经说过,教育教学研究也是科学研究,称为教育教学科学研究。这就是说,教育教学本身也包含许多科学成分,特别需要从科学的角度去研究、设计、规划和描述专业及其教学。只有建立起科学的体系,才能使专业办学从经验走向科学。我们需要关注教育和学科的发展,研究学科与专业,研究知识体系,按照学科和专业的发展状况,同时考虑学校、师资、生源等条件,结合社会的需求(不仅考虑学科划分,更考虑毕业生的社会角色),准确定位,按能力培养的需求,合理构建课程体系,引导课程对专业教育目标实现的支撑,促进科学办学。
2.研究学科与专业
专业办学依赖于支撑学科及其专业本身的状况。所以,要办好专业,首先必须深入研究面对的学科与专业。我们从以下几方面讨论计算机科学与技术学科和专业。
(1) 计算机科学与技术学科涉及科学、工程、应用
简单地说,计算机科学与技术学科是对信息描述和变换算法的系统研究,主要包括它们的理论、分析、效率、实现和应用。从基本的计算机硬件系统的构建开始,到各个层次虚拟机的构建,最终给用户提供一个界面友好的系统,涉及计算机理、工程实现和开发利用,呈现抽象、理论、设计三大学科形态。
如果说科学在于研究现象、发现规律,工程在于低成本有效地构建高效的系统,则技术在于实现方便的服务。落实到计算机科学与技术学科,计算机科学研究"什么能够有效地自动计算";计算机工程、软件工程分别从硬件和软件两方面研究和实现"如何低成本、高效地实现自动计算";而计算机技术则在于研究"如何方便有效地利用计算系统进行计算"。所以,学科的根本问题是什么能且如何被有效地自动计算。所以,计算机科学与技术除了具有较强的科学性外,还具有较强的工程性和实用性,因此,它是一门科学性与工程性并重,理论与实践紧密相关的学科。作为基础,人们需要讨论问题的计算机求解的"能行性",它将"问题分析、形式化描述、计算机化"作为问题求解的典型过程。由于系统对对象状态刻画的离散特征,决定了其变换的离散特征,使得离散结构成为其重要基础。
(2) 多个富有生命力的分支学科
相比之下,计算机科学与技术学科是一个很年轻的学科,只有几十年的历史,但该学科发展非常迅速,从原来的以计算机科学为主,发展到现在,已经成为一门基础技术学科,在科技发展占有重要地位。同时,作为一种广泛应用的技术,它在人类的生产和生活中也占有重要地位,而作为信息化建设的核心技术,它在国家信息化建设中同样占有重要地位。随着学科的发展,计算机工作者的计算情结先后发生了多次迁移,从用原始的0、1代码刻画简单的计算开始,先后经过汇编计算、基于高级语言的科学计算,到关于操作系统、编译系统、数据库系统等基本系统的计算,再发展到目前的普适计算等广义计算,其追求已经实现从"实例计算"到"类计算"和"模型计算"的跨越。所以,计算的概念发生了巨大的变化,ACM/IEEE-CS的专家们在CC2001(Computing Curricula 2001)中指出,"计算的概念在过去10年里发生了巨大变化,对教学计划的设计和教育方法具有深刻的影响。 "计算" 已经拓展到难以用一个学科来定义的境地。将计算机科学(CS)、计算机工程(CE)和软件工程(SE)融合成关于计算教育的一个统一文件的做法在十年前也许是合理的,但我们确信21世纪的计算蕴含有多个富有生命力的学科,它们分别有着自己的完整性和教育学特色。"而且学科的发展,还会逐渐地增加新的分支学科。例如,到了2005年,就又新增加了信息技术(IT)。我们将计算机科学与技术学科与计算学科等同,并称计算机科学、计算机工程和软件工程、信息技术、信息系统等为其分支学科。
(3) 国家的需求促使专业迅速发展
中国最早的计算机专业建立于1956年,当年只有两所大学有此专业,1958年增加到14所,1983年有63所,1993年有137所,2002年达到484所,2003年有505所,2004年有652所,2005年有771所。不仅专业点数远远超过其他专业,而且在校生数、招生数也远远超过其他专业。例如,2003年,在校生多达25.84万,当年招生量是6.36万,毕业生是4.14万;就工科专业而言,当年专业点数排第二的电子信息工程专业的在校生为10.1319万,招生量是2.7873万。到了2005年,计算机科学与技术专业(不包括软件工程、网络工程、计算机软件等计算机类专业)的在校生数达到了44万之众,大约占工科在校生的十分之一。巨大规模专业的形成,适应了国家现代化建设的需要,也给专业教育提出了更多的要求。
(4) 国家建设需要不同类型的计算机人才
《计算机科学与技术专业发展战略研究报告》指出,从国家的根本利益出发,需要一支计算机基础理论与核心技术的创新研究队伍,此为科学型人才;大部分IT企业开发满足国家信息化需求的产品,需要工程型人才。企事业单位和国家信息系统的建设与运行,需要大批应用型人才。三类人才呈金字塔的结构:科学型的在上部,工程型在中部,应用型在下部。
(5) 规格分类
注意到我国目前的计算机科学与技术专业基本上是1996年由计算机软件和计算机及应用专业合并成的专业,以计算机科学和计算机工程为基础。这种设置已经难以容纳目前的办学规模,也难以与社会的人才需求结构相吻合。
学科内涵的宽泛化、分支学科相对独立化、社会需求多样化、专业规模巨大化、计算教育大众化,促进我们去追求教育定位准确化和资源效益最大化。所以,我们感到简单地诠释"计算机科学与技术"这一个名称与实际已不相适应,需要更多的、更具针对性的专业教育。规格分类就是以计算机科学培养科学型人才,以计算机工程、软件工程培养工程型人才,以信息技术培养应用型人才。他们将致力于不同的问题,强调问题的不同方面,需要不同的培养。
同时我们注意到,人作为最宝贵资源,必须找准其适应点,展开扬长教育,促使其擅长得到发挥,而他们的(可持续)发展也将需要不同的基础。因此,必须关注教育的基础性在高等教育中的地位,虽然"地基越厚,楼盖得越高",但是"基础的厚薄是相对的、内容是因人而异的",规格分类就在于引导准确定位,给学生不同的基础,有效开发其潜质。
3.构建本科专业教育内容体系
高等教育包括知识、能力、素质的培养。要想实现能力培养,提高学生的专业素质,仅仅有知识是不够的,还必须注意学科思想和方法的传授,也就是说,要以知识为载体,通过对知识的"研究"将思想、方法融进去,在培养学生提出问题、分析问题、解决问题的过程中给他们锻炼和获得顶峰体验的机会,实现对他们的创新精神、创新意识、创新能力的培养。因此,本科专业的教育内容体系可以看成二维的结构,作者曾在"谈高水平计算机人才的培养"一文中给出了描述,这个体系以分支学科的知识体系为基础,中间为学科方法学,上层是本科培养中技能要求的主题--相关技术。在有关细节描述上,CC2005(Computing Curricula 2005)给出了一套值得学习和借鉴的形式和方法。
CC2005是在"计算作为一个学科"、CC1991(Computing Curricula 1991)、CC2001的基础上发展来的。CC1991提出用知识领域、知识单元、知识点构成知识体系,替代传统的课程作为专业教育的基本要求。CC2001继承了这种科学描述,同时给出了课程设计思想和课程设计示例,并关注了计算学科的发展。此后的CC2005给出了各个分支学科的问题空间、知识取向、能力要求,定性、定量地描述了相应分支学科毕业生的相关教育定位和要求。
(6) 知识体系
知识体系给出专业教育知识方面的基本要求。在知识体系的构建上,认为计算学科是由多个分支学科组成,每个分支学科包含多个知识领域,每个知识领域包括若干个知识单元,它们可以是必修的,也可以是选修的,而知识单元又由若干个知识点组成。
学科知识体系并不总是和本科专业教育的知识体系是相同的。可以认为,狭义的学科知识体系仅指学科本身的知识,并不包含更基础性的。例如,在软件工程分支学科,SWEBOK给出了学科本身的10个知识领域:软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程工具和方法、软件质量。而SEEK给出的是本科教育知识体系,它也是10个知识领域,共494必修学时:计算基础(CMP)、数学和工程基础(FND)、专业实践(PRF)、软件建模与分析(MAA)、软件设计(DES)、软件验证与确认(VAV)、软件演化(EVL)、软件过程(PRO)、软件质量(QUA)和软件管理(MGT)。其中,后7个知识领域是SWEBOK的知识领域整合后得到的,前3个是添加的,用于反映计算学科本科教育基础内容,共296必修学时,占59.9%。
(7) 问题空间
问题空间以二维的形式给出分支学科覆盖范围的定性描述,在一定程度上回归到人们头脑中习惯的专业印象。其横坐标从最左边的"理论、原理、创新"到最右边的"应用、部署、配置",从倾向理论逐渐延伸到倾向应用;纵坐标则由下而上分成计算机硬件体系、系统平台结构、软件开发、应用技术、系统组织行为。不同的分支学科占据其中不同的部分。
(8) 知识取向
知识取向则给出了各个分支学科程序设计基础、软件设计、程序设计语言理论等56个方面知识要求的不同最小和最大权重,用0~5表示。当某种知识的最小权重和最大权重都是5时,表示该分支学科对这种知识要求极高;如果都是0,则表示根本不要求。也存在最小为0,最多为5的知识。例如,科学计算(数值方法)对计算机科学来说就是这样。表明科学计算对计算机科学来说可以是不要求的,也可以是要求最高的。实际上,大约在20年前,科学计算是计算机科学的重要领域,而发展到现在,许多数值计算系统已比较成熟,直接研究科学计算的人就很少了。
(9) 能力要求
为了反映高等教育包括知识、能力、素质三方面的要求,CC2005给出了计算学科中不同分支学科对算法、应用程序、计算机程序设计、硬件与设备等11个方面59种能力的要求。权重仍然用0~5表示。与知识取向相比,这里只给出了一个值。例如,对计算机科学、计算机工程、软件工程、信息系统、信息技术来说,它们对小规模程序设计能力的要求权值依次为5、5、5、3、3,对大规模程序设计能力的要求权值依次为4、3、5、2、2,而对选择数据库产品能力的要求权值依次为3、1、3、5、5。
(10) 课程体系
每一个专业的教育,都有自己的定位。我们要求这些定位是明确的,有特色的,在某种意义上是可以评测的。在这个基础上去构建课程和课程体系,以实现所要求的能力,实现专业的培养目标。
各个分支学科的所有核心知识单元是该分支学科教育的基本内容,其问题空间、知识取向、能力要求给出了另一角度的要求。这些内容,尤其是知识体系给出的内容,需要最终以课程的形式落实到教学中。通常以知识点作为组成课程的基本单元,必修课程实现对必修知识单元的完全覆盖,一个必修知识单元的知识点可以含在不同的课程中,一门课程可以包含来自不同知识单元(领域)的知识点,所有必修课程中所含的必修知识单元的学时总数等于知识体系中该知识单元的学时数。作为体现自身的专业特色的一个方面,各个学校可以用不同的思路建立不同的课程体系,规范(教程)中给出的课程体系通常只是示例性的。
4.课程为专业目标服务
在总体目标下,特别强调课程为实现专业目标服务。作为教育的最终实施者,教师需要掌握课程在人才培养中的地位和作用,并在教学过程中加以实施。同时,要努力使学生理解这些,以便学生在学习中能够给予良好的配合。因此,发展战略、专业规范等都应该最终体现在教师的教学活动中。所以,通过广泛的宣讲活动等,使广大的教师了解专业发展、专业规划、专业教育的基本要求,是非常有必要的。另外,鼓励教师掌握课程体系,有意识地瞄准专业教育目标开展教学活动,对促进教育目标的实现是非常有利的。
例如,编译原理是计算机科学与技术专业中 一门重要的技术基础课程,其课程基本目标应该是"掌握'编译原理'中的基本概念、基本理论、基本方法,在系统级上再认识程序和算法,提升计算机问题求解的水平,增强系统能力,体验实现自动计算的乐趣。"努力使学生掌握程序变换基本概念、问题描述和处理方法。包括本学科自顶向下,自底向上,逐步求精,递归求解,目标驱动,问题的分析、抽象与形式化描述,算法设计与实现,系统构建,模块化等最经典、最常用的问题求解和系统设计方法。使学生修养"问题、形式化描述、计算机化" 这一典型的问题求解过程,推进从"实例计算"到"类计算"和"模型计算"的跨越。从宏观到微观、从微观到宏观,培养系统能力;增强理论结合实际能力,在理论教学和实践教学中让学生获得更多的"顶峰体验"。
所以,课程内容体系的设计要关注三个方面的内容:首先是课程的基本内容,要选择最佳知识载体。此时要确定课程的基本内容、重点和难点。其次是解决"教什么"的问题,需要进一步弄清楚向学生传授什么?引导学生干什么?确定对先进的教育理念、思想、方法的体现。第三是解决如何教的问题,也就是如何利用选定的知识载体,通过恰当的教学方法融教育于课程教学。
结束语
当教育摆脱师傅带徒弟的原始形式后,就开始从经验走向科学。经过发展,经验越来越多地沉淀成科学,使教育的科学成分越来越多,以此来应对越来越复杂的教育状况和越来越高的教育要求。计算机科学与技术学科作为一门年轻的学科,其教育的科学化有更多的工作要做。例如,一些科学家已经提出"工具"和"规律"、"系统"和"原理"的选择问题。在教学内容上, 关于"工具"和"规律"的选择,有的学校实际上自然不自然地会偏向"工具";而在知识领域、课程的设计中,在"系统"和"原理"之间,我们当前实际上更多的是面向系统,而不是面向原理。几乎所有的人都认为这是不恰当的,但这正是我们对学科与专业的认识的局限所造成的事实。这正是:路漫漫其修远兮。
参考文献
1. 计算机科学与技术专业教学指导委员会,高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行),北京:高等教育出版社,2006年9月
2. The Joint Task Force on Computing Curricula (IEEE-CS/ACM),Computing Curricula 2001-Computer Science, http/www.acm.org/education/curricula, Dec. 15,2001
3. The Joint Task Force for Computing Curricula 2005,Computing Curricula 2005, http/www.acm.org/education/curricula, Sep. 30,2005
4. 蒋宗礼,赵一夫.谈高水平计算机人才的培养,中国大学教学 2005,9:24-27
作者:蒋宗礼
北京工业大学计算机学院教授、副院长
2006-2010教育部高等学校计算机科学与技术专业教学指导分委员会秘书长
电话:67392508(O),13651262066(M)
E-mail:jiangzl@bjut.edu.cn