计算机科学知识体系演化与评估方法*

2016-12-19 11:09张立波罗铁坚
中国科学院大学学报 2016年6期
关键词:计算机科学概念领域

张立波, 张 飞, 罗铁坚

(中国科学院大学计算机与控制学院,北京 101408)(2015年12月22日收稿; 2016年4月19日收修改稿)

近年来 “赛博学习”(Cyberlearning)概念的出现,充分体现了信息技术与学习科学这两大杠杆相互作用,合力推动学习观念和学习方式的变化.在传统教育中,由于课堂上课时长有限,学科体系变化快、容量大,因此效果有限. 随着互联网教育的兴起,给教育带来新的方式和方法,尤其是大型开放式网络课程(massive open online courses, MOOC)的出现,掀起了系统性在线学习的高峰[1].但是互联网教育和传统教育都面临同样一个问题:学科知识庞杂、变化迅速,如何组织教学内容,才能使学生紧跟时代的脚步[2]?

互联网给教育提供了海量资源可供选择,这使得我们能够使用新的技术手段对知识体系进行梳理,找到当下教育应该聚焦的核心部分,在编排教程和构建核心知识点时,时刻保持与时代同步.本文以知识体系中最小的单元概念为切入点,寻找一种能够对学科知识重点进行评价的方法.学科概念是人类知识的基本组成部分,在人类对未知领域的不断探索中,逐步形成系统的科学知识体系,而构成相关体系的最小单元,就是概念.随着学科的不断发展和完善,新的概念不断出现,而旧的概念慢慢被淘汰.概念的集合形成了细小颗粒度上的人类知识宝库,例如维基百科、大英百科.学科的知识体系由整个概念的网络构成,而概念的出现有时间的先后关系,一个新概念的学习可以通过之前掌握的旧概念的牵引,以此达到更容易接受和学习的效果.

传统的学科评估是依据文献的标题与关键词进行构建,这种方式无法深入到文献内部,也无法通过几个关键词对文献的全部内容进行完整概括.本文主要贡献包括:1)收集过去60多年计算机领域的课程大纲指南作为权威数据,并对这些数据进行预处理,形成可用的数据集;2)首次研究并提出一个知识领域、知识单元和概念之间的模型,并在此基础上对生成的数据集进行分析,从这3个层面出发,揭示计算机科学知识体系的演化规律,该方法具有广泛普适性,能够迁移到其他学科领域;3)为便于其他研究者继续研究,开发了一套文中所述方法的工具集,并公开了源码.

我们的方法能够应用在各个学科领域,本文选择计算机科学作为研究对象,这是因为计算机学科在过去的60年里发生了翻天覆地的变化,这是一门年轻的学科,并且无法用个人的经验来对整个学科进行评估.

1 相关工作

1.1 教育信息化的观察

几十年来,教育的形式和内容发生了很多变化,学习的重点也随之迁移.在具体的教学过程中,传统教育大多是基于课本的流程和框架,而课程的更新相对于知识的更新速度,有明显的滞后.这就造成课程传递的知识中,包含一些已经不再重要,甚至已经被淘汰的概念.另外,知识传递的主体是教师,而教师无法了解全部的学科和概念随时间的演化规律,单一凭借自身对整个学科体系的理解和掌握,在教学过程中无法时刻抓住热点和重点概念.知识传递的对象是学生,而学生的学习能力和学习进度千差万别.传统教学中,教师无法在有限时间和精力的制约下,在一对多的教学模式中顾及每一个学生的接受程度,也无法制定一个适合全部学生的课程方案.课程中概念的数量和重点都在发生变化,学生无法在学科诸多概念中聚焦关键概念,就很难抓住课程的重点,也无法将有限的时间投入到课程的核心部分.

为解决传统教育中的这些弊端,互联网教育开始兴起,2008年MOOC教育腾空出世,得到了广泛的关注与发展.目前,全球的MOOC平台已经发展到30多个,开设1 500多门课程,涵盖多个科学领域.与传统教育相比,互联网教育是一种更有效的学习方式,能够根据学生已经掌握的概念情况,因地制宜地制定个性化的学习方案;并在整个学习过程中,准确地评估学生的接受程度和理解程度;并以此为根据,适时地进行方案调整和学习内容的变更.最初的MOOC教育,采用的是点播式教学,通过点播视频、查看课件、完成在线作业等,主要特点是教学资源的展示.后来,MOOC发展到交互式教学阶段,视频会议与BBS系统、内部邮件、在线答疑等方式的加入提升了师生之间的互动,能够及时有效地提供教育服务.现在,MOOC教育渐渐进入自主化教学阶段,在这个阶段,通过对学习者能力和状态的评估,自适应地调整教学内容和教学方法;但是目前无法将教学内容与时代的发展紧密结合,无法将当下的热点知识融合到教学当中[3].

