计算机科学与技术一级学科
面向21世纪系列教材一体化建设研究报告(1,2,3)*
http://www.ndip.cn/computer/modernCS/yitihua.htm#_ftn1
http://www.ndip.cn/computer/modernCS/yitihua.htm#_ftn1
Research Report on the Textbook Construction and the Design for Textbook
in an Organic
Whole Way for Computer Science and Technology in Universities
赵致琢1、刘椿年2、许满武3、陈国良4
摘要: 13-22项目组计算机科学与技术一级学科教育与教学改革理论研究成果逐渐受到国内外学术界的重视,学科教育如何实现从外延模式和经验办学向内涵发展模式和科学办学的转变已经成为教学改革的一个关键环节,其核心问题之一是能否推出反映学科人才培养科学理论体系内涵和学科发展潮流,基于内涵发展模式的高质量的系列教材。本文系统地研究和回答了这些问题,提出了学科系列教材建设的指导思想、创作原则、结构框架、内容取舍,以及学科系列教材一体化设计方案要点。依据这份报告,由国防工业出版社《现代计算机科学与技术教材系列》编审委员会组织创作、编审的新一代学科系列教材的工作已经全面展开。
Abstract. As the framework of theoretical systems on education for computer science and technology in universities is advanced by the project 13-22 group, it will be feasible to make the extensive mode and experienced running a major way into the intensive mode and scientific one way for the education of computer science and technology. One of the kernel problems is how to construct a series of advanced textbooks during implementation of the transformation. The problem was answered systematically and a design scheme for these textbooks in an organic whole way was given in this paper.
关键词: 学科方法论、基本问题、教材建设、一体化设计、教育改革
Keywords. Methodology, Essential Problem, Textbook Construction, The Design for Textbook in an Organic
Whole Way , Reform of Education
1 引言
自从计算机科学与技术学科专业教育诞生之日起,学术界就开始了长期的、连续的教材创作工作,陆续推出了各式各样的教材。在中国,伴随着高等学校学科专业教育的兴起,采用翻译、编译、编写、编著、引进、创作等多种形式,大量专业教材不断地进入这个领域。众所周知,无论是国内还是国外,长期以来学科专业教材的建设确实为培养一大批专业人才做出了巨大的贡献。然而,当人类进入21世纪,高等教育面临着学科不断深化和社会深刻变化带来的各种挑战时,如果我们怀着创新的冲动和理性的心态,带着冷峻的目光和挑剔的眼神审视高等学校学科专业办学现状和过去业已出版的大量教材,期望冲破高等学校学科专业教育现有的模式,通向自由、理想的科学王国时,以往人才培养模式和教材不能满足学科专业高质量教学要求的一系列问题便突现在我们的面前。迄今为止,国内外所有高等学校在各学科专业教育中均沿用外延模式和经验方式办学,并未在每个学科建立学科人才培养的科学体系,这直接导致教材建设缺乏科学理论指导。经验办学方式虽然包涵科学的成分,但不是科学方式。换言之,当前不仅学科专业教育的办学模式和发展道路面临方向性的选择,而且,学科专业教材的建设也同样对学术界提出了严峻的挑战。
半个世纪学科的高速发展和不断深化,使得学科专业教育由外延发展模式转向内涵发展模式,由经验办学方式转向科学办学方式成为学科教育与教学改革的必由之路。学科专业教育的这样一种发展道路和发展趋势必然要求学术界提供一体化、高水平、内容反映内涵发展要求的系列教材。可是,在过去的20世纪,无论是国内还是国外,真正能够为新世纪学科高质量创新人才的培养提供有力的支持,反映内涵发展模式要求的一体化的学科系列教材并没有建立。究其原因,在于长期以来缺乏学科人才培养的科学理论体系,教材建设理论研究薄弱。
本文是基于教育部13-22项目组提出的计算机科学与技术一级学科人才培养科学理论体系,以培养学科高质量创新人才为目标,反映内涵发展模式的一级学科面向21世纪系列教材建设一体化的系统研究报告(A类模式部分)。
2 背景体系介绍
2000年,13-22项目组完成了一套教学改革方案(A and B方案)及其相关的学科人才培养科学理论体系(框架)的研究报告[1,2,3],就计算机科学与技术一级学科人才培养如何从外延发展模式转向内涵发展模式,从经验办学方式转向科学办学方式进行了系统的阐述。为了建立新的高起点、高标准、反映内涵发展要求的学科人才培养模式和办学的发展道路,研究报告围绕学科的定义,学科的基本问题,学科发展的主线和主流方向,学科的起源、发展历史、现状和发展趋势,学科发展的特点和内在规律,学科基本工作流程方式,学科形态,核心概念,典型方法,典型实例,学科的逻辑基础,学科知识组织结构及其演变,学科教育与教学的特点、内在规律和经验教训,数学、物理学、电子科学基础在整个学科中的地位和作用,实验教学在整个学科中的地位和作用,计算机科学(技术)理论在整个学科中的地位和作用,计算机科学与技术同其他学科之间的关系,学科教育与教学过程管理的科学化,如何培养高素质专业技术人才,如何培养创新人才,以及人才成长环境建设等内容进行了深入的、系统的研究和论述。在此基础上,结合高等教育的一般原理,人才培养目标和中国的国情,提出了学科教育与教学改革的指导思想。
高等教育作为一项特殊产业,学科专业教学计划与课程体系的执行必须规范,教育与教学改革主要是立足于教育思想与观念,教育方式与方法,教育与教学内容,教学手段与教学法,管理体系与运行机制的改革,人才培养目标、人才培养模式、教学计划与课程体系以及教材的改革是上述各项改革的具体体现,全面建立学科人才培养的科学体系即是教育与教学改革的技术目标,也是教育与教学改革的必由之路。
一个学科人才培养的科学体系主要包括三方面的内容:
⑴ 学科人才培养的科学理论体系;
⑵ 基于学科人才培养的科学理论体系,由若干学校形成的分层次、分类学科
人才培养的示范基地;
⑶ 学科人才培养的质量保证体系;
正是基于这样一种认识,我们以全面建立学科人才培养的科学(理论)体系为目标,在深入分析和继承国内外前人有价值的研究成果的基础上,开展了一系列系统的、有深度的理论创新研究,提出并初步建立起了一个具有自主知识产权,适合中国国情,反映内涵发展模式要求的学科人才培养科学理论体系(框架)。
3 内涵发展模式和系列教材建设的认识基础
3.1内涵发展模式的认识基础
总结学科专业教育近半个世纪以来所走过的历程,在学科专业教育如何实现内涵发展模式方面,我们逐步形成了下列认识基础[1,2,3]。
⑴ 重新给出学科的定义;
⑵ 学科的三个基本问题和学科的三条发展主线
三个基本问题:
计算的平台和环境问题,常归结为各个不同层面上的计算模型问题;
计算过程的能行操作和效率问题,常归结为某一恰当计算模型上的算法问题;
计算的正确性问题,常归结为与某一恰当计算模型对应的语言的语义学问题。语言也是计算模型,语言是计算模型的外在表示形式。
学科发展的三条主线:
计算模型与计算机系统;
计算模型、语言与软件开发方法学;
应用数学与计算机应用。
⑶ 学科的逻辑基础和数学基础
计算机科学与技术学科的逻辑基础与构造性数学的逻辑基础是一致的,即构造性逻辑。直觉主义逻辑与形式主义逻辑的思想方法在学科的发展中都有广泛的应用,它们构成了整个学科最重要的逻辑思想基础。但是,从图灵机的诞生、学科基本问题、学科发展的历程、特点和规律进行考察,直觉主义逻辑仍是整个学科赖以发展的最主要的基石之一。
计算机系统运行的严密性,学科理论方法与实现技术的高度一致是计算机科学与技术学科同数学学科密切相关的根本原因。
从学科特点和学科方法论的角度考察,计算机科学与技术学科的主要基础是数学,特别是数学中以代数、逻辑为代表的离散数学,而程序技术和电子技术仅仅只是计算机科学与技术学科产品或实现的一种技术表现形式。
数理逻辑与抽象代数是学科最重要的两项数学基础,它们的研究思想和研究方法在学科许多有深度的领域得到了最广泛的应用。可以从下列几个方面认识数理逻辑和代数在学科中的地位和作用:
① 首先,从计算模型和可计算性的研究来看,可计算函数和可计算谓词是等价的,相互之间可以转化。这就是说,计算可以用函数演算来表达,也可以用逻辑推理来表达。作为计算模型可以计算的函数恰好与可计算谓词是等价的,而且,数理逻辑本身的研究也广泛使用代数方法,同时,逻辑系统又能通过自身的无矛盾性保证这样一种计算模型是合理的。由此可见,作为一种数学形式系统,图林机及其与它等价的计算模型的逻辑基础是坚实的;
② 实际计算机的设计与制造中,使用数字逻辑技术实现计算机各种运算的理论基础是代数和布尔代数。布尔代数只是在形式演算方面使用了代数的方法,其内容的实质仍然是命题逻辑。依靠代数操作实现的指令系统具有(原始)递归性,而数字逻辑技术和集成电路技术只是计算机系统的一种产品或实现的技术形式;
③ 从计算机程序设计语言方面考察,语言的理论基础是形式语言、自动机与形式语义学。而形式语言、自动机和形式语义学所采用的主要研究思想和方法来源于数理逻辑和代数。程序设计语言中的许多机制和方法,如子程序调用中的参数代换、赋值等都出自数理逻辑的方法。此外,在语言的语义研究中,四种语义方法最终可归结为代数和逻辑的方法。这就是说,数理逻辑和代数为语言学提供了方法论的基础;
④ 在计算机体系结构的研究中,像容错计算机系统、Transputer计算机、阵列式向量计算机、可变结构的计算机系统结构及其计算模型等都直接或间接和逻辑与代数密不可分。如容错计算机的重要基础之一是多值逻辑,Transputer计算机的理论基础是CSP理论,阵列式向量计算机必须以向量运算为基础,可变结构的计算机系统结构及其计算模型主要采用类似于语义学中的逻辑与代数的方法;
⑤ 从计算机各种应用的程序设计方面考察,任何一个可在存储程序式电子数字计算机上运行的程序,其对应的计算方法首先都必须是构造性的,数据表示必须离散化,计算操作必须使用逻辑或代数的方法进行,这些,都应体现在算法和程序之中。此外,到现在为止,算法的正确性、程序的语义及其正确性的理论基础仍然是数理逻辑,或进一步的模型论。真正的程序语义是模型论意义上的语义;
⑥ 高等代数和一般抽象代数只解决了个体对象为简单个体的论域上的大量运算问题,但是对具有结构特征和属性成分的复杂个体的论域上的运算问题,表达和处理是不方便的,常常是有困难的。针对这类对象的运算操作及其正确性等语义学问题,有必要发展泛代数和高阶逻辑理论。
数学学习除了对学生具有一般理工科意义上的基础训练以外,更重要的是要通过严格的训练,逐步实现思维方式的数学化。
目前,国内外大多数计算机科学与技术工作者数理逻辑基础知识只涉及到命题演算、一阶谓词演算和少量的逻辑系统演算特征(范式部分),近世代数基础知识只涉及群、环、域和格,尚未具备逻辑演算的系统特征中等值代换(替换)和逻辑公式的计算(无嵌套范式和逻辑演算归约等)基础知识,模型论基础知识和泛代数基础知识,这在今后深入研究具有复杂结构的对象的表示、操作和计算的正确性、人工智能的逻辑基础和非确定性计算问题时常常是不够的。要使工程师在今后的知识更新中能比较顺利地深入掌握新知识,必须加强数理逻辑、抽象代数、集合论、图论、理论计算机科学的修养。因为,理论计算机科学的内容中包含了大量本学科最基本的方法和技术思想,它们可以在学科的深层统一学科的大量知识。
⑷ 学科知识组织结构及其演变
学科经过几十年的发展变化,学科知识组织结构日渐庞大,各主流发展方向所需要的共同的基础已经发生了很大的改变,从早期的电子技术、布尔代数、计算机组成原理、程序设计基础逐步演变为高等逻辑、计算模型与计算理论、新一代计算机体系结构、并行与分布式算法设计基础、形式语义学这五大专业基础。目前,国内外研究生核心课程的最高起点是:高等逻辑、高等计算机体系结构、并行(或分布式)算法设计基础、形式语义学。学科知识组织结构及其演变对本科教学内容和要求产生的影响将是深远的。这就要求本科数学基础教学内容除全面提升层次外,还要求算法设计与分析、形式语言与自动机理论、可计算性与计算复杂性、计算机体系结构、程序设计语言原理等课程在教学上应尽可能升至72学时的课程,全面提升教学内容的层次和深度,以保证研究生核心课程的整体升级。
⑸ 计算机科学与技术和其他学科的关系
同计算机科学与技术学科联系最紧密的学科是哲学中的逻辑学,数学中的构造性数学,电学中的(微)电子科学、通信系统原理、结构与安全性。在不远的将来可能是光电子科学、生物科学中的遗传学和神经生理学,物理和化学科学中的精细材料科学,其影响的切入点主要集中在信息存储、信息传递、认知过程、大规模信息传输的介质和机理方面。这些内容目前尚不稳定,暂不宜进入教材。但各校可以在高年级积极地开展相应的学术讲座,让学生了解学科发展的前沿和动向。本系列教材按照内涵发展优先的要求,应该在大学物理学基础课程教学中,为学生未来拓展这方面的知识提供必要的物理学核心基础知识,防止在物理学课程的教学中片面强调实用。
量子计算与生物计算是近年来开始引起关注的新领域,但是,这两个领域是否属于计算机科学与技术的范畴目前尚未有定论。因此,目前可以暂时不考虑这些内容进入本科教学计划。
⑹ 学科方法论(学科工作流程方式,学科形态,核心概念,典型方法,典型实例)
对现实世界中被研究的对象进行抽象,建立必要的基本概念,建立和运用数学工具、方法对其进行基础和应用基础研究,研究概念的基本性质、概念与概念之间的关系,揭示对象发展变化的内在规律,为实验设计和工程设计实现提供方法和技术思想,开展实验、工程设计与实现工作是本学科的基本工作流程方式。
每一个学科都有其自身的知识组织结构、学科形态、核心概念[4]和基本工作流程方式。理论、抽象和设计是学科三个基本的学科形态。所谓学科形态,是指从事该学科领域工作的文化方式。已知学科存在三种主要的学科形态,即理论、抽象和设计。
学科形态理论的基本特征是其研究内容的构造性数学特征,是区别于更广泛的数学科学学科形态的典型特征。学科形态抽象主要出现在学科中与硬件设计和实验有关的研究之中。当学科理论比较深奥,理解较为困难时,不少科研人员在大致了解理论、方法和技术的情况下,基于经验和技能常以这种学科形态方式开展工作。学科形态设计广泛出现在学科中与硬件、软件、应用有关的设计和实现之中。当学科理论上已解决某一问题后,科研人员在正确理解理论、方法和技术的情况下,可以十分有效地以这种学科形态方式开展工作。
学科形态抽象,是对客观现象和规律的抽象,是对客观现象和规律的描述和刻划。在这一过程中,与具体客观现象和规律无关或对具体客观现象和规律影响不大的因素被去掉了,其内容构成了学科理论的一部分,即技术理论中其内容比较难于用简洁的数学形式描述的那一部分。学科形态理论,也是一种抽象,是对客观现象和规律的数学化、形式化描述,是对能行问题及其求解过程的刻划,其内容构成了学科的数学基础和理论计算机科学。本质上,这两种学科形态都是对客观现象和规律的抽象,只是方式的不同。学科形态设计是对学科理论的工程化实现。
理论和抽象(或称模型化)在本质上的统一,学科理论的构造性特征与全部学科的核心问题,即能行问题一起决定了计算机科学与计算机工程在本质上并没有区别。
学科的研究与开发中,三种学科形态并不是孤立出现的,它们常常交织在一起。经验告诉我们,没有抽象形态的支持,理论研究就失去了背景参照;没有理论的指导,工程开发往往会误入歧途。有许多例子分别表明,抽象和设计阶段出现了理论,理论和设计阶段需要模型化,而理论和抽象阶段离不开设计,它们必须考虑到现实是否能行。
三种不同的学科形态实际上反映了在学科领域内从事工作的三种文化方式。理论关心的是以形式化方式揭示对象的性质和相互之间的关系,这是一种按照某种科学规律构筑人工科学的典型模式。抽象关心的是以实验方式揭示对象的性质和相互之间的关系。而设计关心的是以生产方式对这些性质和关系的一些特定的实现,完成具体而有用的任务。
在计算机科学与技术的发展中,有一批在各个分支学科中重复出现的概念,即核心概念。它们虽然在各分支学科中的具体解释形式上有差异,但相互之间存在着重要的联系。核心概念是学科重要思想、原则、方法、技术过程的集中体现,有助于在学科的深层统一认识计算机科学与技术。对核心概念的深入理解和正确拓展与应用的能力,是计算机科学与技术科学家和工程师成熟的标志之一。
核心概念是方法论的重要组成内容,一般具有如下特点:
① 在本学科的不少分支学科中经常出现,甚至在学科中普遍出现;
② 在学科理论、抽象和设计这三个过程的各个层面上都有许多示例;
③ 在理论上具有可延展和变形的作用,在技术上具有高度的独立性。
对于学科形态和重复出现的核心概念,在将学科形态贯穿于整个学科各门课程教学的始终,用核心概念将各分支学科的内在联系串联起来时,事实上,学科形态与核心概念并不能完全解决问题,还需要于教学中介绍在这门学科中反复出现的具有哲学意义的典型方法,并通过一批典型实例给学生以深刻的感性认识。
典型方法与典型实例是属于方法论的内容。所谓典型方法,是从科学哲学的角度对一类具有共同本质属性的具体方法所作的方法论意义上的总结和提炼。目前已知有六种典型方法和一批典型实例。六种典型方法是内涵与外延的方法,以递归、归纳和迭代形式为代表的构造性方法,公理化方法,快速原型方法,演化方法,以及展开与规约方法。
所谓典型实例是指那些反映学科某一方面内在规律和问题本质内容的实例。典型实例也是方法论的重要组成内容,由于它们往往以简化形式深入浅出地表达学科深奥的科学规律和学科问题的本质内容,因此,在学科研究中常常被用来辅助说明思想、原理、方法和技术,用来比较思想、理论、方法和技术的优劣。显然,典型实例在学科发展中具有重要的作用。
⑺ 学科发展特点、规律、趋势和新世纪学科与社会发展对专业人才的要求
计算机科学与技术学科是在数学和电子科学基础上发展起来的一门新兴学科。它既是一门理论性很强的学科,又是一门实践性很强的学科。理论和技术是学科两个互为依托的侧面。学科的理论绝大多数属于技术理论。学科的基本问题和本质属性决定了学科理论、技术与工程相互之间常常界限模糊,从理论探索,技术开发到工程开发应用和生产的周期很短,许多实验室产品和最终投向市场的产品之间几乎没有太大的差别。虽然,目前整体上理论研究滞后于技术开发,但随着学科研究和应用的不断深化,理论的重要性地位将愈来愈突出,而技术则渐渐退居为次要的位置。
数学是计算机科学与技术学科的主要基础,以离散数学为代表的应用数学是描述学科理论、方法和技术的主要工具,而微电子技术和程序技术则是反映学科产品的主要技术形式。在学科中,无论是理论研究还是技术研究的成果,最终目标要体现在计算机软硬件系统产品和技术服务上。然而,作为硬件产品的计算机系统和作为软件产品的程序指令系统应能机械地,严格地按照程序指令执行,决不能无故出错。计算机系统的这一客观属性和特点决定了计算机的设计、制造、以及各种软件系统开发的每一步都应该是严密的、精确无误的。就目前基于图灵机这一理论计算模型和存储程序式思想设计制造的计算机系统而言,它们只能处理离散问题或可用构造性方式描述的问题,而且这些问题必须对给定的论域存在有穷表示。至于非离散的连续性问题,如实数域上的函数计算,方程求根等还只能用近似的逼近方法。于是,由于计算模型的非连续性(或称离散化)特点,使得以严密、精确著称的数学尤其是离散数学被首选作为描述学科的主要工具。在这一学科中,数学与电子技术的结合是理论与技术完美结合的一个成功范例。
计算机科学与技术学科中不仅许多理论是用数学描述的,而且许多技术也是用数学描述的。大多数学科理论不仅仅是对研究对象变化规律的陈述,而且由于能行性这一本质的核心问题和特点的作用,理论描述中常通过构造性方法折射出技术的思想和步骤,而从理论通过方法跨越到技术则完全取决于对理论的深刻认识、理解和对实现技术的熟练掌握。由于离散数学的构造性特征与反映学科本质特点的能行性之间形成了天然一致,从而使离散数学的构造性特征决定了计算机科学与技术学科的许多理论同时具有理论、技术、工程等多重属性,决定了其许多理论、技术和工程的内容是相互渗透在一起的,是不可分的。与大多数工程科学的工作方式不同,在几乎所有高起点的,有学术深度的学科研究与开发中,企图参照经验科学的工作方式,通过反复实验获得数据,经分析后指导下一步的工作从而推进科研与开发工作的方式是行不通的。原因是有学术深度的问题其复杂性早已大大超出了专家们的直觉和经验所能及的范围。
并非所有的计算机科学与技术学科理论研究都具有应用价值。实际上,在学科发展的几十年中,有不少学科理论研究后来并没有得到继续发展。例如,程序的框图理论,一些计算模型。
近年来,学科的高速发展已经明确地反映出这样一个特点: 学科基础研究和技术开发越来越多地同数学建立更为紧密的联系,对各种数学工具的使用不仅越来越广泛,而且越来越深入。例如,逻辑学在学科中的应用从早期的数理逻辑发展到今天的模型论和非经典逻辑,代数学在学科中的应用从早期的抽象代数发展到今天的泛代数,几何学的应用从早期的二维平面计算机绘图发展到今天的三维动画软件系统,并在与复分析的结合中产生了分形理论与技术,在数据压缩与还原、信息安全方面引入了小波理论、代数编码理论等,非线性规划方法在复杂动态问题中的处理等都已经在学科中找到具体应用。
计算机科学与技术学科并不完全排斥工程的方法。相反,学科在发展中广泛采用了其它学科行之有效的工程方法。如在软件开发中认识到并采用首先开发工具和环境,进而开发软件的方法;在计算机的设计中,目前广泛使用标准组件的方法;在软件的设计和质量检查中广泛使用软件测试方法和技术、标准化技术等。事实上,从软硬件开发的经济效益和专业技术人才的局限性两方面考虑,完全采用形式化的方法来解决学科中的所有问题是不现实的,也是不必要的。
长期以来,数学,特别是以离散数学为代表的应用数学同计算机科学与技术学科之间建立的密切联系不仅使学科具备了坚实的理论基础和科学基础,而且使学科从一开始就以一种与其他学科发展方式很不相同的方式发展。这就是将抽象描述求解问题与具体实现解决问题相分离的方式,即在计算机科学与技术学科的发展中,对大量有深度的问题的处理采用了将理论上解决问题的抽象描述计算方法、算法和技术的内容与具体解决问题的细节、具体实现计算的技术内容相分离。这样做的好处是由于可计算问题能行性的特点和数学方法的构造性特点,也由于学科理论的发展常落后于技术发展的特点,人们可以更深入地探讨一些已经出现的技术问题的内在规律。一般情况下,采用抽象描述方法从理论上解决的问题,实现中也是可以解决的,因为抽象描述求解方法是基于某种能行计算模型发展的。能否根据抽象描述解决具体实际问题,关键在于能否正确地理解抽象描述的内容以及解决问题的效率用戶能否接受,这在各个分支学科的发展中不胜枚举。
抽象描述与具体实现相分离是学科发展过程中一个十分重要的内在特点,它不仅决定了一大批计算机科学与技术工作者的工作方式,而且使学科的研究与开发在很短的几十年里就已进入比较深层的阶段。特别,读者应该注意这样一个事实,学科正是在将抽象描述与具体实现相分离的过程中,由于深入描述与研究的需要,计算模型的基础地位突出地表现出来,并经过对各种计算模型的深入研究和应用使学科很快走向深入。缘此,也使我们看到计算模型在整个学科发展中所起的不可替代的、重要的独特作用。
学科发展的另一个重要的特点是几乎在学科各个方向和各个层面,一旦研究工作走向深入,研究内容具有比较复杂的特点,人们首先是发展相应的计算模型和数学工具,然后依靠计算模型和数学工具将研究工作推向深入。例如,网络协议描述、程序设计语言语义描述、并发程序的语义描述、并发控制的机制、计算机系统结构的刻画与分类、人工智能逻辑基础的语义模型等都引入了新的计算模型。应该指出的是,这里所讲的计算模型不是指计算数学中计算方法层面上的数值与非数值分析方法或计算方法。
人们认识计算机科学与技术,往往是从一些具体的分支学科出发去认识。由于知识结构存在缺失,难免缺乏整体性的观点和意识。如果我们把计算机科学与技术放在一个更大的信息科学与信息处理的背景下来审视和认识,那么,就不难发现学科发展的一个内在特点,这就是近几十年来随着学科发展的不断深化,研究对象的数据或信息表示的地位明显突出,一种方法求解一个问题的质量和效率,往往更多地取决于对象的表示而不是施加在对象之上的运算或操作过程本身。这也说明了为什么数据与信息表示理论一直受到理论计算机科学家的重视。因此,象“数字逻辑”,“算法设计与分析”,“编译原理”,“数据库系统原理”,“程序设计方法学”,“人工智能,“形式语义学”等课程都应该在阐述具体内容时反映学科发展的这个特点。从整个学科发展的趋势看,针对大量信息处理问题,问题如何表示已经成为能否较好地处理问题的关键,处理方法的好坏往往更多地取决于表示方法而不是其他。
学科日渐深化的特点决定了计算机科学与技术领域专利技术科学含量的不断上升,也决定了计算机科学与技术领域新产品技术含量的不断上升。过去那种依靠个人的灵性和出人意料的浅显的新思想、新技术、小发明和新产品异军突起,独令风骚的时代已经过去,相反,产业的竞争更多地已经逐步转化为企业背后高学历、高智力的优秀专业人才之间的竞争,甚至已转移到高等学校人才培养质量的竞争。此外,总结人类社会发展与进步的历史,今后社会的发展和国与国之间的竞争将会越来越多地表现为文化的竞争,社会发展与进步不仅需要大量各学科的专门技术人才,而且,在人才培养中,包括科学理念、人文精神和文化修养等对人才综合素质的要求也会不断提高。
中国是一个发展中国家,整个社会的科技、教育和文化水平不高,社会生产力水平不高,特别是社会资源分布和社会发展极不平衡;人口基数高,低层次的劳动力相对过剩,就业压力很大;……;凡此种种都决定了国家既要解决大量的社会问题,优先解决劳动力就业,提高国民的整体收入水平,又要发展高科技,为实现社会的现代化创造条件。所以,在21世纪上叶相当长的一段时期内,中国高等教育的人才培养必须充分适应国家的要求,实行分层次、分类办学,以满足社会各行各业的不同需求,适应国家的基本国情。
结合中国现阶段的国情,我们认为,21世纪我国需要的计算机科学与技术人才应该是具有坚实的数学基础和计算机科学理论基础,具有良好的科学素养和文化修养,受到过良好的计算机基本实验技术与技能等训练,具有人文精神、创新意识,能够在高科技发展中取得创新成果的专门人才,而不是跟在国外公司的后面,靠引进、分析、消化、仿制、改良求得生存和发展的专门人才。高等学校对于学科专业人才的培养应该实现分层次、分类办学,以满足社会各行各业的不同需求。
⑻ 学科教育与教学的指导思想
我们提出的学科教育与教学改革的指导思想是:
从一级学科的知识组织结构出发,以国内外多年来学科教育和教学的经验和教训为线索,在认真分析学科专业教育与教学中存在的问题的基础上,用学科方法论的内容作为切入点,通过全面分析和总结学科发展的历程,整体上把握学科发展的现状、趋势、特点、内在规律及其对专业教育的影响,结合社会实际,明确不同层次、不同类别的人才培养目标,按照学科知识组织的层次结构和分类科目组织教学,将过去沿用的外延教育发展模式转变为内涵教育发展模式,重视基础,加强数学、物理学和计算机专业基础等核心知识的教学,精简课程体系,理论联系实际,强化实验教学,规范运作过程,兼顾正规教育与职业技术教育、高层次人才培养与社会各行各业对学科一般性应用人才的培养,实行分层次与分类办学。在素质教育方面,重视和加强学校文化建设,倡导科学理念,培养人文精神,创造优良的学风和校风,主张环境熏陶、文化育人、自主管理、自我完善的方针。在校内管理体制和运行机制方面,依靠专家,突出学术,全面建立科学管理体系,确保学科教育与教学改革方案得到准确定位和平稳运行。在此基础上,从工程科学和教育产业的角度出发建立学科人才培养的质量保证体系,选择若干所学校进行学科专业教育与教学改革试点,按照教材建设理论研究成果的指导和新的运行机制,动员国内的力量,由中青年科学家和权威出版社创作、编辑、出版一套高起点的学科系列教材,逐步形成分层次分类的学科专业人才培养示范基地,全面建立学科人才培养的科学体系。
在具体教学计划与课程体系的设计过程中,我们遵循了以下原则:
① 自顶向下设计。根据学科前沿发展的现状、趋势、特点、规律以及学科知识组织结构层次型的特点,结合人才培养目标,完成从博士研究生、硕士研究生到本科生的教学计划与课程体系的设计;
② 内涵发展优先。在课程设置和教学内容的选取过程中,坚持贯彻理论联系实际,课堂教学与课外自习并重,课程设置少而精,选择最能反映学科本质特点、基本概念、基本原理、基本方法、基本技术的内容作为核心课程,保证学生有相当大的课余时间自习,明确课外作业要求,确保学生今后具有较强的独立获取新知识的能力。内涵发展优先并不是要一味地在知识点的细节上下工夫,而是在抓住重点的前提下,兼顾广度和深度。过去教学中在一个知识点上过多地阐述细节是不可取的。例如,操作系统中过多地讨论文件管理的内容,在基本思想相同的页式管理、段式管理、段页式管理上花费了太多的学时,编译原理课程中也存在过多地讨论各种上下文无关文法及其变形,等等。
③ 理论与实践并重。在课程的学时数安排上,坚持绝大多数课程只要开课,计划学时数必须不少于72学时,以保证教学的深度。并且,将实验教学从以往附设于某一门课程中独立出来,实行实验课程单列,坚持实验教学与理论教学同步,理论与实践相结合,同时带动实验室的管理改革和学术水平上层次;
④ 分层次、分类办学。同时设计A类和B类两套本科教学计划与课程体系。A类模式以培养计算机科学与技术学术人才和技术人才,着眼于毕业生将来成为总工程师、主任工程师、教授、研究员和高级专业主管为具体目标,人才培养采用学年制; B类模式培养专业技术熟练的软硬件生产、开发、经营、维护、以及一般专业技术管理工程师为具体目标,人才培养面向一般计算机应用、生产、开发与经营,着眼于整个社会计算机应用的推及与提高,人才培养采用学分制。允许两类教学模式双轨并行运行;
⑤ 提倡:追求真理与进步,崇尚科学与艺术,报效国家与民族,服务社会与社区,献身理想与事业。通过改善高等学校办学条件与办学环境,创造浓郁的文化氛围和优良的人文环境,建立教学过程的科学化管理体系,培养具有人文精神和科学理念,具有爱国主义情操的现代人。
⑼ 实验课程单列的可行性与必要性(略)
① 实验课程单列并不改变实验设备条件
② 实验课程单列并不影响实验的完成
③ 实验课程单列符合计算机科学与技术学科实验教学的规律和特点
④ 实验课程单列有助于教学质量的提高
⑽ 两种教育模式的双轨运行
计算机科学与技术学科发展的日渐深化决定了学科专业教育中基础知识与核心专业基础知识的拓广和加深,决定了一个计算机科学与技术学科专业的毕业生要达到基本的合格要求,必须完成相当数量有学术深度的课程学习,在所学内容和知识组织结构上自成体系,覆盖学科的本科生核心基础科目。学科专业的这一客观要求使本专业四年制教学计划中专业选修课的比例变得很小,施行学分制便失去了其基础和意义。然而,当今社会多种经济成分的发展及日益丰富复杂的社会活动又要求高等学校改变单一的人才培养模式,而且,计算机科学与技术的应用属性与社会广泛的一般性开发应用要求,以及当前社会的价值取向交织在一起,使得计算机专业人才在社会上出现供不应求的现象。因此,要保证毕业生的质量,同时又满足社会对各类人才的要求,适应中国高等学校办学水平差异较大的国情,必须寻找别的途径。
将计算机科学与技术专业教育划分为A类和B类,使其双轨运行是一条可行的途径。两种基本教育模式在教学中分别制定相应且相容的教学计划,前者以培养优秀计算机科学与技术专业人才,着眼于他们未来成为主任工程师、总工程师、教授和学者为目标,后者以培养专业技术熟练的、优秀的软硬件生产、开发、经营、维护工程师,以及专业技术管理工程师为目标。两种教育模式毕业的学生只要达到规定的学位标准,均可授于学士学位。在教学管理方面,A类模式实行学年制,B类模式实行学分制。这样做,有利于兼顾科学技术学术型人才和职业技术应用型人才的培养,有利于分类和分层次办学的形成,有利于跨学科、复合型人才的培养,也有利于优化师资、人才和资源的配置。
⑾ 教育与教学过程管理的科学化(略)
⑿ 研究生学位课程的界定
当前,一级学科研究生学位课程主要集中在下列四门课程方面:高等逻辑,高等计算机体系结构,并行算法设计基础(或分布式算法设计基础),形式语义学,均为72学时。这四门学位课程整体上位于计算机科学与技术一级学科硕士研究生学位课程的最高起点。
⒀ 如何培养高素质专业技术人才
① 加强数学基础教学,逐步实现思维方式的数学化
② 加强学科专业各学期重点课程的教学,夯实专业理论基础
③ 强化实验过程的规范操作,弱化对实验结果的评判,加强实践环节的训练
④ 循序渐进,触类旁通,理论联系实际,逐步提高专业能力
⑤ 注重理解科学与人才的科学素养,培养正确的思想方法
⑥ 倡导优良的学风,注重全面发展
⒁ 如何培养学科创新人才
培养创新人才,不能停留在口号上。针对计算机科学与技术学科的特点,我们应该在教育和教学中通过努力贯彻32字方针来实现:见多识广、博闻强记;功底深厚、富于联想;科学理念、人文精神;心态沉稳、持之以恒。前16个字,主要解决毕业生在一般科学技术层面上具有一定的创新意识和能力的问题,而加上后面的16个字以后,重点是着眼于毕业生未来在工作中解决具有重大创新意识和能力的问题。培养创新人才,应该将上述32个字贯穿在整个人才培养和成长过程的始终,而大学培养的具有创新能力的人才能否大批涌现,社会能否提供适合创新人才脱颖而出的环境与氛围将是关键的、十分重要的因素之一。
⒂ 学科人才培养的外部环境与大学管理(略)
3.2 系列教材建设的认识基础
总结学科近半个世纪以来教材建设和办学的经验和教训,使我们逐步形成了下列基本认识:
⑴ 教材建设必须立足于一个科学理论体系
1、
教材建设应该以一个学科人才培养的科学理论体系为基础,系列教材的指导思想、框架、内容与风格必须与这个理论体系保持一致,并为学科专业教育与教学改革的实践服务。学科人才培养的科学理论体系为教育思想、教育观念、教学方式、教学方法、教学内容与教材建设提供了一个解释模型。
就任何一个学科来说,教育思想与观念的正确转变,教学方式与方法的正确改进,教育与教学内容的正确改变以及教材的革新,都必须建立在对整个学科发展内在规律和发展趋势整体把握的基础之上,必须建立在对整个学科教育与教学内在规律和特点整体把握的基础之上,必须对影响学科人才成长的一系列重大问题甚至有争议的问题提出系统的科学见解,对学科教育与教学过程中众多环节作通盘考虑和合理规划。离开了这些基础,无论是什么学校的学科人才培养方案,其科学性、先进性、系统性和实际可操作性是有疑问的。当然,这样的要求决不会使高等学校变成机械的流水线加工厂。学科人才培养理论体系的不同,人才培养目标的不同,教育思想与理念的不同,教学观念与方式方法的不同,教育与教学内容的不同,文化传统与学术传统的不同,校园环境与社会环境的不同,以及由此决定的价值取向的不同,必然会产生不同的人才培养方案,最终将导致高等学校的办学特色纷呈。
⑵ 教材建设必须建立在科学研究的基础之上
第一流的教师一定是第一流的科学家或学者,但反之则不成立。
教材建设必须建立在科学研究的基础之上。新一代系列教材建设应该从一级学科人才培养的科学理论体系出发,系统地对过去国内外的教材进行深入的分析与评价,吸取前人的经验和教训,按照理论体系和人才培养目标从总体上把握学科系列教材创作的指导思想、原则、构架,从中提炼出各门课程新的创作思想,内容取舍的理论依据,知识组织结构和在整个学科知识体系中的地位和作用,教材写作风格和各部分内容的呼应关系。对于教材创作中各部分的细节,似应发挥作者的积极性。
⑶ 教材建设必须依托一个科学的运作机制和程序
建设一体化的系列教材,需要按照高起点、高标准的要求,建立一个科学的运行机制和运作程序,通过动员和选择一批在第一线从事科学研究的科学家和优秀的教师参与教材的创作,同时严格教材创作过程中的质量控制,确保系列教材的出版质量。
选择系列教材各门课程的作者,应该贯彻公开、公平、公正的原则,选择最适合的作者来创作教材。一般情况下,就一门课程的教材而言,我们希望作者是一个科学家和资深教师,有深厚的专业素养和相当的学术成就,有较高的学术造诣。然而,计算机科学与技术是一门发展异常迅速的学科,我们又希望作者是一个具有本学科和相近学科硕士以上学位的中青年学者,基础厚实,经验丰富,思想活跃,勇于创新。因此,系列教材的建设理应遴选这两类科学家。作为体制创新的一部分,拟对每一本教材引入学术编审人的概念,以确保每本新教材的出版质量。此外,我们还应该在科学理论体系的框架下,倡导创新和教材创作风格的多样性。对于具有不同风格,各俱特色,确有竞争力的教材申报者,同一种教材可考虑各选一名作者,安排出版两个或两个以上的版本。
⑷ 系列
4、 教材需要在实践中逐步完善和更新内容
一套系列教材是否先进、科学?是否能够满足学科人才培养的要求?回答这些问题只能基于人才培养的科学理论体系在实践中进行回答。实践是检验真理的标准。因此,系列教材需要在人才培养基地中进行实践检验,做出令人信服的试验成果,并在实践中逐步完善和更新内容。同时,推动整套系列教材的推广。
系列教材是否先进、科学、系统,只能依托学科人才培养的理论体系进行解释,其先进性和科学性仅是相对于科学理论体系的。如果基于学科人才培养科学理论体系的系列教材确实存在明显的错误和不足,不能适应新世纪学科发展和社会技术进步对专业人才的要求,这本身就说明了这个体系在先进性、科学性和系统性方面存在严重的缺陷,或者说明这套系列教材不属于这个理论体系。
⑸ 学科数学类课程教材内容的取材
学科数学类课程教材内容取材的指导思想是:紧紧围绕学科专业人才的培养目标,根据数学教学在整个学科知识组织结构中的地位和作用,按照实现思维方式的数学化分两步走和为后续课程提供必要的数学基础的理性认识,教材的取材贯彻如下准则:为后续课程提供必要的数学基础和训练,从感性认识到理性认识逐步实现思维方式的数学化。
⑹ 学科专业(基础)课程教材内容的取材
学科专业(基础)课程教材内容的取材的指导思想是:按照学科知识组织结构,沿着学科发展的主线和主流方向,在不同的知识层面上,紧紧围绕学科的三个基本问题展开取材,教学内容应反映学科发展的三条主线,突出“计算”的属性(注:不是指与证明并列的狭义的计算),重视基础,循序渐进,内容精炼,重点突出,融入学科方法论内容和科学理念,反映内涵发展要求,倡导理论联系实际和科学的思想方法,体现一级学科知识组织的层次结构。
⑺ 学科实验课程教材内容的取材
学科实验课程教材内容取材的指导思想是:根据实验教学在整个学科专业教学中的地位、特点和作用,按照实验课程单列的要求,依据学科专业(基础)课程教材内容的进度安排,理论联系实际,紧紧围绕一级学科基本实验、基础实验、基本实验方法和基本实验技能的训练要求,突出专业实践能力的培养。在试行对大多数学生取消毕业设计(论文)的前提下,适当反映新技术潮流的内容,增加课程设计与分析内容,通过强化实验教学过程的规范操作,弱化对实验结果的评判,逐步培养学生理论联系实际,独立开展实验工作的能力。
3.3 学科系列教材创作的基本原则
为了实现系列教材创作高质量的目标,在教材研究工作的基础上,综合上述内容,我们提出了下列学科系列教材创作的基本原则。
⑴ 背靠科学体系,明确目标定位,分类组织实施,贯彻兼容互补的原则;
⑵ 理论与实践并重,理论与实践相结合,突出学科发展特点,体现学科发展内在规律的原则;
⑶ 取材循序渐进,保证学术深度,减少知识重复,前后相互呼应,内容合理分工,结构整体推进的原则;
⑷ 自顶向下设计,内涵发展优先,突出学科方法论,强调知识体系可扩展的原则。
3.4 学科系列教材创作在形式上的建议意见
为了贯彻上述研究报告的要点,真正体现内涵发展模式,为优秀学生和学生毕业后扩展知识提供帮助,本套教材在创作中我们建议:内容可突破教学时数的限制(多数课程为72学时,可参考有关的文献。)。一般地说,以72学时的课程为例,教材创作在形式上可以按照72-90学时内容的量来组织教材。作为基本的内容,应该列入72学时的必修内容,而对于一些非主要的内容,如学生可以通过举一反三扩展知识的那些相对简单的内容,留给学生思考的内容,关于发展史和前景分析、讨论、展望之类的内容,以及某些具体应用的内容,希望放在72学时之外的部分,在前言中给予说明。将来在教学中,教师完全可以根据学生掌握知识的反馈信息,通过插入上述内容,适当加快或放慢授课节奏。
4 学科系列教材一体化设计方案(第1批教材)
在认真分析和总结以往教材建设经验的基础上,依据学科系列教材的背景体系、系列教材创作的基本原则和各门课程的取材原则,综合多方面因素的考虑,我们对学科人才培养的A类模式提出了一个一体化设计方案。在这个一体化方案中,我们沿着学科发展主线和各个时期发展的主流方向,围绕学科的三个基本问题,突出了知识组织层次结构的几个层面:
第一层面是学科基础数学、基础物理等公共基础知识层面,第二层面是计算模型(包括具有状态转换特征的能行抽象计算模型和计算方法)、电子数字技术和语言(主要指高级程序设计语言),第三层面是算法与程序层面(包括算法、数据表示、程序、效率、计算的正确性分析等),第四层面是计算机系统与体系结构层面(主要包括电子计算机系统、软件开发工具与环境、计算机体系结构、微机系统与接口),第五层面是应用技术层面。
在具体内容的选取上,我们力求突出重点,降低知识体系的重心,依据学科方法论的研究成果,主张从知识内容的本质上贯彻少而精的思想,真正体现内涵发展的要求,反映一级学科知识结构和体系。下面是A类模式中有关课程教材内容的设计方案。
0.计算机科学与技术导论(本次暂不安排创作、编辑、出版)
“计算机科学与技术导论”课程教学的基本目标是让学生通过少量的学时数的学习,初步了解计算机科学与技术学科的概貌和学术范畴,激发学生对本专业的兴趣,帮助并引导学生用正确的方式方法去认识和学习学科专业知识,而不在于学生具体学到了哪些专业知识。配合“计算机科学与技术导论”课程,学生将在教师的指导下通过第一学期计算机科学与技术实验课程的上机实践,从专业外行的角度,学习、熟悉和掌握一些专业实践性知识,提高感性认识。所以,“计算机科学与技术导论”的教材尽可能地写成通俗、深入浅出的高级科普形式。
“计算机科学与技术导论”课程的教材可以科学出版社出版的《计算科学导论(第二版)》[2]。该教材除了让学生了解计算机科学与技术学科的概貌和学术范畴,帮助并引导学生用正确的方式方法去认识和学习学科专业知识外,还增加了一章布尔代数。在《计算科学导论》中引入布尔代数,主要是基于下列三个原因:第一,按照A、B类模式,布尔代数的内容在教学计划中其他课程内安排不下;第二,布尔代数的内容看似是代数,其实是一种命题逻辑,是数理逻辑早期发展的原型。结合导论中其他内容的讲授和课外思考,布尔代数知识有助于学生认识到命题逻辑可以通过集合代数实现表达方式的转化,从而有助于学生在思考中与二进制、数字逻辑电路建立联系,有助于学生大致理解电子数字计算机的工作原理;第三,引入布尔代数系统的公理化方法,可以使得学生通过一个比较简单的数学系统,对公理化思想和方法有所了解。
1.高等代数(144-156学时)
“高等代数”课程的教学目标有两个,一是让学生掌握“高等代数”基本知识,为学生今后学习后续课程打下坚实的高等代数基础,二是让学生通过对课程内容和其他数学基础课程的学习,力争尽快初步实现思维方式的数学化(感性认识)。关于这门课程的教学,应将各种基本概念、定理、定理证明、正反例、计算方法列为教学的重点,而不是将各种具体应用列为教学的重点。多项式理论对于计算机专业是重要的,其应用背景在于算法复杂性理论、代数化简、演化计算、数值分析、编码等许多方面。作为“高等代数”课程的教学,过去北京大学数学力学系创作,由人民教育出版社出版的《高等代数》是比较优秀的。本次《高等代数》的编写除了继承原有教材的优点和内容外,拟增加高矩阵的内容,突出方法论的内容,加强前后内容关联性的论述,如线性变换、矩阵、方程组、二次型之间的关系,向量表示与几何的关系等,适当增加习题的数量和代表性。此外,还应该在与《近世代数》的衔接和分工方面进行调整。由于《近世代数》课程需要在内容上增加泛代数基础知识,因此,《高等代数》在内容上必须将原来教材近世代数初步中群、环、域的内容合并成群的基础知识和环、域的基本概念。今后,《近世代数》的教材可以从环开始逐步深入。这样,《近世代数》中群的内容可以作为学生复习之用,不必在教学中作为重点重复讲授,而《近世代数》的教学主要是从环的知识开始,包括环、域、格和泛代数基础知识。
2.数学分析(330-350学时)
“数学分析”课程的教学目标有两个,一是让学生掌握“数学分析”基本知识,为学生今后学习后续课程打下坚实的数学分析基础,二是让学生通过对课程和其他数学基础课程的学习,力争尽快初步实现思维方式的数学化(感性认识)。
“空间解析几何”与“数学分析”合并开课,安排36-40学时,但不作为课程内容的重点。“空间解析几何”教学的基本目标是在学生高中所学几何学知识的基础上,进一步加强立体几何学的基本知识,为今后学习“数学分析”、“计算机图形学”、“计算几何”等课程作准备。同时,这门课程的内容与中学的几何学联系比较紧密,教学进度稍快,作为从中学过渡到大学的教学内容,有助于学生尽快适应大学的学习方式与方法。
关于“数学分析”这门课程的教学,应将各种基本概念、分析方法、定理、定理证明、正反例、计算方法列为教学的重点,而不是将各种具体应用列为教学的重点。实数理论和隐函数存在定理的证明应该保留,但只作为学生的课外读物。过去复旦大学数学系陈传璋教授等人和吉林大学数学系江泽坚等人分别创作,先后由上海科学技术出版社和人民教育出版社出版的《数学分析》是比较优秀的大学数学系教材,本次《数学分析》的编写除了继承原有教材的优点和内容外,还应当突出学科方法论的内容,加强前后内容的关联性论述,如极限、函数、微分、积分、函数级数相互之间的关系,代数与分析数学之间的联系。
3.常微分方程
“常微分方程”课程的教学目标有两个,一是让学生掌握“常微分方程”的基本知识,了解代数方法、分析方法之外的微分方程方法(本质上也是分析方法),为学生今后学习有关后续课程打下坚实的常微分方程基础;另一个是配合“高等代数”、“数学分析”等课程的学习,让学生通过对微分方程课程内容的学习,力争尽快实现思维方式的数学化。到第二学年结束时,每一个学生都应通过基础数学课程的学习,初步实现思维方式的数学化。因此,关于这门课程的教学,应在前期学习《数学分析》(部分内容)和《高等代数》的基础上,继续将各种基本概念、定理、定理证明、正反例、计算方法列为教学的重点,突出学科方法论的内容,阐述“常微分方程”与“高等代数”、“数学分析”之间的联系,加强前后内容的关联性论述,如微分方程组求解的方法与代数方程组求解方法之间在学科方法论层面上的共同特点等。由于“常微分方程”课程中应增加一阶偏微分方程的内容,因此,常微分方程的定性理论(必修部分)可以只作一般介绍,不作为课程的重点内容,稍稍深入的讨论作为学生自修。增加一阶偏微分方程的内容时,应该加强微分方程与背景关系的讨论,阐述常微分方程与偏微分方程之间的关系,从学科方法论的角度介绍研究偏微分方程的一般思想和方法,供读者未来扩展偏微分方程知识作参考。
吉林大学数学系王柔怀、伍卓群教授创作,人民教育出版社出版的《常微分方程》是一本优秀的教材,可以作为修改时的参考的蓝本。
4.概率论与数理统计
“概率论与数理统计”课程的教学目标有两个,一是让学生掌握“概率论与数理统计”的基本知识,了解概率论、数理统计处理问题的思想方法,为学生今后学习有关后续课程打下坚实的概率论与数理统计基础,另一个是配合“高等代数”、“数学分析”、“常微分方程”等课程的学习,让学生通过对“概率论与数理统计”课程的学习,力争尽快实现思维方式的数学化。到第二学年结束时,每一个学生都应通过基础数学课程的学习,初步实现思维方式的数学化。“概率论与数理统计”课程的教学需要为后续课程作准备,教学的重点应从对各种现实问题的认识和处理背景出发,将“概率论与数理统计”的基本概念、基本原理、基本方法以及认识和处理实际问题的不同于传统数学的思想方法向学生作详细的介绍。通过学习“概率论与数理统计”课程的基本理论,使学生能够针对一些具体问题学会采用“概率论与数理统计”的方法进行处理。因此,关于这门课程的教学,应在前期学习《数学分析》(部分内容)、《高等代数》、《常微分方程》的基础上,继续将各种基本概念、定理、定理证明、正反例、计算方法列为教学的重点,突出学科方法论的内容,阐述“概率论与数理统计”与计算机科学与技术相关内容的联系,特别是与概率逻辑、概率算法、容错计算密切相关的内容要作为教材的一项内容作背景阐述,但不作深入讨论。
具体进一步的修改建议,待与有关数学系的作者商议。
5(1) 高级语言程序设计(高级语言程序设计第一方案)
“高级语言程序设计”是学生入学后第一次系统地学习与高级程序设计语言和程序设计有关的内容,教学的重点不在于如何解决各种实际问题,而是在各种问题已经有了计算方法(甚至算法)之后,如何掌握使用高级语言实际编制解决问题的程序。高级程序设计语言不仅仅只有Pascal,对语言和程序设计的不同认识产生了大量不同的程序设计语言,读者还应该了解与高级语言和程序设计有关的许多内容(不展开深入讨论),以便将来在“程序设计语言理论”、“算法设计与分析”、“程序设计方法学”和其他课程知识的支持下,具备独立扩展高级语言和程序设计知识的能力。Pascal语言作为一种语法描述和程序结构比较规范,语言概念和成分有代表性,语言规模大小比较合适的一种高级语言,用于作为大学“高级语言程序设计”课程中宿主语言的教学是恰当的。但是,目前在学术界也有一部分学者认为高级语言程序设计应该介绍C语言和C++。我们认为,从C语言到C++,反映了程序设计思想、方法和技术从面向过程的程序设计转变为面向对象的程序设计,从顺序程序设计过渡到并发程序设计的初步。如果能够在面向对象方法的层面上,从语言比较学的角度介绍Java语言,突出面向对象程序设计的观念,也许是一条可行的途径,至于Pascal语言在语法描述和设计的程序结构上比较规范,语言概念和成分有代表性等方面的特点和知识,完全可以安排在将来的程序设计语言理论,程序设计方法学等课程中。
由于C语言在当今系统软件和部分应用软件的开发中具有实用性强的特点,又与硬件和程序设计环境底层的联系紧密,作为面向开发的高级语言程序设计课程内容中的宿主语言是可行的。但是,C语言的内容比较庞杂,语言描述本身也不如Pascal规范,真正较好地掌握该语言不经过长期、大量的实践是不现实的。作为“高级语言程序设计”课程的宿主语言,教材的写法和教学的考核不应该拘泥于语言中大量细节和技巧方面的阐述,而应该突出高级语言及其程序设计基本知识的主导地位,并借助于程序设计语言理论研究的成果,在以C语言为宿主语言的教学中,通过介绍高级语言的语言成分及其历史变革,从语言理论研究成果和语言比较学的角度介绍C++和Java语言及其程序设计的基本内容,并鼓励和培养学生今后在自学和结合实验的实践中扩展C++和Java语言程序设计知识,这是一条合理、而且可行的途径。
基于上述认识,本课程的教学重点应该是在学生具备了一定的数学基础和计算机操作实验基础后,首先认可在某种计算模型(如随机存储计算模型)和软件技术(如编译技术)的支持下,现代电子数字计算机理解和执行高级程序设计语言的各种语言成分没有问题,然后通过一种类自然语言(将C语言作为宿主语言)的各种基本成分及其功能的了解,学习如何组合各种语言成分来编制完成某项计算的程序,完成对某些计算方法和算法的具体实现,体会计算机在处理大量计算问题时如何从过程的角度完成具体计算。因此,“高级语言程序设计”可以C为主介绍高级程序设计语言与程序设计的基本概念、基本方法和基本技术(约占52-54学时),然后从语言理论(只引用结论而不展开论述)和语言比较学的角度,引入对象的概念简要介绍高级程序设计语言C++和Java程序设计的一些基本概念、基本方法和基本技术(约占18-20学时),其中,Java作为学生自学的题材。特别应介绍三种语言之间的不同之处,同时引出由于程序设计方法和技术的发展以及高级语言进一步发展带来的需要在程序设计语言中解决的问题,如并发与通信等,向学生适当展示高级语言与程序设计广阔的天地,为后续相关课程埋下伏笔。应该指出,程序设计技术水平的提高,仅仅靠高级语言程序设计课程是不够的。只有经历计算模型与算法理论,若干语言(含微程序设计和汇编语言程序设计)的程序设计经历,程序设计方法学,程序理论与软件开发方法学,软件工程,学习其他相关课程以及经过大量实践才能获得真正大幅度、整体性的提高。在教材中,虽然需要分析一个程序的基本特性,如程序的基本结构,程序的效率等,但不必刻意强调如何编制高质量、高效率的程序。特别,不能将程序设计方法学的许多内容与本课程混为一谈,更不能将算法设计与分析的内容与本课程混淆。如何编制高质量的程序,如何保证程序的正确性,如何使编制的程序易读、清晰,便于交流等程序理论的问题,可以作为思考问题提出,引导学生将来更深入地了解算法理论与程序设计的广阔天地。根据过去教学的经验,有必要在高级语言程序设计课程中加强指针、递归过程和文件等内容的教学。
本课程要确保学生完成一定数量和质量的习题,但不是所有的习题都要上机实习。教材中一些有代表性的例题的程序可以在教材后面以附录的形式列出供学生参考。计算机科学实验课程将安排一些有代表性的上机实验单元与本课程的内容相呼应,目的是通过实验让学生进一步掌握使用高级语言进行程序设计的能力,获得感性认识。课程结束考试时以C语言及其程序设计为主,C++部分可以考试但不作为重点,Java语言部分可以不考。
5(2) 高级语言程序设计(高级语言程序设计第二方案)
“高级语言程序设计”是学生入学后第一次系统地学习与高级程序设计语言和程序设计有关的内容,教学的重点不在于如何解决各种实际问题,而是在各种问题已经有了计算方法(甚至算法)之后,如何掌握使用高级语言实际编制解决问题的程序。高级程序设计语言不仅仅只有Pascal,对语言和程序设计的不同认识产生了大量不同的程序设计语言,读者还应该了解与高级语言、程序设计有关的许多内容(不展开深入讨论),以便将来在“程序设计语言理论”、“算法设计与分析”、“程序设计方法学”和其他课程知识的支持下,具备独立扩展高级语言和程序设计知识的能力。Pascal语言作为一种语法描述和程序结构比较规范,语言概念和成分有代表性,语言规模大小比较合适的一种高级语言,用于作为大学“高级语言程序设计”课程中宿主语言的教学是恰当的。C语言是一种重要的程序设计语言,也是当今计算机软硬件工程师应该掌握的一种基本的、比较实用的程序设计语言。但是,C语言的内容比较庞杂,语言描述本身也不如Pascal规范,真正较好地掌握该语言不经过长期、大量的实践是不现实的,其作为“高级语言程序设计”课程的宿主语言并非最佳选择。借助于程序设计语言理论研究的成果,在以Pascal语言为宿主语言的教学中,通过介绍高级语言语言成分及其历史变革,从语言理论研究成果和语言比较学的角度介绍C语言及其程序设计的基本内容,并鼓励读者今后在自学和结合实验的实践中扩展C语言程序设计知识,是一条合理、而且可行的途径。
基于上述认识,本课程的教学重点应该是在学生具备了一定的数学基础和计算机操作实验基础后,首先认可在某种计算模型(如随机存储计算模型)和软件技术(如编译技术)的支持下,现代电子数字计算机理解和执行高级程序设计语言的各种语言成分没有问题,然后通过一种类自然语言(将Pascal语言作为宿主语言)的各种基本成分及其功能的了解,学习如何组合各种语言成分来编制完成某项计算的程序,完成对某些计算方法和算法的具体实现,体会计算机在处理大量计算问题时如何从过程的角度完成具体计算。因此,“高级语言程序设计”应以Pascal为主介绍高级程序设计语言与程序设计的基本概念、基本方法和基本技术(约占52-54学时),然后从语言理论(只介绍结论而不展开论述)和语言比较学的角度,简要介绍高级程序设计语言C与程序设计的一些基本概念、基本方法和基本技术(约占18-20学时),特别应介绍二种语言之间的不同之处,同时引出由于程序设计方法和技术的发展以及高级语言进一步发展带来的需要在程序设计语言中解决的问题,向学生适当展示高级语言与程序设计广阔的天地,为后续相关课程埋下伏笔。应该指出,程序设计技术水平的提高,仅仅靠高级语言程序设计课程是不够的,只有经历计算模型与算法理论,若干语言(含微程序设计和汇编语言程序设计)的程序设计经历,程序设计方法学,程序理论与软件开发方法学,软件工程,学习其他相关课程以及经过大量实践才能获得真正大幅度、整体性的提高。在教材中,虽然需要分析一个程序的基本特性,如程序的基本结构,程序的效率等,但不必刻意强调如何编制高质量、高效率的程序,特别,不能将程序设计方法学的许多内容与本课程混为一谈,更不能将算法设计与分析的内容与本课程混淆。如何编制高质量的程序,如何保证程序的正确性,如何使编制的程序易读、清晰,便于交流等程序理论的问题,可以作为思考问题提出,引导学生更深入地了解算法理论与程序设计的广阔天地。根据过去教学的经验,有必要在高级语言程序设计课程中加强指针、递归过程和文件等内容的教学。
本课程要确保学生完成一定数量和质量的习题,但不是所有的习题都要上机实习。教材中一些有代表性的例题的程序可以在教材后面以附录的形式列出供学生参考。计算机科学实验课程将安排一些有代表性的上机实验单元与本课程的内容相呼应,目的是通过实验让学生进一步掌握使用高级语言进行程序设计的能力,获得感性认识。课程结束考试时以Pascal语言及其程序设计为主,C语言部分可以不考。
6. 数字电路逻辑设计
“数字电路逻辑设计”(数字逻辑)是学生入学后第一次系统地学习与计算机硬件有关的内容,教学的重点不在于让学生从书本上理解具体内容,而是要强调在掌握“数字电路逻辑设计”基本概念、基本原理和基本电路的基础上,每一个学生都能理论联系实际,动手解决一些实际的问题。因此,教学计划中将在计算机科学实验中安排与“数字电路逻辑设计”课程有关的实验单元与课堂讲授的内容相呼应。
数字电路是由一些逻辑单元电路组合而成。数字电路可以用来刻画数字系统。作为一种特殊的电路,它本身可以被视为一种描述计算的语言。从语言的角度观察,基本的电路元器件可以视为语言的字,其性能即是它的语义;基本的单元电路可以视为语言的词,其功能可视为它的语义;组合电路可以视为语言的句子,其功能是它的语义;而由单元逻辑电路和组合逻辑电路形成的一个数字系统,可以视为语言描述的一篇文章,其功能就是这篇文章的语义。于是,从电路器件的互连方式和电路与电路的互连方式中可以抽象出语言的语法,用布尔代数语言可以描述电路语言的语义。从计算的角度观察,作为一种具有输入输出的数字电路,数字逻辑电路系统可视为一种计算模型。事实上,具有代表性的基本的计算模型中就包括数字开关电路(可参考计算复杂性的专著)。因此,作为“数字逻辑”课程的教材,应该优先考虑选择以用逻辑方法进行数字计算和从计算语言的角度刻画电路作为主线展开数字逻辑内容的介绍,并注意两个层面的交叉线索。第一条线索是首先给出计算模型(开关电路),从计算模型的角度使用逻辑方法刻画数字系统计算,建立与布尔代数的联系;第二条线索是从语言的观点介绍器件(字)、单元电路(词)、组合电路(句子)、数字逻辑系统(文章),两者结合,以计算机硬件系统中各部分功能部件(但不局限于计算机系统,而是涵盖各种数字系统)为实例,通过与布尔代数的联系,阐述如何通过数字系统的计算来实现这些(逻辑)部件的功能(包括时序逻辑电路),探讨如何简化计算。这样,就能够与电路描述语言(VHDL)实现自然的过渡,引入电路描述语言VHDL,最终与集成电路设计的数学理论初步相衔接。
本课程的教学重点应该是各种基本数字电路、功能、原理与设计,如何从实际问题出发,利用各种基本的门电路进行组合,设计符合要求的数字电路系统。在这里,虽然需要在教材中分析各种数字电路的性质、效率,但不必刻意强调如何设计高质量、高效率的数字电路。特别,不能将计算机辅助逻辑设计的许多内容与本课程混为一谈。根据过去教学的经验,有必要在理论联系实际方面将计算机系统的背景适当扩大到一般的数字系统。
本课程要确保学生完成一定数量和质量的习题。计算机科学实验课程将安排一些有代表性的上机实验单元与本课程相呼应,目的是通过实验让学生体会理论、抽象、设计等三个过程。其中,有一个单元是作为课程设计的综合性实验,它要求学生从分析问题出发,实际完成一个数字电路的逻辑设计,并在实验室完成电路(样机)。
根据上述分析,本课程教材如系按照上述设想写作,对作者的要求较高,可能需要设计或使用一种电路描述语言,并讨论语言的语义。
7.数据结构基础
“数据结构”是计算机科学与技术专业一门重点专业基础课程。本课程的教学目标是针对大量的信息处理对象,介绍对象数据表示的各种抽象的、基本的逻辑结构及其上的基本运算操作。通过研究各种基本数据结构内在的逻辑关系和它们在计算机中的存储表示,结合各种典型问题讨论其上的各种运算操作及其基本算法实现,并能对各种数据结构的特点、适用范围和一些基本算法的效率分析作定性和定量分析,为后续课程提供必要的数据结构基础。
“数据结构”内容的重点是各种数据表示的抽象的逻辑结构以及其上基本的运算操作。在抽象数据类型和对象出现以前,各种数据结构大多数都是静态的,数据表示的抽象的逻辑结构和其上的运算操作之间是分离的,其上的运算操作大都通过一些简单的算法加以刻画。为了保护程序设计中数据的安全,人们提出了抽象数据类型的概念,并由此派生出对象的概念,发展了面向对象的程序设计方法和技术,直至今日的Agent和智能Agent。从那时起,数据掩蔽与操作封装的思想、分层描述与属性继承的思想成为数据描述与程序设计的主导思想之一。然而,分析过去“数据结构”教材,存在明显的不足,主要表现在:
第一,在介绍各种基本的数据结构时,尽管许多数据结构与离散数学密切相关,但限于读者的数学基础,描述的抽象程度不高;
第二,主次不分,过多地介绍了算法的内容。算法作为刻画基本数据结构上基本运算操作的一种媒介,本来应该严格限定在一些简单的基本算法的范围内,同“算法设计与分析”课程应该有一个合理的分工,不应该涉及算法设计的方法。算法复杂性的分析是需要的,但此处仅仅是用于比较不同数据结构的优劣;
第三,为了提高抽象程度,体现学科抽象描述求解问题与具体实现解决问题相分离的特点,防止学生面对一个具体问题,先入为主地带上程序的观点去分析、解决问题,数据结构中算法的描述不应该使用高级程序设计语言,而应该采用数学语言(带自然语言的算术、代数运算、函数运算等),更不应该片面强调教材中的算法都在计算机上运算通过,因为所有这些算法在今天看来都是最基本的、简单的,它们的正确性是容易判定的。而且,采用算法刻画数据结构上的基本运算,应该介绍可支持算法执行的计算模型;
第四,使用抽象的数学语言描述基本数据结构上的基本运算操作,欲说明这种操作的含义和正确性,应该介绍操作运算的语义。但是,这样一种客观的要求长期以来被忽视了,这导致对于一些诸如动态数据结构那样的对象,教材内容不是回避就是含混不清。事实上,一旦采用数学语言来刻画算法的运算操作,就比较容易引入操作语义来描述语义。此时,由于算法描述采用数学语言,引入了支持描述语言的计算模型,因此,无论是采用状态机或元语言描述基本运算操作,建立操作语义将是自然的;
第五,对抽象数据类型的讨论不深入,尚未涉及对象表示。从内涵发展的角度考虑,为了支持未来面向对象程序设计方法和技术的学习,“数据结构”课程的内容中必须加强抽象数据类型、数据的对象表示等内容,并展示面向对象方法、面向对象程序设计方法、技术及其发展前景,不作深入讨论,通过抽象数据类型的代数理论,介绍刻画复杂对象语义的基本方法和发展前景。
通过上述分析,“数据结构”课程的创作应该注意两个层面的交叉线索。从学科抽象描述求解问题与具体实现解决问题相分离的发展要求出发,第一条线索是从基本数据结构的角度,介绍数据类型、结构类型、表、字符串、数据、树、图、指针、文件等内容,第二条线索是从运算及其正确性和比较数据结构优劣的角度介绍计算模型、算法、效率、基本运算操作及其语义。两条线索在抽象数据类型处实现合一。然后介绍抽象数据类型、抽象数据类型的代数理论(抽象数据类型的语义)、对象、面向对象的数据表示方法,对象理论(不涉及对象的语义理论),突出数据掩蔽与操作封装、分层分类描述与属性继承的思想,反映数据结构发展的潮流。这样一种内容设计上的安排,不仅可以从内涵的角度支持面向对象的程序设计和(移动、智能)Agent 计算,而且可以支持人工智能知识表示中从框架、状态空间树向语义网络的发展,向学生展示一个新的发展天地,并且,减少了将来研究生学位课程“形式语义学”中可取材内容偏多的压力。
本课程要确保学生完成一定数量和质量的习题。计算机科学实验课程将安排一些有代表性的上机实验单元与本课程相呼应,目的是通过实验让学生体会理论、抽象、设计等三个过程。其中,有一个单元是综合性的实验,如一个简单的信息管理系统。它要求学生从分析问题出发,解决某一简单的实际问题。如使用多种数据结构完成一个计算问题。
8.数理逻辑基础
“数理逻辑基础”是计算机科学与技术的重点基础课程之一。“数理逻辑基础”课程的教学目标有两个,一是让学生掌握数理逻辑基本的基础知识,为学生今后学习后续课程和深入学习计算机科学与技术理论课程打下坚实的基础,另一个是学生在二年级结束并初步实现思维方式数学化之后,让学生通过对“数理逻辑基础”课程内容的学习,进一步实现思维方式的数学化,特别是要结合数理逻辑内容的哲学解释将思维方式数学化从感性认识上升为理性认识。因此,关于这门课程的教学,应将各种基本概念、定理、定理证明、正反例、计算方法列为教学的重点,而不是将各种具体应用列为教学的重点。
逻辑系统有许多不同的体系。作为计算机科学与技术的重要基础之一,直觉主义逻辑与形式主义逻辑对计算机科学与技术的发展产生了十分重要的影响,尤其是直觉主义逻辑。直觉主义思想和构造性数学思想是直觉主义逻辑的重要内涵,它们不仅支撑了学科的长期发展,而且与形式主义逻辑的思想一起,为学科各个方向的发展提供了重要的学科方法论基础。作为“数理逻辑基础”课程的教材,应该优先考虑选择以自然演绎逻辑系统作为主线展开数理逻辑基础内容的介绍,并注意两个层面的交叉线索。第一条线索是首先介绍自然演绎逻辑系统(突出直觉主义逻辑思想),进一步讨论逻辑系统的演算特征,通过重言式引出公理逻辑系统,然后讨论逻辑系统的系统特征,并将这种逻辑系统及其演绎证明建立在构造性数学证明之上,推出构造性逻辑;第二条线索是将逻辑系统看作一种语言,从形式语言的角度介绍自然演绎的逻辑系统,讨论语法层面上的形式推导,代换推导,然后引入解释(赋值、指派),讨论语义层面上的逻辑推理,最后是过渡到模型的概念,至模型论的基本概念和结论为止,为今后与研究生“高等逻辑”课程衔接打下坚实的基础。
摹状词和偏函数的引入是重要的,新教材不能缺省这部分内容。歌德尔不完备性定理可以作为扩展性内容或选修内容给出,不一定要求所有的学校都讲授。胡世华、陆钟万教授所著的《数理逻辑基础》是一本很不错的教材,当然,从现在的发展来看,内容取材需要作一些补充和修改,主要是:对一些概念和结论需要作直觉解释,如为什么说反证法比归谬律强?公式中括号配对、用引入黑点对公式中括号加以省略的方法不可取,需要补充构造性逻辑基础,增加Herbrand域和Herbrand定理,等等。Gentzen系统的一个主要优点在于研究和表达对偶性,而其部分推理规则的语义并不直观,不自然,对于本科生理解有一定的困难。如果采用胡世华等人给出的自然的演绎系统,那么,Gentzen系统在配以规则的语义解释之后,可以作为学生的课外读物。近年来,计算语义学的发展突出了逻辑公式的值的计算,因此,逻辑演算的系统特征应予加强,特别是等值代换推导与逻辑演算的归约(无嵌套范式、消函数词、消谓词、消等词)。
《数理逻辑基础》的写作还应该注意突出学科方法论的内容,适当介绍与计算机科学与技术有关的背景,特别是从语言的角度。对许多内容除了给出直觉解释外,还应该注意给出哲学解释。这些内容可以作为课外补充阅读和思考内容。
《数理逻辑基础》中关于赋值(解释、指派)在内的可靠性与完备性的内容要确保教学质量。对大多数非重点名牌大学,只要前面数学分析和高等代数等课程的教学质量有保证,此时完全可以与重点大学一样,按照重点大学的教学进度和较高的要求进行教学。本课程教学中要注意加强答疑,向学生强调课后阅读、理解、做作业、思考、体会这一过程的重要性。有条件的学校,应在教学中突出哪些内容对计算机科学与技术理论的发展具有重要意义的简单介绍。要确保学生完成相当的作业量和质量。
9.近世代数基础
“近世代数” 也叫“抽象代数”,是计算机科学与技术学科专业的重点基础课程之一。“近世代数”课程的教学目标有两个,一是让学生掌握“近世代数”基本内容,为学生今后学习后续课程和深入学习计算机科学与技术理论课程打下坚实的基础,二是让学生通过对课程内容的学习,帮助学生进一步实现思维方式的数学化。因此,关于这门课程的教学,应将各种基本概念、定理、定理证明、正反例、计算方法列为教学的重点,而不是将各种具体应用列为教学的重点。对大多数非重点名牌大学,只要前面数学分析和高等代数等课程的教学质量有基本保证,此时完全可以与重点大学一样,按照重点大学的教学进度和较高的要求进行教学。作为现代数学有代表性的基础之一,“近世代数”课程的内容应该突出结构和抽象的特点。例如,格的内容不可缺少。这不仅是因为其为语言研究提供了有力的数学工具,而且,它在帮助读者顺利迈入泛代数理论方面有重要作用。
计算机科学与技术学科发展的不断深化,兼有计算密集性和数据密集性特点的高性能计算研究的深入开展,使学术界对大量复杂研究对象如子程序、抽象数据类型、对象、多媒体对象、Agent、智能Agent、知识源等有了更深的认识。从计算实现技术和计算正确性的角度考虑,需要在理论上研究以这类对象为背景的数学对象的表示及其运算操作以支持对它们语义学的研究,而早期以简单个体论域及其运算为研究对象的“近世代数”已经不能完全解决问题,需要引入和发展泛代数理论。然而,由于泛代数内容的引入,又使得“近世代数”课程的内容必须与“高等代数”课程的内容进行合理的分工,以平衡两门课程的教学。为此,我们建议群的内容上移至“高等代数”课程内。本教材还应突出学科方法论的内容,阐述“近世代数”作为现代数学的标志性特点。
由于近世代数课程的教学在计划中被安排在集合论与图论课程的前面,因此,课程中用到的集合与关系的一些知识必然需要在近世代数中首先引入,但要控制深度,防止与后续课程产生喧宾夺主,以必要的预备知识为准。当然,这样安排也多少减轻了“集合论与图论”课程的内容压力。
本课程教学中要注意加强答疑,向学生强调课后阅读、理解、做作业、思考、体会这一过程的重要性,应在教材中简单介绍与理论计算机科学发展背景有关的内容。教材要确保学生完成一定作业量。
10.集合论与图论
“集合论与图论”是计算机科学与技术的重点基础课程之一。“集合论与图论”课程的教学目标有两个,一是让学生学会集合论与图论基本的课程内容,为学生今后学习后续课程和深入学习计算机科学与技术理论课程打下坚实的基础,另一个是学生在二年级结束并初步实现思维方式数学化之后,让学生通过对课程内容的学习,进一步实现思维方式的数学化。因此,关于这门课程的教学,应将各种基本概念、定理、定理证明、正反例、计算方法列为教学的重点,而不是将各种具体应用列为教学的重点。对大多数非重点名牌大学,只要前面“数学分析”和“高等代数”等课程的教学质量有保证,此时完全可以与重点大学一样,按照重点大学的教学进度和较高的要求进行教学。
这门课程现有教材的主要问题是内容大都融入在《离散数学》之中,深度不够。本次教材的内容在创作上应该注意三个问题:
第一,要根据计算机科学与技术学科与“集合论与图论”的联系,选择“集合论与图论”中最基本的内容展开,保证相当的深度,尽可能地避免图论内容的描述过多地采用自然语言,抽象程度不高的问题;
第二,要防止“近世代数”中的一些内容与本课程发生重复。当然,由于教学计划中“近世代数”在前,“集合论与图论”在后,而“近世代数”中要讲授格的内容,不可能完全不重复(参考近世代数教材);
第三,作为构造性数学的代表课程,学科方法论的许多内容应该给予重点突出的地位,例如,递归归纳定义、公理化系统(自然数)、构造性证明方法,将图的问题转化为代数问题,等等。
关于公理集合论的内容,本书不涉及,但应该通过悖论的讨论引入公理集合论的概要介绍,为学生未来扩展这方面的知识提供线索。
从这门课程包括集合论和图论两方面的内容考虑,注意到学时数偏少而内容又相对容易,因此,教材的创作应该适当增加一些内容,作为学生自己将来通过自学扩展这方面知识的选材。教材要保证一定数量的习题,向学生强调课后阅读、理解、做作业、思考、体会这一过程的重要性,有条件的学校,应在教学中突出哪些内容对计算机科学与技术理论的发展具有重要意义。要确保学生完成相当的作业量和质量。
11.编译程序设计原理
编译理论和技术是计算机科学与技术相当成熟的领域之一。编译程序设计是计算机科学与技术系软件专业的重要基础课程,也是传统课程。过去,编译的教材主要围绕程序设计语言的实现展开,过多地在各种语法及其分析方法方面讨论,占用篇幅太大。而事实上,大多数人不可能也没有必要对这些东西了解得那么细。倒是语义的处理,特别是使用工具进行语言的转换很少讨论。作为现代计算机科学与技术教材系列,在设计该教材时,我们将从语言转换入手,把程序语言的实现放到语言转换的大背景下,贯彻理论、实践和应用并举的方针。具体来说,从以下四个方面指导教材内容的安排。
(1) 改变人们认为编译原理就是介绍如何实现编程语言的观念。从信息表示到语言的定义,过去处理过于简单,这样就带来了后面需要增加语法和语义处理的内容阐述。将这部分内容的地位突出,对简化后面内容的处理有好处。从整个学科发展的特点看,问题如何表示已经成为能否较好地处理问题的关键因素之一,处理方法的好坏往往取决于处理对象的表示方法。因此,站在信息处理的高度来看待编译原理课程十分重要。从信息和信息的表示,语言的定义, 语言的语法和语义, 语言的转换这样三层递进关系和高度去理解编译程序设计原理是我们设计这本教材的出发点;
(2) 词法分析,语法分析,语法制导翻译,代码生成和优化仍是该课程的核心内容,尤其对于重点大学计算机软件专业。词法处理的思想很简单,用数学的方法很容易在两次课程内就解决。语法的处理,重点就是上下文无关文法及其分析算法,代码优化的思想和一些简单的优化方法可以作介绍。有关文法中各种文法的变形和一些具体文法,以及编译程序运行环境和代码优化,只要不是必须的,可以通过概要论述,用一些由学生自己扩展知识的章节去处理,而不在教材内容的主线上。这些内容中,与文法理论密切相关的将来可以安排在形式语言与自动机理论教材中,与语义理论相关的内容将来可以安排在形式语义学教材中,与结构代码优化相关的内容,将来可以安排在程序设计方法学教材中。
此外,应该增加关于对象和并发机制如何实现的内容,而编译程序的运行环境应该作为学生今后课外扩展知识的内容加以陈述。
(3) 强调实践。目前开发编译系统主要是应用编译自动化工具,尤其在国外的计算机公司中,已经十分普遍。因此,我们将介绍几个有代表性的编译自动化工具并配有相应的实例介绍,同时讨论一些如何根据项目特征选择编译自动化工具的方法。这部分中有一些可作为学生自学和扩展编译实现技术知识的内容。
(4) 强调应用。这里所说的应用区别与(3)中的实践,主要是指编译技术在程序设计语言实现以外的领域的应用。所以设置了一个介绍各种专题的部分,同时介绍一些较深入的专题,如语言转换正确性,面向对象语言中结构对象的实现技术,并行编译等。
12.操作系统原理
“操作系统原理”是计算机科学与技术专业一门重点专业基础课程。本课程的教学目标是针对计算机科学与技术专业学生,介绍并使学生初步掌握操作系统设计的原理和关键实现技术。作为系统软件的一部分,除了各自的内容之外,操作系统原理与编译程序原理主要的区别是后者经过多年的发展,已经形成了比较完整的、严格的数学理论(实时、并发部分除外),而操作系统对各部分内容的阐述,主要还是一种技术性的原理。尽管从字符命令式界面的操作系统早已发展形成视窗界面的系统,有些内容引入数学工具给出了更好的描述,但是,长期以来,大量操作系统课程的教材依然采取(概念+结构)和(功能+模块)的方式表述。然而由于操作系统技术性的原理在各种计算机系统上的具体实现存在各种实例,其中不少内容仅仅只是技术改良和变形,因此,按照这种方式介绍操作系统,如果没有十分有力的实践环节加以配套支持,学生学完操作系统仍然对操作系统的实现感到茫然。
从操作系统原理课程的内容分析,不难看出,作为一种技术性的原理,许多内容在概念、思想、方法和技术方面并没有理解上的困难,完全没有必要将很多细节全面展开。例如,对于文件的管理,传统的教材中不仅介绍页式管理,而且介绍段式管理、段页式管理,而实际上,这些管理的概念、思想、技术十分相似,教材中描述其中的一种,其他的作为学生课外学习(如习题、讨论等)和今后扩展知识完全可行。类似的内容还有不少。这样,就为操作系统教材内容的改革提供了空间。作为计算机科学与技术专业的学生,从理论与实践相结合的角度考虑,今后不仅要在操作系统的实践环节加大教学的力度,如在操作系统基础实验的基础上,增加操作系统课程设计环节,而且,还应该在课堂教学中,结合操作系统各主要部分关键环节的概念、功能、方法和技术的原理性阐述,结合某种技术先进,有代表性的操作系统的原代码,深入分析和讲解这些部分关键环节实现的细节。考虑到许多学校的办学条件,我们建议采用Linux操作系统的原代码。当然,在结合Linux操作系统原代码阐述的同时,必须逐行给出Linux原代码的注释和程序模块的分析说明。
站在计算模型的角度从外部观察操作系统,实际上它是一个环境与平台,是一个执行操作命令与支持各种程序设计语言、软件开发工具运行的计算模型。用户的各种操作命令,用户(程序)对于高级语言和各种软件开发工具的调用,实际上是该计算模型处理的语言成分。本次操作系统教材的创作应该体现这个观点。此外,操作系统的教材还应注意将一些核心概念、典型方法、典型实例等学科方法论的内容引入和应用。
本课程教材中应该引入现代计算机系统中线程的概念,暂时可以不作深入的介绍。关于现代计算机系统中操作系统如何管理多功能部件的内容应该独立形成一个章节。关于进程管理、处理机调度的内容,有关的算法可以采用数学语言的方式介绍,不必再引入计算模型,但应该在附录中给出这些内容的原代码及其注释。
关于并行计算机操作系统和分布式操作系统的内容,只作简要介绍,分析、指出在那些系统中需要考虑和解决的问题,但不作深入和展开。这部分内容不作基本要求,用于学生课外扩展知识。
本课程要确保学生完成一定数量和质量的习题。计算机科学实验课程将安排一些有代表性的上机实验单元与本课程相呼应,目的是通过实验让学生体会理论、抽象、设计等三个过程。其中,至少有一个单元是课程设计,如I/O驱动程序的分析、设计与实现。
13.数据库系统原理
“数据库系统原理”是计算机科学与技术专业一门重要的专业基础课程。本课程的教学目标是针对计算机科学与技术专业学生介绍数据库管理系统的原理和关键实现技术,使学生初步掌握数据库管理系统的原理与关键实现技术,掌握数据库系统的设计。本课程的教学内容将针对大量的信息处理对象,引入关系代数理论,介绍对象数据表示的抽象的、基本的关系模型表示方法,构造关系模型上的基本关系代数运算操作。从数据库系统原理的角度,针对基于关系模型的数据库系统的原理阐述系统的结构、各部分的功能和相互关系,从数据库应用的角度,阐述数据库设计与数据库查询语言的基本内容,从数据库实现的角度,结合典型数据库管理系统的原代码及其注释,深入阐述系统中某些重要部件及其关键环节的实现方法和技术。
由于关系模型已经比较成熟,严密,因此,根据新体系学生已经具有较好的数学基础和数学修养,与离散数学联系密切的关系数据库的核心理论不应该占用太大的篇幅。但是,过去关于关系数据模型上的基本运算操作以及其他部分的运算操作,很少讨论操作的语义,这是过去教材的一个不足之处。本次课程教材按照理论体系应该突出计算模型、计算过程(算法或程序)和计算的正确性,而数据库系统的计算模型主要是RBM,它支持关系模型上的运算操作,而操作的语义应该通过状态机或元语言描述(此处应该与数据结构中刻画语义的计算模型保持一致)。当然,这样一种对操作过程语义的介绍并不等于语义的内容要在本课程全面召开。我们主要是引入这样的基本内容给读者以基本的认识,计算的正确性问题普遍存在,不能回避,“数据库系统原理”课程中需要对基本的关系数据元组上的基本操作讨论其正确性,需要读者建立新的认识。至于对复杂的操作的语义问题,可以在今后研究生阶段学习或自学了语义学课程的内容后,不难理解和使用语义学方法解决这类问题。对于数据库系统中数学理论较弱而表现为原理性的部分,如目录管理、日志等大量技术性的内容,应该通过概念、结构、功能和原理性的阐述,结合典型数据库系统的原代码,围绕其中的一些关键环节展开讨论。原代码的给出应该建立在深入分析的基础之上,给出原代码注释和详细说明,但不作为课堂讲授的主要内容。今后,数据库系统原理课程将安排一些单元的实验和课程设计与本课程教材相呼应。
站在计算模型的角度从外部观察数据库管理系统,实际上它是一个环境与平台,是一个主要执行数据库查询操作命令,支持数据库数据内容更新、维护操作的计算模型。用户的各种操作命令实际上是SQL的语句和系统维护的基本操作命令,他们都是计算模型处理的语言成分。本次操作系统教材的创作应该体现这个观点。此外,操作系统的教材还应注意将一些核心概念、典型方法、典型实例等学科方法论的内容引入和应用。
本课程教材中应该引入现代数据库系统中面向对象、多媒体、分布式和并行数据库系统的概念,但不作为重点和必修内容,而是作为学生的课外读物和自己扩展知识的部分,埋下伏笔,留给后续课程讨论。不过,有关数据库系统应用方面的内容,应该结合实例给出具体应用的一个范例。而范例的给出,重在学生如何从实际问题出发,通过分析问题和数据库系统知识的支持,给出解决方案。这部分重在工作流程和方式方法的阐述,一些具体细节作为课外读物或作业。
有关数据库系统原理课程中的算法,建议与数据结构的描述方法保持一致(待数据结构详细大纲出来后再提供),采用数学语言的方式描述,不必再引入计算模型。
本课程要确保学生完成一定数量和质量的习题。计算机科学实验课程将安排一些有代表性的上机实验单元与本课程相呼应。其中,至少有一个单元是课程设计,如事务管理程序的分析、设计与实现,目的是通过实验让学生体会理论、抽象、设计等三个过程。
14(1) 算法设计与分析(第一方案)
“算法设计与分析”是计算机科学与技术专业一门重点专业基础课程。本课程的教学目标是针对计算机科学与技术专业学生,通过介绍计算模型、算法基本理论、算法设计方法与效率分析方法,结合实例使得学生在非数值计算方法的层面上具备抽象描述解决一些实际问题的能力,学会运用算法设计与分析的典型方法根据计算方法设计算法,具备分析算法效率的能力。
算法作为计算机科学与技术学科的核心问题之一,经过几十年的发展,已经积累了丰富的内容。在过去的几十年里,国内外已经出版了一批算法设计与分析的教材。在这些教材中,或多或少地存在的突出的问题是没有体现抽象描述求解问题与具体实现解决问题的研究相分离的特点,没有突出计算模型的地位;在算法设计实例内容的取材方面,过多地在一些同一层面难度的基本算法之间徘徊,没有体现取材广泛,由浅入深逐步推进的特点,与数据结构的内容之间产生不少重复;由于下界理论的内容在许多教材中被安排在研究生课程中讲授,因此,如何证明一个算法为最优算法往往被遗漏了,对概率算法的介绍也基本回避;对于算法复杂性理论中的NP理论部分,一些教材又不恰当地进行介绍,与计算复杂性理论之间不协调。
本次算法设计与分析教材第一方案的要点是在改进上述不足的同时,突出算法设计与分析典型方法,以及设计和证明高效算法等内容的阐述。因此,教材首先应该引入某种抽象的计算模型(如随机存储计算模型),按照计算理论的结论默认该模型可支持数学语言的执行(教材中所有算法均使用数学语言描述,体现抽象描述与具体实现相分离的特点和原则),然后,基于计算模型给出算法、效率、复杂性、复杂性分析理论的内容,再根据广泛的背景取材,在逐一介绍算法基本设计方法的同时,结合具体的实际问题,阐述如何运用数学方法给出非数值问题的计算方法,如何依据计算方法和算法设计与分析的典型方法解决具体实例的算法设计与分析问题。每一种典型方法结合实例阐述一般为两例,一浅一深,其他实例作为课外读物或习题。大多数习题应尽可能比较规整。对于一些求解方法不能归入典型方法的实例,也应该根据其应用的前景,适当介绍其中的两至三种实例。本教材剩余部分的内容重点在于两个方面:一是下界理论和代数化简,阐述证明最优算法的理论方法,提供设计高效率算法的数学方法;另一个是从计算模型和算法复杂性的角度,引入非确定性判定算法的概念阐述NP理论,并指出这样一种复杂性与Blum测度概念意义上的计算复杂性之间可能的联系,从而展示计算复杂性的内容前景。至于NP理论,建议写成学生课外读物的形式,不必非要在课堂讲授。
本课程要确保学生完成一定数量和质量的习题。教材中一些有代表性的例题的算法可以在教材后面以附录的形式用高级语言列出供学生参考。计算机科学实验课程将安排一些有代表性的上机实验单元与本课程的内容相呼应,目的是通过实验让学生进一步掌握算法设计与分析的基本知识,获得感性认识。
14(2) 算法设计与分析(第二方案)
“算法设计与分析”是计算机科学与技术专业一门重点专业基础课程。本课程的教学目的是针对计算机科学与技术专业学生,通过介绍计算模型、算法基本理论、算法设计方法与效率分析方法,结合实例使得学生在非数值计算方法的层面上具备抽象描述解决一些实际问题的能力,学会运用算法设计与分析的典型方法根据计算方法设计算法,具备分析算法效率的能力。
算法作为计算机科学与技术学科的核心问题之一,经过几十年的发展,已经积累了丰富的内容。在过去的几十年里,国内外已经出版了一批算法设计与分析的教材。在这些教材中,或多或少地存在的突出的问题是没有体现抽象描述求解问题与具体实现解决问题的研究相分离的特点,没有突出计算模型的地位;在算法设计实例内容的取材方面,过多地在一些同一层面难度的基本算法之间徘徊,没有体现取材广泛,由浅入深逐步推进的特点,与数据结构的内容之间产生不少重复;由于下界理论的内容在许多教材中被安排在研究生课程中讲授,因此,如何证明一个算法为最优算法往往被遗漏了,对概率算法的介绍也基本回避;对于算法复杂性理论中的NP理论部分,一些教材又不恰当地进行介绍,与计算复杂性理论之间不协调。
本次算法设计与分析教材第二方案的要点是在改进上述不足的同时,突出算法设计与分析典型方法,尽可能广泛结合各类实例进行内容的阐述。因此,教材首先应该引入某种抽象的计算模型(如随机存储计算模型),按照计算理论的结论默认该模型可支持(数学语言)的执行(教材中所有算法均使用数学语言描述,体现抽象描述与具体实现相分离的特点和原则),然后,基于计算模型给出算法、效率、复杂性、复杂性分析理论的内容,再根据广泛的背景取材,在逐一介绍算法基本设计方法的同时,结合具体的实际问题,阐述如何运用数学方法给出非数值问题的计算方法,如何依据计算方法和算法设计与分析的典型方法解决具体问题。每一种典型方法结合实例阐述至多为两例,一深一浅,其他实例作为课外读物或习题。大多数习题应尽可能比较规整。对于一些求解方法不能归入典型方法的实例,也应该根据其应用的前景,广泛涉及,分类介绍。对于下界理论和代数化简,第二方案只介绍下界理论。本教材剩余部分的内容重点包括两方面的内容:一是从计算模型和算法复杂性的角度,引入非确定性判定算法的概念阐述NP理论,并指出这样一种复杂性与Blum测度概念意义上的计算复杂性之间可能的联系,从而展示计算复杂性的内容前景;二是介绍概率算法、近似算法的基本内容和一批实例及其求解。概率算法和近似算法的引入,需要对前面的内容进行适当平衡。我们建议,概率算法和近似算法的内容约占本书篇幅的1/3弱。
本课程要确保学生完成一定数量和质量的习题。教材中一些有代表性的例题的程序可以在教材后面以附录的形式用高级语言列出供学生参考。计算机科学实验课程将安排一些有代表性的上机实验单元与本课程的内容相呼应,目的是通过实验让学生进一步掌握算法设计与分析的基本知识,获得感性认识。
15. 计算机组成原理
“计算机组成原理”是计算机科学与技术专业本科生的一门重点基础课程,教学的目标是在学生基本掌握“计算科学导论”、“数字逻辑”、“布尔代数”、“高级语言程序设计”等知识并对计算模型有一些基本认识的基础上,通过对抽象计算模型与现代电子数字计算机之间的联系,计算机内部组织结构和工作原理的介绍,使学生掌握计算机的工作原理,初步具备分析、设计计算机基本部件的能力。教学的重点不在于让学生从书本上理解具体内容,而是要强调在掌握“计算机组成原理”基本概念、基本原理和基本部件的基础上,每一个学生都能理论联系实际,动手解决一些实际的分析与设计问题。教学计划内将在计算机科学实验课程中安排与“计算机组成原理”课程有关的实验单元与课堂讲授的内容相呼应。
现代电子数字计算机原理将是本课程教学的内容。现代电子数字计算机是由一些逻辑电路和数字系统组合而成。存储器、控制器、运算器、输入和输出是本课程的重点,教学中这些内容将围绕指令系统的实现而展开。在前驱课程“数字逻辑”课程的基础上,计算机组成原理中各部分的结构和原理将采用VHDL语言来描述。现代电子计算机的设计受到各种计算问题特点和软件开发的影响,接口和多功能部件的重要性随之突出,而且,指令系统的日渐庞大促进了精简指令系统计算机技术(RISC)的发展,这些内容都应该向学生讲授。此外,课程的教材还应该以当前先进的计算机系统作为宿主机,阐述计算机设计的一些认识基础和实例分析作为学生课外阅读材料。
介绍计算机组织结构和原理,可以采用先局部后整体的“自底向上”的方式,也可以采用先整体后逐步细化各部分内容的“自顶向下”的方式。由于VHDL语言的引入,我们建议采用“自顶向下”方式由浅入深地逐步细化整个计算机硬件系统,这样学生比较容易掌握。
本书的内容还应该适当介绍与计算机体系结构有关的一些发展前景的内容,为未来学生学习计算机体系结构课程埋下伏笔。
(本报告未完,其它课程的内容待续)
致读者: 2001年3月,国防工业出版社聘请杨芙清、夏培肃、陆汝钤(三院士作为顾问)等一批学者组建了《现代计算机科学与技术教材系列》编审委员会,基于13-22项目组教育与教学改革获奖成果:计算机科学与技术一级学科人才培养科学理论体系(框架),按照学科系列教材系统研究报告和一体化设计方案要点,动员和组织国内外一批在第一线从事科学研究,学有所成的科学家创作高起点的教材,参与国际竞争。本文即是这项工作的阶段性成果。目前,我们已经初步确定了第一批基础和专业基础课程教材的作者和学术编审人人选,其它课程和研究生课程尚未确定作者等人选,我们热诚欢迎国内具有较高研究水准的学术同行关心、支持和加入到这项工作中来,欢迎与我们联系。
主 要 参 考 文 献
[1] Zhizhuo Zhao, The Education of Computer Science and Technology in University(2nd Ed.), Science Press, Beijing, 1998.
赵致琢,《计算科学导论(第二版)》,科学出版社,2000.
[2] Zhizhuo Zhao,The Education of Computer Science and Technology in University, Science Press, Beijing, 2000.
赵致琢,《高等学校计算机科学与技术学科专业教育(第二版)》,科学出版社,2000.
[3] 赵致琢,关于计算机科学与技术认知问题的研究简报(Ⅰ,Ⅱ),计算机研究与发展,2001,38(1),1-15.
[4] Cross Ⅱ J. H., Denning, P. J., et al, Composition of the Curriculum 2001 Joint Task Force, 2000, 1-54, Published in electronic file on the internet.
[5] Lee E. A., Messerschmitt, D. G., Engineering and Education for the Future, IEEE Computer, January, 1998, 77-85.
[6] Bernal J. D., The Social Function of Science, George Routledge and Sons Press, 1944.
贝尔纳 J. D.,《科学的社会功能》,商务印书馆,1986.
[7] Von Rickert H., Kulturwissenschaft und Naturwissenschaft, Tubingen Mohr, 1921.
李凯尔特 H.,《文化科学和自然科学》,商务印书馆,1991.
[8] William K., Martha K., The Development of Logic, Oxford Press, 1962.
威廉 K., 玛莎 K.,《逻辑学的发展》,商务印书馆,1995.
注: 本文依据的由13-22项目组内厦门大学完成的教育与教学改革研究成果“计算机科学与技术一级学科人才培养科学理论体系(框架)”2000年获得福建省教学成果奖一等奖,2001年获得国家级教学成果奖二等奖。
* 本报告得到教育部教育与教学改革13-22、C014、厦门大学科学基金项目的资助。