作为学科的计算科学(上)

 

作为学科的计算科学

Peter JDenning(主席)Douglas E.ComerDavid Gries,

Michael CMulder,A11en Tucker,A.Joe Turnerand Paul RYoung

 

摘要:  这是计算机科学核心攻关组的最后报告。它给出计算机学科一个新知识框架,和计算课程的一个新基础。本报告已经过美计算机协会(ACM)教育委员会认可并批准发行。

 

1 引言

    美国计算机协会(ACM)已成立42 年了,但一场老问题的争论仍在继续。计算机科学是科学还是工程学科?或者只是一门技术、一个计算商品的研制者和销售者?学科的智力本质是什么?它将持续兴旺下去或者在我们的下一代衰落下去?计算机科学和工程目前的核心课程是否反映了这一领域?怎样把理论和实验室的工作集成在计算课程中?各核心课程培养计算方面的能力吗?

    我们建议一种面向技术的学科描述,其基础是数学和工程。例如,我们把算法当作最基本的研究对象,而程序设计和硬件设计则当作正要的研究活动。认为“计算机科学等于程序设计”的观点在我们的许多课程里是很占上风的。导引性的课程是程序设计,程序设计技术安排在各核心课程中,而科学则在选修课中。这外观点阻止了重新组织各课程的进展,使心怀大志的最好的学生远离我们而去。它拒绝了一条统一的途径,以便把实验的和理论的计算机科学集成为课程的有机组成部分。

    今天,本领域已经足够成熟,使我们能用新的水到渠成的方式来描述它的知识本质。这在计算机科学与工程博士单位评审部的领导者们1984 7 月在犹他州召开的会议上进行了讨论。这一讨论及其他类似的讨论推动ACM IEEE 计算机学会组成攻关组去开创新途径。1985 年春,ACM 总裁Adele Goldberg ACM 教育委员会主席Robert Aiken IEEE计算机学会热心合作之下,任命了这个计算机科学核心攻关组。同时,计算机学会在ACM 的热心合作下,组成了计算机实验工作攻关组。

    我们希望,本报告所反映的核心攻关组的工作能产生比预定更多的效益。有了对本学科的核心的共同的认识,就能理顺利协调这两个学会发展行各分支学科和课题的进程。本报告可以作为进一步讨论计算机科学与工程作为一个专业的基础,刺激中学计算课程的提高,导致更大范围地承认计算科学是—个学科。

    我们的目的是创造一个关于本领域的新的思想方法。希经把一般性的议论融入学科的性质,寻求一个框架,但不是一个清单、一个导引,而不是一道命令。我们希望你采纳这一框架,并使之适合你自身的情况。我们高兴地介绍本学科的新的知识框架和各课程的新基础。

 

2 攻关组的任务

    攻关组接受了三项任务:

    (1)给出计算机科学的描述,该描述要强调基本问题及已有的重要成就。这个定义必须确认,本领域在不断变化,现在说的不过是持续进步过程中抢拍的一个镜头。

    (2)提出计算机科学的教学规范。该规范要符合传统的科学标准,强调本学科能力的培养,并且把理论、实验相设计紧密地结合在一起。

    (3)基于课程模型和学科描述,详尽地给出计算机科学导引性课程系列的一个例子。

    我们当即把我们的任务扩展到包括计算机科学与汁算机工程,因为这两个领域的核心材料没有基本区别。区别仅表现在处理这些核心材料的方式不同:计算机科学注重分析和抽象;计算机工程注重抽象和设计。这里,计算学科(discipline of computing)一词用来包括计算机科学和工程。

    有两件重要的事情没有包括在攻关组的任务之内。第一,本报告的课程推荐只列出了导引性的课程序列,末涉及整个核心课程的设计这样—个重大问题。而实际上如果对核心的其余部分没有新的设计,所建议的导引性课程也就没多大意义了。第二,导引性课程的目的是用严格而富有挑战性的方式把学生引到整个学科领域中去。我们所列的不过是这种途径的—个例子,或者说是我们关于计算的定义的一个“存在性证明”。我们希望各系应用本框架去确定他们自己的导引性课程,以满足自己的需要。

 