传统教育与互联网教育都缺乏一个可靠的学科评价体系,来对教学质量和学习效果进行评估.传统的测验只能在一定程度上检测学生对课程教学的掌握程度,无法对学习的总覆盖度进行评估,也无法了解掌握的知识与当下热点的契合程度.并且在这个信息爆炸的时代,知识的种类繁多,所以只有通过对课程知识体系随历史变化规律的总结,才能将教学重点聚焦在核心的知识概念上,才能通过对历史规律的把握来掌握未来的热门趋势,并根据学科历史的演化规律和迁移变化来确定当前时期所需要掌握的重点内容.

如表1所示,将本文所述评估方法与传统的评估方法进行对比:传统的评估对象均为基于web of science等知名检索收录的论文文献,本文采用的是过去60年的课程大纲;传统是对科学的文献领域进行评估,而我们聚焦在课程领域;传统的评估一般采用对文献的标题和关键词进行建模分析,而我们选择在具体文本中抽取概念进行分析;传统采用CiteSpace等文献分析工具,无法移植改进,而本文采用自主开发的工具,并公开源码,可以根据需要进行修改和迁移.

表1 本文方法与传统评估的对比

因此,本文首次提出从知识体系中的最小单元——概念出发,运用自然语言处理与数据挖掘的相关算法,以计算机科学为例,构建一个对学科知识体系的建模与评估方法.该方法通过对过去60年计算机科学大纲的知识单元进行分析,总结出本学科内的教学内容核心,并揭示其演化规律.

1.2 研究数据样本

作为发展最为迅速的学科之一,计算机科学在过去的60年里从知识体系到应用方式,都发生了巨大的变化. 随着新兴应用和新型技术的出现,计算机科学的研究领域不断变化,伴随着的是新概念的出现和旧概念的消退,研究重点也在不断迁移,因此我们选取计算机学科作为学科研究对象,探究计算机学科中的重点是如何发生变化的.不难发现在计算机课程中,一些基本概念例如“数据结构”、“算法”从始至今都保持着重要的角色.一些概念随着时间变得越来越重要,例如“网络”、“万维网”在20世纪90年代时并没有受到关注,但他们在随后的10年间,却成为计算机科学最重要的基础.也有一些概念会被新的概念所替代,在编程语言中,新兴的“Java”、“C++”、“PHP”等编程语言逐渐取代了20世纪50年代中期的“COBAL”、“Fortran”编程语言.

计算机学科的体系由众多概念编织而成,学科之间存在诸多相同的概念,这些交叉的概念反映了学科的异同. 当两个学科的概念交集很大时,掌握一门学科对另外一门学科的学习也很有帮助,这能够反映出概念和学科在学习先后顺序上的逻辑. 因此通过对重点概念的分析和掌握能够准确把握先修课程和先修概念,这对提高学习效率有着非常重要的作用.我们通过对ACM和IEEE作为计算机领域的权威机构,在过去几十年间通过公布的有关计算机课程的指导大纲,来引领计算机课程的发展方向. 因此我们选取了全部的13次大纲内容进行分析,通过对每年的课程体系构建概念网络,来观察计算机科学所包含的概念随着时间发生了什么变化. 计算机科学中的概念在出现的时间上有先后顺序,这对准确把握计算机科学的发展趋势,在教学过程中抓住热点和重点问题有很大的帮助.通过本文提出的方法,我们将探究随着时间的推移,在教育中,哪些概念变得更加重要,哪些概念已经边缘化,而哪些概念处于核心位置,一直是学习的重点.

为了对计算机学科的发展进行分析,我们收集ACM从1991年到2014年的全部计算机课程指导纲要,所有数据均来自ACM和IEEE计算机协会,内容涵盖计算机课程、计算机科学课程、计算机工程、软件工程、高级软件工程、信息系统和信息技术.在计算机科学教育领域中,ACM的计算机科学课程大纲是影响力最大的课程指导之一.ACM在1968年首次发布了课程指导大纲:“68课程指导”,这也是计算机科学课程的第一个指导大纲.10年之后,“78课程指导”发布.自从1991年开始,ACM与IEEE计算机协会一起合作制定计算机科学课程指导,至今为止,一共发布了13个版本:CC1991、CC2001、IS2002、CE2004、SE2004、CC2005、IS2006、IT2008、CS2008、SE2009、IS2010、CS201和SE2014.

