计算机科学各主领域及其基本问题本节综合CC2013和CC2001报告,给出计算机科学各领域的简介,以及计算机科学中各领域的基本问题。以下学科领域按字母先后顺序排列,不分轻重。1.算法与复杂性(AlgorithmsandComplexity,AL)算法是计算机科学和软件工程的基础。现实世界中任何软件系统的性能仅依赖于两个方面:一方面是所选择的算法;另一方面是在各不同层次实现的效率。对所有软件系统的性能而言,好的算法设计都是至关重要的。此外,算法研究能够深刻理解问题的本质和可能的求解技术,而不依赖于具体的程序设计语言、程序设计模式、计算机硬件或其他任何与实现有关的内容。计算的一个重要内容就是根据特定目的选择适当的算法并加以运用,同时认识到可能存在不合适的算法。这依赖于对那些具有良好定义的重要问题求解算法的理解,以及认识到这些算法的优缺点和它们在特定环境中的适宜性。效率是贯穿该领域的一个核心概念。下面,给出算法与复杂性领域的基本问题。(1)对于给定的问题类,最好的算法是什么?要求的存储空间和计算时间有多少?空间和时间如何折中?(2)访问数据的最好方法是什么?(3)算法最好和最坏的情况是什么?(4)算法的平均性能如何?(5)算法的通用性如何?2.体系结构(ArchitectureandOrganization,AR)计算机在计算技术中处于核心地位。如果没有计算机,计算学科将只是理论数学的一个分支。作为计算专业的学生,都应该对计算机系统的功能部件、功能特点、性能和相互作用有一定的理解,而不应该只将计算机看作是一个执行程序的黑盒子。了解计算机体系结构和组织还有一定的实际意义。为了构造程序,需要理解计算机体系结构,从而使该程序在一台真正的机器上能更有效地运行。在选择用于应用的系统时,应该理解各种部件之间的折中,如CPU、时钟频率与内存大小的折中。下面,给出体系结构领域的基本问题。(1)实现处理器、内存和机内通信的方法是什么?(2)如何设计和控制大型计算系统,而且使其令人相信,尽管存在错误和失败,但它仍然是按照我们的意图工作的?(3)哪种类型的体系结构能有效地包含许多在一个计算中能并行工作的处理元素?(4)如何度量性能?3.计算科学(ComputationalScience,CN)从该学科诞生之日起,科学计算的数值方法和技术就构成了计算机科学研究的一个主要领域。随着计算机问题求解能力的增强,该领域(正如该学科一样)已经在广度和深度两方面得到了发展。现在,科学计算本身就代表了一个学科,一个与计算机科学密切相关的学科。为此,CC2001任务组只是将它划为计算机科学的一个主领域,但不确定任何核心知识单元,也就是说,尽管它是计算机科学的一个组成部分,但不要求每个教学大纲都必须包含这些内容。对于希望学习这部分知识的人,该领域提供了许多有价值的思想和技术,包括数值表示的精度、误差分析、数值技术、建模和仿真。同时,学习过该领域课程的学生有机会在宽阔的应用领域中应用这些技术,例如下面这些领域:(1)分子力学。(2)流体力学。(3)天体力学。(4)经济预测。(5)优化问题。(6)材料的结构化分析。(7)生物信息学。(8)计算生物学。(9)地质建模。(10)X断层摄影术的计算机化。下面,给出科学计算领域的基本问题。(1)如何精确地以有限的离散过程近似表示连续和无限的离散过程?(2)如何处理这种近似所产生的错误?(3)给定某一类方程在某精确度水平上能以多快的速度求解?(4)如何实现方程的符号操作,如积分、微分以及到最小项的归约?(5)如何把这些问题的答案包含到一个有效的、可靠的、高质量的数学软件包中?4.离散结构(DiscreteStructures,DS)离散结构是计算机科学的基础内容。尽管很少有计算机科学家专门从事离散结构的研究,但计算机科学许多领域的工作都要用到离散结构的概念。离散结构包括集合论、数理逻辑、代数系统、图论和组合数学等重要内容。离散结构的内容在数据结构、算法以及其他计算机科学领域都有广泛的运用。例如,在形式规格、验证以及密码学的研究和学习中,需要有生成并理解形式证明的能力;在计算机网络、操作系统、编译系统等领域要用到图论的概念;在软件工程和数据库等领域需要使用集合论的概念。随着计算机科学与技术的日益成熟,越来越完美的分析技术被用于解决实际问题。为理解将来的计算技术,需要有坚实的离散结构基础。计算学科的根本问题是“能行性”的问题。而凡是与“能行性”有关的讨论,都是处理离散对象的。因为非离散对象,即所谓的连续对象,是很难进行能行处理的。因此,“能行性”这个计算学科的根本问题决定了计算机本身的结构和它处理的对象都是离散型的,甚至许多连续型的问题也必须在转化为离散型问题以后才能被计算机处理。例如,计算定积分就是把它变成离散量,再用分段求和的方法来处理的。正是源于计算学科的根本问题,以离散型变量为研究对象的离散数学对计算技术的发展起着十分重要的作用。同时,又因为计算技术的迅猛发展,离散数学越来越受到重视。为此,CC2001特意将它从CC1991的预备知识中抽取出来,列为计算机科学知识体的第一个主领域,命名为“离散结构”,以强调它的重要性。CS2013继续强调该领域的重要作用,在新增了4个领域,在总的核心学时基本保持不变的情况下,仅该领域的核心学时减少了2个,维持在较高的41个核心学时上。5.图形学与可视化(GraphicsandVisualization,GV)图形学与可视化领域可以划分成以下4个相互关联的子领域。(1)计算机图形学计算机图形学是研究怎样用计算机生成、处理和显示图形的一个学科分支领域。在计算机图形学的研究过程中,有以下具体要求:①要求表示信息和构造应有助于图像的产生和观察。②要求方便用户,使之能够通过精心设计的设备和技术与模型进行交互。③要求提供绘制模型的技术。④要求设计有助于图像保存的技术。计算机图形学的目标是对人的视觉中心及其他认知中心有进一步深入的了解。(2)可视化可视化是指使用计算机图形学和图像处理技术,将数据转换成图形或图像在屏幕上显示,并进行交互处理的理论、方法和技术。当前的可视化技术主要是探索人类的视觉能力以及声音和触觉(触摸)。其目的在于通过它们进一步发现人类信息的处理过程。(3)虚拟现实虚拟现实是综合利用计算机三维图形技术、仿真技术、传感技术、显示技术、网络技术等合成的一种虚拟环境,这种环境是计算机生成的一个以视觉感受为主,也包括视觉、触觉的综合可感知的人工环境,是计算机与用户之间的一种更为理想化的人—机界面形式。(4)计算机视觉计算机视觉是研究怎样利用计算机实现人的视觉功能(包括对客观世界的三维场景的感知、识别和理解)的一个分支领域。对计算机视觉的理解和实践取决于计算学科中的核心概念,但也和物理、数学和心理学等密切相关。下面,给出图形学和可视化计算领域的基本问题。(1)如何选择支撑图像产生以及信息浏览的更好模型?(2)如何提取科学的(计算和医学)和更抽象的相关数据?(3)图像形成过程的解释和分析方法。6.人机交互(Human-ComputerInteraction,HC)人机交互的重点在于理解作为交互式对象的人的行为,知道怎样使用以人为中心的方法来开发和评价交互式软件系统。单元HC1(人机交互基础)和单元HC2(建立简单的图形用户界面)是最基本的内容,需要学生掌握。剩余单元的内容可作为高年级的选修课程。下面,给出人机交互领域的基本问题。(1)表示物体和自动产生供阅览的照片的有效方法是什么?(2)接收输入和给出输出的有效方法是什么?(3)怎样才能减小产生误解和由此产生的人为错误的风险?(4)图表和其他工具怎样才能通过存储在数据集中的信息去理解物理现象?7.信息保障与安全(InformationAssuranceandSecurity,IAS)信息保障与安全是CS2013划分的一个新领域,是世界公认的信息技术与计算的重要依靠,也是信息控制与处理过程的集合,该集合即包括技术方面的内容也包括政策方面的内容,其目的在于通过保证其可用性、完整性、可认证性与机密性,用不可否认性来保护和定义信息和信息系统。保障包括了认证,使得当前的与过去的过程和数据都是有效的,保障与安全的共同作用使信息变得更加可靠和完整。下面,给出信息保障与安全领域的基本问题。(1)如何定义信息的不可否认性?(2)如何保证信息的可用性、完整性、可认证性与机密性?(3)安全规则与监管的有效策略是什么,如何评估?8.信息管理(InformationManagement,IM)信息管理几乎在所有使用计算机的场合都发挥着重要的作用。它包括信息获取、信息数字化、信息表示、组织、转化和信息的表现;有效地访问和更新存储信息的算法、数据建模和数据抽象以及物理文件的存储技术、共享数据的信息安全、隐私性、完备性和保护。要求学生能够建立概念和物理上的数据模型,对于给定的问题,能够选择和实现合适的信息管理解决方案。下面,给出信息管理领域的基本问题。(1)使用什么样的建模概念来表示数据元素及其相互关系?(2)怎样把基本操作(如存储、定位、匹配和恢复)组合成有效的事务?(3)这些事务怎样才能与用户有效地进行交互?(4)高级查询如何翻译成高质量的程序?(5)哪种机器体系结构能够进行有效的恢复和更新?(6)怎样保护数据,以避免非授权访问、泄露和破坏?(7)如何保护大型的数据库,以避免由于同时更新引起的不一致性?(8)当数据分布在许多机器上时如何保护数据、保证性能?(9)文本如何索引和分类才能够进行有效的恢复?9.智能系统(IntelligentSystems,IS)人工智能关注的是自主系统的设计和分析。这些系统有些是软件系统,而有些系统还配有传感器和传送器(如机器人或航天器),一个智能系统要有感知环境、执行既定任务以及与其他代理进行交流的能力。这些能力包括计算机视觉、规划和动作、机器人学、多代理系统、语音识别和自然语言理解等。智能系统依赖于一整套关于问题求解、搜索算法以及机器学习技术的专门知识表示机制和推理机制。人工智能为求解其他方法难以解决或者不太现实的问题提供了一些技术,包括启发式搜索和规划算法、知识表示的形式化机制、机器学习技术以及语言理解、计算机视觉、机器人学等领域中所包含的感知和动作问题的方法。要求学生能够针对特定的问题选择合适的方法解决问题。下面,给出智能系统领域的基本问题。(1)基本的行为模型是什么?如何建造模拟它们的机器?(2)规则评估、推理、演绎和模式计算在多大程度上描述了智能?(3)通过这些方法模拟行为的机器的最终性能如何?(4)传感数据如何编码才使得相似的模式有相似的代码?(5)电机编码如何与传感编码相关联?(6)怎样学习系统的体系结构?(7)这些系统是如何表示它们对这个世界的理解的?10.网络与通信(NetworkingandCommunication,NC)计算机与通信网络的发展,尤其是基于TCP/IP的网络的发展,使得网络技术在计算学科中变得更为重要。在CC2001报告中,该领域包括有计算机通信网络的基本概念和协议、多媒体系统、Web标准和技术、网络安全、移动计算以及分布式系统等传统网络的内容。CS2013认为,这些内容已得到发展和分化,因此对该领域进行了重组,将主要的关注放在该领域的网络与通信方面,将网站应用和移动设备开发的内容放在基于平台的开发(PBD)领域中,将安全部分的内容放入新的信息保障和安全(IAS)领域中。该领域的知识单元包括:网络应用;可靠数据传输;路由与转发;局域网;资源分配;移动网络;社会网络等。CC2001特别强调了在该领域进行实践教学的重要性,认为实践教学能够大大地加强学生对该领域基本概念的理解。在CC2001的基础上,CS2013继续强调了该领域的重要性,报告认为,现在许多计算的应用脱离网络是无法继续工作的,这些应用对底层网络的依赖在未来将会得到加强,报告认为,网络的设计依赖实际的约束条件,要求通过使用网络工具、编写网络软件等方式,向学生展示这些实际的约束条件。网络课程有很多不同的组织方式。一些教育者倾向于“自顶向下”的教学方