3 学科形态(Paradigms)

    籍以从事本领域工作的三种主要形态,或称文化方式,提供了我们定义计算学科的条件。

    第—个形态是理论(theory),基于数学,按统一的合理的理论发展过程.包含以下四个步骤:

    (1)特征化研究对象(定义)

    (2)假设它们之间可能的天系(定理)

    (3)确定这些关系是否正确(证明)

    (4)解释结果。

    数学家们认为,当发现错误和矛盾时,上述过程应该反复进行。

   

    第二种形态是抽象(abstraction),或称模型化,基于实验科学方法。按客观现象的研究过程,包含以下四步:

    (1)形成假设;

    (2)构造模型并做出预言;

    (3)设计实验并收集数据;

    (4)分析结果。

    科学家们希望,当模型的预言与实验结果不符时,这些步骤应该反复进行。虽然这一形态也可以称为“模型化”或“实验”,但我们仍采用“抽象”一词,因为它在学科里面比较通用。

 

    第三种形态是设计(design),基于工程,按为解决某一个问题而构作系统或装置的过程,包含以下四步:

    (1)叙述要求;

    (2)给定技术条件;

    (3)设计并实现该系统:

    (4)测试该系统。

工程师希望,当测试表明当的系统不满足技术条件时,上述步骤须反复进行。

 

    理论是数学科学的根本:应用数学家们都认为,科学的进展都是基于纯数学的。抽象(模型化)是自然科学的根本:科学家们相信,科学进展的过程基本上都是形成假设,然后用模型化过程去求证。类似地,设计是工程的根本:工程师们认为,工程进展基本上都是提出问题,然后通过设计去构造系统,以解决问题。关于数学、科学、工程三者哪一个更加重要的许多争论实质上都基于一个假定:三个过程(理论、抽象或设计)的某一个是最基本的。

    然而,仔细考察计算学科可以发现,关于计算的这三个过程是如此紧密的交织在一起,以致无法分清哪一个更加基本。有许多例子分别表明,抽象和设计阶段出现了理论;理论和设计阶段需要模型型化,而理论和抽象阶段,始终离不开设计。

    虽然这三种形态是紧密相关的,但毕竟是三种不同的形态,因为它们代表能力不同的领域。理论关心的是揭示和证明对象之间相互关系的能力。抽象关心的是应用这些关系去做出对现实世界的预言的能力。而设计则关心这些关系的某些特定的实现,并应用它们去完成有用的任务。应用数学家、计算科学家和设计工程师一般具有互不相同的专长。

    并且,计算领域的人们要研究计算工具,以支持人们需要的信息变换过程。例如,从设计方面说,复杂的VLSI 设计和模拟系统处我们能进行微型电路的有效和正确的设计,程序设计环境使我们能有效地进行软件设计。从模型化来说.超级计算机能评估数学模型,并做出对现实世界的预言,网络有助于传播科学实验的成果。从理论来说,计算机可以做定理证明,检查技术条件的相容性,检查反例,演示测试情况。

    计算处于应用数学、科学和工程三者的主要过程的交叉路口。这三个过程在本学科是同等重要和基本的,它是理论、抽象和设计三者唯—的交汇点。维护它们的力量是把实验和设计作为信息变换器的共同兴趣、在这些过程各阶段的计算支持的共同兴趣、和在有效性方面的共同兴趣。

 

4 程序设计的作用

    计算领域的许多活功并不是程序设计——例如,硬件设计、体系结构、操作系统结构、数据库的应用和模型验证——因此,认为“计算机科学等于程序设计”是错误的。那么,程序设计在本学科中的作用是什么?在课程中地位如何?

    显然,程序设计是本学科标准的实践活动的一部分,每一个计算工作者都必须有程序设计的能力。但这并不意味着,本学科就建筑在程序设计的基础上,也不意味着导引性课程必须是程序设计方面的课程。同样明显的是,涉及任何领域的特色都要通过语言,而计算学科的特色则大都寓于程序设计符号中。程序设计语言是涉足本领域特色的工具。因此.我们建议,程序设计作为核心课程的一部分,并把程序设计语言作为涉足计算学科重要特色的有用媒介。

 

5 计算的描述

    计算科学作为一个学科的描述包含四部分:(1)要求;(2)简短定义;(3)划分为分支领域;(4)分支领域的内容。我们的描述分四遍扫描,每一遍都大大详尽—步。

   我们这里所说的仅仅是一个变化着的动态领域的抢拍镜头。它是一个“活的定义”,它可以随时修改,以反映本领域的成熟性和变化。我们希望,各分支领域的内容可以经常修改,各分支领域的分法可以偶尔有修改,而简短的定义则很少修改。

 