需要说明的是,在具体分析中,我们并没有使用68年课程指导和78年课程指导,因为这两个版本知识体系的构建与随后的版本有着巨大的区别.另外,由于SE2014是2015年发布的非完整版本,因此SE2014的数据只作为参考.

2 学科概念演化的研究框架

为了形成能够被处理的标准的文档形式,必须进行数据的预处理.为保证数据集的科学性和准确性,我们在预处理的部分步骤中投入了大量人力进行手工处理.

设原始的文档为T,具体的处理步骤如下:

1)对T进行数据清洗,首先将网址和特殊字符删除,形成T′.

2)将T′中“()”和“/”周围的字段单独抽出,形成t_1和t_2.

3)将T′中的连续大写字母词组和带有连字符的词组提出,形成t_3和t_4.

4)号召了7个志愿者,通过对13份课程的t_1,t_2,t_3,t_4进行人工处理,从中找出与计算机相关的全部概念,形成单词表w_1,w_2,w_3,w_4.

5)将13份课程形成的52个w_1,w_2,w_3,w_4汇总成一个单词表,并对单词表去重后排序,形成单词表W_1.

6)为了使计算机词汇概念单词表更有效,对wiki百科的title进行处理,从11 944 439个词条中抽取了以_(computer)结尾的与计算机相关的概念词汇,形成单词表W_2.

7)从英语词典和互联网网站获取了另外一些与计算机概念相关的概念词汇,生成单词表W_3.

W=F(W_1+W_2+W_3).

(1)

通过公式(1)形成总词汇表W,其中F的作用是将汇总后的单词表去重.

8)用总词汇表W对T′进行匹配查找,记录每个课程文档中出现的概念次数,并将其从T′中删除,删除词汇表W后的T′,形成t′_i(0

9)对t′_i进行自然语言处理,具体步骤如下:

①使用nltk.sent_tokenize进行分句.

②使用公式(2)进行单词分词.

re.findall(r“w+(?:[-′]w+)*

|′|[-.(]+|Sw*”,raw).

(2)

③使用wordnet进行拼写检查,纠正错误的单词.

④使用公式(3)去除标点,并转换大小写.

[word.lower() for word in t′_iif word.isalpha()].

(3)

⑤使用公式(4)进行词形归并.

[nltk.WordNetLemmatizer().lemmatize(t) for t in e.

(4)

⑥使用公式(5)去除停用词.

[word for word in t′_iif word not in set(stopwords.words(‘english’))].

(5)

⑦通过上面的处理,得到k_i(0

10)分别对13个文档k_i中的单词进行去重,形成词汇表W′,通过志愿者的人工处理,将词汇表W′中与计算机概念相关的词汇找出,形成单词表W_4.

11) 通过公式(6)生成最终的单词表W_final.

W_final=W+W_4.

(6)

12) 通过单词表W_final对T′的匹配,生成包含每个课程中所有计算机概念词汇及其频率的索引.

上述步骤中变量对应如表2所示.

表2 变量对应表

3 计算机学科演化分析

文献统计的方法被应用在探究不同的学科前沿领域,以探寻学科中研究主题的变化趋势,但是学科前沿只是学科的一部分[4-7].Bogoiavlenski等[8]回顾计算机课程演变的历史观点,2005年Shackelford等[9]简要地总结了从20世纪90年代到2005年间专家关于计算机学科发展的观点,但是他们只描述了整个体系的全貌,不能从中具体地了解学科的变化与发展.Marshall[10]利用树形的知识结构对CC2001,CS2008和CS2013进行比较,但是他的论述局限于知识单元的主题上,并没有深入到颗粒度等更细的概念层次.此前的研究并没有对学科概念的组成进行研究,并在概念的基础上对整个学科的演变进行探索,而这,正是我们的研究主题.我们的研究并不针对于计算机学科,而是试图找到一个通用的方法来对其他的学科进行分析,为互联网教育提供新的思路.

3.1 计算机学科概念的演化

将收集的1991年到2014年ACM和IEEE计算机协会发布的计算机科学课程的pdf转化为txt,并利用数据处理中的预处理方法对数据进行处理.

ACM和IEEE计算机协会将每年的课程构成看成由不同的知识领域(KA,knowledge area)构成,知识领域由不同的知识单元(KU,Knowledge unite)构成,而知识单元由具体的概念(C,concept)构成,如图1所示. 我们的分析也是基于最细化的概念,在概念这个层级上,有可能与其他概念有一定的关系.

