《“十二五”普通高等教育本科国家级规划教材·计算机科学导论:思想与方法(第2版)》根据教育部高等学校计算机科学与技术教学指导委员会、IEEE-CS和ACM对计算机导论课程的要求,在学科思想方法这个较高的层面将学科知识有机地统一起来,避免了学科知识的杂乱堆积,有助于课程的教与学,也有助于学生计算思维能力的提高。 《“十二五”普通高等教育本科国家级规划教材·计算机科学导论:思想与方法(第2版)》主要内容有:计算学科专业名称的演变及培养的侧重点,学科知识体与核心课程,“计算机导论”课程的构建,计算思维与计算机导论,学科的基本问题,学科中的抽象、理论和设计3个学科形态,学科中的核心概念、数学方法、系统科学方法,社会与职业问题,以及学科若干问题的探讨与学科未来教育的展望等。为了使读者更好地理解和掌握书中的内容,《“十二五”普通高等教育本科国家级规划教材·计算机科学导论:思想与方法(第2版)》在第1版的基础上,增加了大量的实例和习题。 《“十二五”普通高等教育本科国家级规划教材·计算机科学导论:思想与方法(第2版)》可作为高等学校“计算机导论”或“计算思维导论”等课程的教材或参考书,还可供有关专业的学生、教师和科技人员参考。
《“十二五”普通高等教育本科国家级规划教材·计算机科学导论:思想与方法(第2版)》是长期课程建设及教学研究与实践的结果。《“十二五”普通高等教育本科国家级规划教材·计算机科学导论:思想与方法(第2版)》以计算思维能力的培养为核心,用严密的方法将学生引入计算学科各个富有挑战性的领域。经过十多年的研究、实践和建设,以《“十二五”普通高等教育本科国家级规划教材·计算机科学导论:思想与方法(第2版)》为主要内容的计算机导论课程被评为国家精品课程。
《“十二五”普通高等教育本科国家级规划教材·计算机科学导论:思想与方法(第2版)》抓住课程关键,注重内容的合理性、系统性,以及在教学上的可操作性。《“十二五”普通高等教育本科国家级规划教材·计算机科学导论:思想与方法(第2版)》抓住课程结构设计这个关键问题,基于学科认知模型对学科知识进行了系统化的梳理,将学科中一些看似零乱的知识有机地联系起来,精选并构造了大量实例,增强了《“十二五”普通高等教育本科国家级规划教材·计算机科学导论:思想与方法(第2版)》在教学上的可操作性。
《“十二五”普通高等教育本科国家级规划教材·计算机科学导论:思想与方法(第2版)》追踪国际计算机教育动态,从学科的思想方法人手讲授学科的本质和核心概念,可以有效地提高学生的计算思维能力。《“十二五”普通高等教育本科国家级规划教材·计算机科学导论:思想与方法(第2版)》根据IEEE-CS和ACM对计算机导论课程严密性和挑战性的要求,从学科的思想方法人手讲授学科的本质和核心概念,提供了与硬件优先、算法优先、程序优先不同的,从学科认知规律人手的教学模式,可以有效地提高学生的计算思维能力。
《“十二五”普通高等教育本科国家级规划教材·计算机科学导论:思想与方法(第2版)》配有丰富的教学资源,极大地方便了教学。《“十二五”普通高等教育本科国家级规划教材·计算机科学导论:思想与方法(第2版)》有配套的学习网站,网站上有完整的电子教案、丰富的程序演示动画、大量的习题,以及与《“十二五”普通高等教育本科国家级规划教材·计算机科学导论:思想与方法(第2版)》配套的存储程序式计算机模拟平台,方便了计算机导论课程的教与学。
计算机导论课程的构建问题是计算教育面临的一个重大问题,在计算教育史上具有里程碑意义的美国的《计算作为一门学科》(Computing as a Discipline)报告认为,该课程要用严密和富有挑战性的方式培养学生面向学科思维的能力,使学生领会学科的力量以及从事本学科工作的价值之所在。
经过十几年的教学实践,美国这一教学理念已被国内相当多的人接受,而从计算思维,或者说从更为具体的学科思想方法这个层面讲授计算机科学,更是得到了越来越多人的支持。
中国科学院院士陈国良教授多次指出,近代科学有一个趋势,就是定量化和精确化。而定量化和精确化正是计算学科的特征。因此可以预测,近代科学的发展和突破,需要通过计算来实现。
计算推动着人类科技的进步,影响着各门学科的发展,并产生了一系列的新兴学科,如计算生物学、计算物理学、计算化学、计算经济学、计算社会学、计算地质学、计算气象学等。通过对生命系统的建模,可以看到,计算生物学正在改变着生物学家的思考方式。计算机科学对于生物学的贡献绝不限于能够在海量时序数据中搜索寻找模式规律,而是最终希望能够通过数据结构和算法——计算的抽象和方法——揭示生命的奥秘。比如可以将DNA序列看作是图灵机的纸带,将DNA序列上的基因组数据看作是计算机的程序或数据,通过基因组数据的变换来保证细胞生存的需要。当然,也可以将生物病毒看作是一段DNA序列,它嵌入正常细胞中的DNA序列而导致细胞功能异常,这与一个计算机病毒嵌入正常程序而导致程序功能异常是类似的。这预示着未来,人们不仅可以控制疾病,甚至还可以像编写计算机软件那样去合成DNA序列,有目的地创造出生命。类似地,量子计算改变着物理学家的思考方式,纳米计算改变着化学家的思考方式,算法博弈理论改变着经济学家的思考方式。另外,计算机科学也在改变天文学家、流行病学家,甚至数学家的研究方式,“算法”本身的研究不仅为数学的研究提供了新的机遇,而且还会加深人们对问题的理解。
大学,特别是正处于国家现代化转型期的中国大学,应该在一年级就讲授学科中那些富有挑战性的问题,以及解决问题的思维方式。
第1章 绪论.
1.1 引言
1.2 学科专业名称的演变、学科描述及培养侧重点
1.3 学科知识体和核心课程
1.3.1 计算机科学知识体及专业核心课程
1.3.2 计算机工程知识体及专业核心课程
1.3.3 软件工程知识体及专业核心课程
1.3.4 信息技术知识体及专业核心课程
1.4 如何构建“计算机导论”课程
1.5 计算思维与计算机导论
1.6 本章小结
习题
第2章 学科的基本问题
2.1 引言
2.2 对问题进行抽象的一个典型实例:哥尼斯堡七桥问题
2.3 可计算问题与不可计算问题
2.3.1 梵天塔问题
2.3.2 算法复杂性中的难解性问题、P类问题和NP类问题
2.3.3 证比求易算法
2.3.4 P=?NP
2.3.5 RSA公开密钥密码系统
2.3.6 -个不可计算问题:停机问题
2.3.7 旅行商问题与组合爆炸问题
2.3.8 找零问题、背包问题与贪婪算法
2.4 GOTO话句与程序的结构
2.5 哲学家共餐问题与计算机的资源管理
2.6 两军问题与计算机网络
2.6.1 两军问题
2.6.2 互联网软件的分层结构
2.7 人工智能中的若干哲学问题
2.7.1 图灵测试
2.7.2 西尔勒的“中文屋子”
2.7.3 计算机中的博弈问题
2.8 计算机科学各主领域及其基
本问题
2.9 本章小结
习题二
第3章 3个学科形态
3.1 引言
3.2 一个关于“学生选课”的例子
3.2.1 对“学生选课”例子的感性认识
3.2.2 对“学生选课”例子的理性认识
3.2.3 “学生选课”系统的工程设计
3.3 抽象形态.
3.4 理论形态
3.5 设计形态.
3.6 3个学科形态的内在联系
3.7 计算机语言的发展及其3个学科形态的内在联系
3.7.1 自然语言与形式语言
3.7.2 图灵机与冯·诺依曼计算机.
3.7.3 机器指令与汇编语言
3.7.4 以虚拟机的观点来划分计算机的层次结构
3.7.5 高级语言
3.7.6 应用语言
3.7.7 自然语言
3.7.8 小结
3.8 计算机科学各领域3个学科形态的主要内容
3.9 本章小结
习题三
第4章 学科中的核心概念
4.1 引言
4.2 算法
4.2.1 算法的历史简介
4.2.2 算法的定义和特征.
4.2.3 算法实例.
4.2.4 算法的表示方法
4.2.5 算法分析
4.2.6 常用的两类算法:搜索与排序
4.3 数据结构
4.3.1 数据结构的基本概念
4.3 2基于Vcomputer机器的数据结构概述
4.3.3 基于Vcomputer机器的数据的逻辑结构
4.3.4 基于Vcomputer机器的数据昀存储结构l
4.4 程序
4.5 软件
4.6 硬件
4.7 数据的存储和表示
4.7.1 进位制数及其相互转换
4.7.2 原码、反码、补码及其转换
4.7.3 字符、字符串和汉字
4.7.4 图像
4.7.5 声音
4.8 CC1991报告提取的核心概念
4.9 本章小结
习题四
第5章 学科中的数学方法
5.1 引言
5.2 数学的基本特征
5.3 数学方法的作用
5.4 计算学科中常用的数学概念和术语
5.4.1 集合
5.4.2 函数和关系
5.4.3 代数系统
5.4.4 字母表、字符串和语言
5.4.5 定义、定理和证明
5.4.6 必要条件和充分条件
5.5 证明方法
5.5.1 直接证明法和间接证明法
5.5.2 反证法
5.5.3 归纳法
5.5.4 构造性证明
5.6 递妇和迭代
5.6.1 递归
5.6.2 迭代
5.7 随机数和蒙特卡洛方法
5.7.1 随机数
5.7.2 蒙特卡洛方法
5.8 公理化方法
5.8.1 理论体系
5.8.2 公理化方法的基本概念
5.8.3 实例
5.9 形式化方法
……
第6章 学科中的系统科学方法
第7章 社会与职业问题
第8章 探讨与展望
附录A CC2001中的计算机科学知识体
附录B Armstrong公理系统
附录C 哲学家共餐问题的模型检验
附录D m+O=m的定理证明
索引
参考文献
语言、文法以及自动机有着密切的关系。语言由文法产生,文法是一种数学模型,是建立在有限集合上的一组变换(运算)。因此,根据代数系统的定义,也可以将文法看作是一种代数系统,而语言正是由这种代数系统产生的。
计算机使用的语言是一种形式语言,形式语言与自动机理论密切相关,并构成计算机科学重要的理论基础,在形式语言与自动机理论中,语言又可分为短语结构语言、上下文有关语言、上下文无关语言和正规语言,它们分别由0型文法、1型文法、2型文法和3型文法产生。自动机是识别语言的数学模型,各类文法所对应的自动机分别是图灵机、线性有界自动机、下推自动机和有限状态自动机。
需要指出的是,语言与数学模型不是一一对应的关系,一种语言可以由不同的文法产生,也可以由不同的自动机识别。
5.4.5定义、定理和证明
定义、定理和证明是数学的核心,也是计算学科理论形态的核心内容。其中,定义是蕴含在公理系统之中的概念和命题;定理是被证明为真的数学命题;证明是为使人们确信一个命题为真而作的一种逻辑论证。
数学家们认为,定义是数学的灵魂,定理和证明是数学的精髓。对一个问题来说,给出一个精确的定义是不容易的,以至有人认为,若能像图灵给出“计算”的形式化定义那样给出“智能”的定义,那么,“智能”的本质将被揭示,“智能”领域也将产生一个质的飞跃。
例5.8定义。定义是对一种事物的本质特征或一个概念的内涵与外延确切而简要的说明。陈波在其著作《逻辑是什么?》一书中,从定义的作用、规则等多方面对定义做了系统的论述。
(1)定义的作用。
①综合作用:人们可以通过定义,对事物已有的认识进行总结,用文字的形式固定下来,并成为人们进行新的认识和实践活动的基础。
②分析作用:人们可以通过定义,分析某个语词、概念、命题的使用是否适合,是否存在逻辑方面的错误。
③交流作用:人们可以通过定义,在理性的交谈、对话、写作、阅读中,对于所使用的语词、概念、命题有一个共同的理解,从而避免因误解、误读而产生的无谓争论,提高成功交流的可能性。
……