5.1 要求

形成一个定义有许多方式。我们提出五个要求:

    (1)定义应该能为本领域以外的人所理解。

    (2)定义应该是本领域以内人们的着力点。

    (3)定义必须是明确的。

    (4)它必须阐明本学科的数学、逻辑和工程的历史渊源。

    (5)它必须指明本学科的基本问题和已有的重要成果。

   

    在形成描述的过程中.我们考虑了原有的几个定义,并且得出结论,满足这些要求的描述必须按复杂程度分层次。这里,简单地综述一下其他的定义。1967 年.NewellPerlis Simon[ 5] 主张,计算机科学是研究计算机及围绕它的主要现象的科学,而且说,反对这个定义就无异于表明其他科学都不是科学。但不管怎么争辩,许多人认为,这是一个循环定义,而且对外行人过于简略。不过,它仍是一个好的出发点,

因为我们的定义可以看作是列出了围绕汁算机的主要现象。

    计算科学资格审查部(Computing Sciences Accreditation BoardCSAB)精心修改了上述想法,用了一个如下定义:“计算机科学是关于计算机和计算的知识的总体。它有理论、实验和设计三部分,并且包括(1)理解计算装置、程序和系统的理论;(2)为概念的发展和测试所进行的实验;(3)设计方法论,算法和实现工具;以及(4)验证这些实现满足要求的分析方法。”

    第三个定义说,“计算机科学是研究知识表达及其实现的科学”。这个定义过于抽象,很少人能够对知识表达有相同的理解。具有同样一个问题的另一个定义是,“计算机科学是关于抽象和复杂性控制的研究”。是一个对物理、数学或哲学也适用的定义。

    Abelson Sussman 说过,“计算机革命是思维方法和思维表达方法的革命”。这种变化的本质是所谓过程性认识论的出现——它是从命令性的观点来研究知识的结构,而不是象经典数学那样用陈述性的观点来研究。数学提出一个精确处理“是什么”的问题的框架,而计算则提出精确处理“怎样做”的问题的框架[ 1]

 

5.2 简短的定义

    计算学科是对描述和变换信息的算法过程的系统研究,包括它的理论、分析、设计、有效性、实现和应用。全部计算科学的基本问题是“什么能(有效地)自动进行?

 

5.3 划分为分支领域

    我们花了相当的力气,把整个学科分为若干分支领域。一开始,我们想尽量少分一些分支领域.例如模型化和实现,或者算法和机器。然而,我们提出的各种分支都太抽象,界限也很模糊,恐怕大部分人都无法顺利地确认它们。

    然后,我们认识到,学科的基础包含在三个基本过程中——理论、抽象和设计。各分支领域也是用这些基本过程来完成它们自身的目的的。因此,各分支领域及其与这三个基本过程的关系的描述将是有用的。必须满足下列四个条件,才能算得上一个分支领域。

    (1)科目内容基础的协调一致;

    (2)实质性的理论部分;

    (3)有意义的抽象;

    (4)重要的设计和实现。

    并且,每一个分文必须被一个研究群体或几个相关的研究该分支的群体所确认。

    理论包括发展本分支数学基础的过程。这些过程又由其他领域的理论来支持。例如,算法和数据结构分支包括复杂性理论,它本身又需要图论支持。抽象处理潜在实现的模型化。这些模型忽略—些技术细节,而保存本质特性,服从分析的需要,提供计算被模型化系统行为的预言所需的工具。设计的过程是给定问题、把问题变换为设计的技术条件,然后,反复设想和考察各种各样的解,直到一个可靠的、可维护的、有详细资料的、经过验证的、付出的代价大小也符合要求的设计做比来为止。

    我们认为本领域可以分为几个分支领域:

    (1)算法和数据结构

    (2)程序设计语言

    (3)体系结构

    (4)数值和符号计算

    (5)操作系统

    (6)软件方法学和工程

    (7)数据库和信息检索系统

    (8)人工智能和机器人学

    (9)人机通信

 

5.4 分支领域的进一步研究

    为了结出各分支领域的内容,我们发现,用图1.1 所示的9 ×3 矩阵是有用的。每一行对应一个分支领域,各列分别定义它的理论、抽象和设计。每一格填入相应的句子,以描述有关事项及有意义的成就。

 

理论 抽象 设计