图1 课程知识体系的模型表示Fig.1 Graph model of a curricular knowledge system

通过我们的算法,对课程大纲中每年的计算机概念进行统计,得到如图2所示数据. 统计出从1991年到2014年逐年的概念增长趋势,并画出一条拟合的指数曲线.从1991年591个概念增加到2014年5 824个概念,从指数曲线上可以看出,计算机学科最初几年的课程大纲中概念数量呈现高速增长,逐步完善后,概念增长趋势逐渐趋于稳定.

图2 概念的增长趋势Fig.2 Growth trend of the concept

计算机科学的发展建立在概念体系的基础之上,随着领域的不断发展,新的概念不断出现,与此同时,已经存在的概念会因为新知识的出现而不断发生变化.例如,“大数据”的概念是在处理大规模数据时被提出,而现在的“智能手机”更多地是搭载安卓或者IOS系统,而不是塞班系统.

从计算机学科概念的总量上,可以看出概念的数量在不断增长,我们希望探索到更多的发展规律,以此对MOOC教育的重点进行指导.例如:

1)在过去的几十年中,究竟是哪些概念一直在计算机教育中占据着重要的位置?

2)重点概念和非重点概念的出现次数有多大的差别?

我们从课程大纲中找出全部与计算机科学相关的概念,并通过数据统计分析,找到问题的答案.

图3对1991年到2014年课程概念词频进行统计,列出频率最高的10个概念.排在前3位的是程序设计、信息系统和信息技术,这3个知识的重要性与历史的结果相吻合.

图3 课程中总频率最高的10个概念Fig.3 Top 10 concepts in curricula

为进一步了解这些年,重点的概念发生变化的具体规律,我们列出1991到2014年11次的课程指导中每年频率最高的10个概念,如图4所示.

图4 每年课程中频率最高的10个概念Fig.4 Top 10 concepts in curricula in each year

为确定核心概念在总概念中的比例,我们做了如下的统计,将词频分为6个区间,分别统计出每年的概念表中含有每个词频区间的概念数量.如图5所示,可以看出大部分的概念每年出现次数小于20.

图5 课程概念频率分布Fig.5 Frequency distribution of curricular concepts

3.2 计算机学科知识领域的演化

通过分析我们发现,计算机学科在过去的十几年里,课程体系总共发生了4次大的调整. 为深入展示课程中知识领域重点的变化,我们根据知识领域中概念数目的分布绘制了图6.发现:知识领域包含的内容逐年不断扩大,一些知识领域的重要性一直有着重要的地位,例如IM,SE,GV;一些新的知识领域出现,例如IAS,SF;一些知识领域被过时,例如NC.人类知识的变化就像这个图的演化,虽然每个领域的重要性发生波动,但在整体的趋势上,人类的知识领域在不断扩增,从最初的9个知识领域拓展到现在的19个.

图6 课程体系的4次调整Fig.6 The 4 adjustments of curricula

4 总结和展望

由于传统教育与互联网教育再具体的教学过程中,无法准确地把握学科知识体系带来的核心知识的变化,本文提出一种利用知识体系中的最小单元——概念,来寻找在学科随时间变化的过程中,重点知识是如何变化的.在此基础上,我们收集1991年到2014年ACM和IEEE发布的所有课程指导,在此数据集的基础上,利用本文提出的索引算法生成概念索引,并进行相关分析.结果显示,计算机概念的增加速度从最初的354%减缓到2013年到2014年的1.41%;知识领域从9增加到19;知识单元从10增加到18.可以看出计算机学科十几年来学科的框架体系正在不断调整与完善,学科总体在不断扩大的基础上从稀疏型结构逐渐转变为密集型结构.

本文提出的研究框架和算法也能够应用到其他学科的教学内容和教学大纲内容的分析中.为便于后续的研究,我们将算法的整个处理过程形成了一个概念抽取平台,通过该网站,其他研究者可以参考本文的框架和流程.现有平台是基于计算机学科的概念抽取,在后续完善后,可以对其他学科进行概念抽取,我们平台的公开源码网址为https:∥github.com/ideaucas/LiboZhang.

猜你喜欢
计算机科学概念领域
电子战领域的争锋
Birdie Cup Coffee丰盛里概念店
将现代科技应用于Hi-Fi领域 Perlisten S7tse
吉林省一流转业建设点
——通化师范学院计算机科学与技术专业简介
幾樣概念店
2020 IT领域大事记
领域·对峙
探讨计算机科学与技术跨越式发展
新英镑
学习集合概念『四步走』