1.1 计算学科的定义矩阵课程设置模式

 

    已有大量科学文献的某些带共同性的群体没有作为分支领域来看待,出为它们在整个学科内部是基本的东西。例如,并行性渗透到所有分支领域(包括并行算法、并行语言、并行结构等),也遍及到理论、抽象和设计。类似的情况还有安全性、可靠性和性能评估。计算机科学家关心的是矩阵的前两列,而计算机工程师关心的是后两列。这给出的计算学科的全部描述见本文附录。

 

6 课程模型

6.1 学科能力的培养

    教育的目的是培养在某一领域的工作能力。工作能力,也就是有效的活动能力,是评价一个人在本领域进行独立实践活动的水平的标准。这个评价标准是基于本领域的历史的。培养能力的教育过程有五个步骤:(1)引起学习某领域的动机;(2)表明该领域能做什么;(3)揭示本领域的特色;(4)这些特色的历史根源;(5)实践这些特色[ 4] 。这—模型隐含了课程设置中一些有趣的问题。第一个问题是,计算领域的工作者应该具备什么能力?有两类能力:

    1.面向学科的思维能力:发现本领域新的特性的能力。这些特性导致新的活动方式和新的工具,以便使这些特性能被其他人所利用。

    2.使用工具的能力:使用本领域的工具有效地进行其他领域实践活动的能力。

   我们建议,把面向学科的思维能力作为计算专业课程设置的主要目的。同时,计算专业工作者必须充分熟悉工具,以便与其他学科的人们有效地合作,进行那些学科的设计活动。

   对能力的调查表明,某些领域目前设置的核心计算课程是不合适的。例如,计算领域的历史内容常不被强调,以致许多毕业生忽视计算学科历史,重复原来的错误。许多计算专业的学生毕业后进入商业数据处理,而他们学习的课程并没有注重培养这方面的能力。这种能力究竟应该由计算系来培养,还是由商业系来培养是一个长期争论的老问题。面向学科的思维能力必须基于坚实的数学基础,而理论目前还没有成为大多数计算课程的有机组成部分。计算领域典型的实践活动包括设置和进行实验、为大型协作课题作贡献、以及和其他学科的交流,以便让他们能有效地运用计算学科。但是,大多数课程忽视实验室操作、集体项目和交叉学科研究。

    前面的讨论还没有完全说清楚,计算课程究竟应该取得什么结果。我们在这里,也不打算作彻底的分析。我们希望,这个问题在新的核心计算课程设计时优先加以考虑。

 

6.2 终身学习

    应该设计一个课程,使毕业生们感到他们需要毕生学习。许多课程都是按讲授的形式,给出“答案”,而不是强调寻求全部学习基础的过程。我们建议下属委员会考虑改变教学规范,使学生们能够善于提出问题,查阅计算科学文献,并准备学习一辈子。

 

7 导引性课程系列

    在本课程设置模式中,引出本领域的学习目的和显示本领域的内容必须在课程的讲授和实践之前。导引性课程系列的目的就在于此。要培养学生能力的那些主要的计算领域必须充分深入和严格的教给学生。使他们领会学科的力量,以从取得在这些学科独立工作能力能够带来的利益。然后,课程再系统介绍该领域,揭露新概念和新性质,并让学生们实践。

    因此,我们建议导引性课程包含正规讲授和密切相关的每周一次实验。讲授强调基本原理、实验室技术知道怎么做。

    这种方式和过去物理科学和工程所用的一样。讲授强调长久不变的原理和概念,而实验室强调暂时性的材料和与当前技术有关的技能。例如,课堂上讲授算法的设计与分析,或者功能层网络协议的组织。而在相应的实验课上,学生们将为课堂上分析的算法写程序,并测量其远行时间,或者安装和测试网络接口,并测量他们的包吞吐量。

    根据这个意见,计算机科学的第一门课将不仅是介绍程序设计、算法和数据结构,还要介绍其他各分支学科的材料。数学和其他理论也要在合适的地方融合进去。我们希望导引性课程能够包含对整个学科严格而富有挑战性的综述。Feynman 的物理讲座是我们所希望的的导引性课程的范例。

   如果我们只强调按照本建议重新设计导引性性课程,而不重新设计全部的大学课程,那将是一个严重的错误。物理系的经验就包含了许多值得计算系借鉴的教训。

 

7.1 预备知识

    我们假定计算专业的学生在下列方面有一定基础:某种语言的程序设计、某些基于计算机的工具的使用经验,如字处理、展开片(Spreadsheet)[ ] 和数据库。由于计算机在高中和家庭的广泛使用,似乎可以假定大多数进入大学的学生已有这种基础.而只是对其他学生提供程序设计的一个补习性的课程就可以了。然而,我们发现,在高中对程序设计进行适当准备的假定是大有争议的。事实上很少有适当的准备。因此,我们建议计算系在导引性课程之前,提供程序设计和计算机工具的初等教程作为预备知识。并且建议系里允许在高中已有适当准备的学生免修该课。

    数学方面的正式的预备知识和公用基础知识就更难说清楚,而必须因地制宜。然而,计算科学资格审查部要求相当的数学知识,包括离散数学、微积分、概率论和统计。这些要求有些过分。在我们的初等计算课程的描述中,给出了这九个分支领域所需要的数学知识。我们还尽可能的给出了每一个课程模块所需要的数学基础。这样,各系可以自己去平衡他们所开的课程及对数学知识的要求。有时,为了某个特定的计算课题,而需要引入适当的数学基础,这是合适的。一般来说,应该让学生们尽早看到在他们学习计算的过程中

需要用到的有关的数学。

[ ] :译文为展开片,实际指的应该是电子表格

 

7.2 模块的组织

    导引性课程应能给出本领域统一的基础,又能按灵活而自然的方式由上一个题目转向下一个题目。因此,把这个课程分为九部分,每一部分对应一个分支领域是不合适的。这种简单的对应将使课程变成一个大众烩,各部分之间很难连接。满足这一要求的题目顺序是:

 

基本算法概念

计算机组织(“冯·诺依曼”)

数学的程序设计

数据结构和抽象

可计算件的限制

操作系统和安全性

分布式计算和网络

人工智能模型

文件和数据库系统

并行计算

人机接口

 

    我们把题目分成11 个模块,每一模块包括该科目的有代表性和挑战性的材料,而不是对每一部分材料肤浅的拼凑。每一模块从定义矩阵的几个方块中抽取材料。因而,许多模块将不与定义矩阵的各行一一对应。例如,我们给出的课程的第一个模块题为基本算法概念。它只限于研究时序算法,包括形式化和理论的作用、程序设计方法、程序设计概念、有效性和特定算法。它抽取定义矩阵的第一、第二、第四和第六行的信息。后面关于分布式计算和网络以及关于并行计算的模块推广第一模块的材料,并从定义矩阵的第三和第五行中抽取新的材料。

    一般来说,每一模块包括讲授所需的理论和大部分抽象的课时。理论一般只在需要时才引入。每一模块都紧密结合实验课,实验作业的种类包含在模块规范中。我们草拟的规范是一个三个学期的课程系列,每学期讲授42 次并进行35 次实验。该规范本文未予列出,但已收入报告全文中。

    我们重申,本规范只是企图提供从学科描述到导引性课程系列的对应关系的一个实例,并不是所有导引性课程的一个清单。其他方式可参考某些学院和大学现有的导引性课程。

 

8 实验室

    我们描述了一个课程,它把原理和技术分开,但保持二者的统一。我们已经推荐,课堂上讲授原理,实验室培养技术,使二者得以紧密结合。

 

实验室工作有三个目的:

    1.实验室工件应该表明,课堂上讲授的原理怎样运用于实际软件和硬件的设计、实现和测试。实验室必须提供具体经验,以帮助学生理解抽象概念。这些经验对提炼学生关于实际计算的直觉知识、对强调建造正确有效的计算机程序和系统所需的脑力劳动都是极其必要的。

    2.实验室要强调怎样做才能导致一个好的计算的过程。必须强调程序设计,而不光是程序本身。必须强调实验室技术、硬件能力的理解、软件工具的正确使用;文档的正确使用以及实验和方案的适当文档。主机上要求许多的软件工具,以利于在附加的子系统上构作、控制和监控实验。实验室应教会学生如何适当的使用这些工具。

    3.实验室应介绍试验方法,包括试验的使用和设计、软件和硬件监控器、结果的统计分析以及研究结果的适当陈述。学生们必须学会把细心地试验和粗心地观察区别开来。为了达到这些目的,必须仔细计划和管理实验室的工作。学生们必须按时到达实验室。一般每周三小时。实验主作业必须事先计划好,并且给每一个学生书面的实验目的与方法。这份幅面材料的深度要和学生过去的实验经验相适应。对最初的几个实验,这份材料需要更加详细。实验室作业应在实验主教师的指导下进行,以保证每个学生运用正确的方法。导引性课程的实验需要仔细辅导,而且需要详细计划试验步骤。因此,平均每个学生所需的实验室工作人员人数应该比高级实验室多一些。

    验课题应与课堂讲授的材料相协调。个人实验课题一般探讨硬件与软件的结合。某些实验室作业强调简化软件开发过程的技术与工具;有些则强调分析和测量已有软件或比较已知的算法;有的则强调基于课堂上所学原理的程序开发。

    实验室作业必须是自包含的。也就是说,中等水平的学生应能在指定时间内完成。实验室作业应该鼓励学生自己发现和学习一些东西。应该要求学生有一个试验记录本,以记录试验、观察和数据。同时,要求学生保存他们的软件,并建立软件库,以备以后实验课题之用。

    我们希望,实验窒应该和课堂一样,给学生留家庭作业,并要求使用实验室管辖之外的计算机。换句话说,有组织的实验课是补充,而不是代替通常的程序设计作业和书面作业。

    在相当数量的程序开发实验室里,作业是修改或完成由教师给出的一个已有的程序。这就强制学生去读写好了的程序,并提供软件集成的经验,产生更大、更使学生满意的程序。

   计算技术是在不断变化的。因此,对实验室应该有的硬件系统、软件系统、仪器和工具,很难给出详细的技术要求。实验室设备和人员的选择应遵循下列原则:

    1.实验室必须装备有跟上时代的系统和语言。程序设计语言对学生形成对计算的看法有重要影响。实验室应该使用那些能使学生养成良好习惯的系统。尤其重要的是,在核心课程里要避免使用过时的系统(硬件和软件)

    2.硬件和软件要加强维护。有故障的装置将使学生受挫,干扰他们的学习。必须配备合适的工作人员来维护实验室的硬件和软件。这和其他学科的实验室情况类似。

    3.功能齐全是重要的(这包括分时系统的适当的响应时间)。在学生刚开始接触系统时,限制学生在语言或系统的一个小的子集中也许是有用的,但当学生有了进步,这些限制就应该取消。  

    4.好的程序设计工具是需要的。编译器受到很大重视,但其他程序设计工具也同样经常用到。例如,在UNIX 系统中,学生们必须用像emacs 那样的编辑器,并学会使用像shellgrep,awk make 等工具。存储和处理的软件工具必须充足,使实验室里随时都可以用这些工具。

    5.必须提供硬件和仪器方面必要的支持。某些课题要求学生连接硬件单元的线路,进行信号测量,监视数据通路等。应该能充分提供小部件、连接器、电缆线、监视装置和测试仪器等。

    IEEE 计算机学会的面向目的的实验室开发攻关组对此作了深入的研究。他们的报告讨论了本课程各种水平的实验室所需资源(即人力和设备)

 

9 资格审查

    以本课程为倒的资格审查工作在计算科学资格审查部(CSAB)的标准指导下已经完成。如何适应CSAB 标准的详细情况超出了本委员会的范围。

 

10 结论

    本报告企图提出关于计算科学作为一个学科的新思路,即在揭示内容时,强调基本概念、原理和特性。同时,也建议按照其他学科的教育模式重新设计本学科的核心课程。先讲解有用特性的存在性,然后进行培养能力的实践。这一方法用一个严谨的导引性课程为例,说明如何在课堂卜讲授概念和原理,在有关的公共实验里教授技术。

    系里不能简单地用新课取代现有的导引性课程,必须重新设计该课,使新的导引成为统一整体的一部分。因此,我们建议ACM 成立一个委员会继续工作,以完仝核心课程的重新设计。为了使新课程成为本领域的有机组成部分,许多实际问题有待研究。例如:

1.基于新概念形式化,教师需要重新设计他们的课程。

2.现在还没有基于本文框架的教材或教科书。

3.为了本文建议的教育使命,目前大多数系的实验室、设备和材料都小相适应。

4.助教和教师都不熟悉这一新观点。

5.在高中阶段对计算科学准备很好的不多。

    我们知道,我们的许多建议是有挑战性的,距离实现还有很长的路要走。但是,我们相信,按照本建议改进计算科学教学的努力是有价值的,欢迎你和我们一起为此而努力。

 

你可能感兴趣的:(工具,算法,工作,作业,数据结构,语言)