图书前言

前言

本书主要内容包括计算机硬件工作原理、程序设计方法、计算科学的主要研究领域。“计算科学导论”是理工科学生的专业基础课程,本书内容是每个计算科学专业人员都应当了解和掌握的基础知识。

写作目标

本书的写作原则是介绍基础知识,开阔专业视野。作者期望达成以下目标。

(1) 说明计算无所不在。本书尽量从商业领域、社会科学领域、日常生活中选取不同的案例(如囚徒困境、网页搜索、平均收入等问题)从不同侧面讲解计算的普遍性。

(2) 讨论解决问题的方法。本书强调用计算思维的方法讨论和分析问题。例如,数学建模讨论中,着重讲解利用计算思维进行建模的方法,而不是数学模型的理论推导和技术实现细节。书中尽量结合计算思维来讨论问题和解决问题。

(3) 介绍专业知识框架。ACM/IEEECS在CS2013中提出了计算科学的18门核心课程,本书在内容上尽量覆盖这些课程最基本的核心知识点。了解这些核心知识点有利于开阔读者的专业视野。

主要内容

第1~4章是本书最基本的核心知识。第1章主要介绍计算机的发展历程、计算技术的特征、计算学科的核心课程、计算领域的知识产权、职业道德和规范等内容; 第2章主要介绍程序语言的演变、程序语言的基本语法、不同程序语言的设计风格、软件工程的基本方法等内容(本书核心内容); 第3章主要介绍计算思维的基本概念、数学建模的典型案例、可计算理论基本概念、计算复杂性讨论、计算学科经典问题等内容; 第4章主要介绍算法分析基本方法、常用经典算法介绍、数据结构基本概念等内容。

第5~8章可以根据需要选择部分内容进行教学。第5章主要介绍信息编码、数理逻辑; 第6章按层次结构的方法介绍计算机基本工作原理(本书核心内容); 第7章主要介绍“网络通信”“信息安全”等核心课程的基本知识; 第8章讨论目前计算领域的热门技术,如人工智能、大数据、数据库、区块链、计算社会学等。

几点说明

(1) 明确概念。ACMIEEE《2020年计算课程: 全球计算教育范例》建议采用“计算”(computing)一词作为计算工程、计算科学等所有计算领域的统一术语。本书缩小了名词计算机(computer)的概念范围: 计算机专指与具体机器相关的概念,如个人计算机、计算机系统、计算机网络等。计算(computing)用来表示抽象或整体概念,如计算科学、计算学科、计算领域、计算技术等。计算一词的内涵和外延都大于计算机。计算学科的核心并不是研究计算机的结构和设计,而是研究计算方法、数据处理和程序设计。计算学科发表的专著和论文等,都反映了计算学科的研究重点。

(2) 内容编排。尽管本书有自己的结构体系,但各个主题在很大程度上相对独立。教师完全可以根据不同专业的教学要求,重新调整讲授内容和讲授顺序。本书每章至少讲解两个核心知识。本书对一些理论性问题尽量用图、表、案例的形式加以说明,试图帮助读者加深对所述内容的理解,但是作者也会存在力有不逮的情况。

(3) 一家之言。作者力图以严肃认真的态度分析和讨论,但是不免会掺杂一些不成熟的个人看法与意见,如计算工具的发展,计算机类型的划分,第一台电子计算机的发明,软件的分类,对冯·诺依曼计算机结构的阐述,程序控制计算机的思想,并行传输与串行传输的性能比较,电子信号的传输速度,大型计算机集群系统的设计等,对这些内容的理解可能与目前的主流技术观点有所不同,仅是一家之言,期望专家学者们批评指正。

(4) 课程困难。导论课程最大的难点在于建立自身的课程内容体系,千万不要使导论课程演变为其他专业课程的内容提要。因此,本书遵循了以下写作原则: 一是“广度优先”原则。本书讨论范围涉及计算科学的主要核心知识点,例如,本书介绍了当前流行的10种编程语言和它们的程序案例; 二是“整体关联”原则。例如,第2章对程序设计进行整体性和关联性介绍,第6章对计算机工作原理进行整体性和关联性讨论等; 三是“详简得当”原则。对今后的一些必修课程(如“C语言”“数据结构”等)进行简单介绍,对专业课程缺少的内容进行详细介绍,如对计算科学特征、软件知识产权、开源软件、职业道德规范、数学建模、计算复杂性、计算机集群、集成电路、量子计算机等内容进行详细讨论。

(5) 编程语言。本书对算法说明和实现采用Python编程语言。考虑到读者不一定学习过Python编程语言,因此本书中的程序案例都进行了详细的语法注释和算法说明,目的是帮助读者快速理解程序。在工程实际中,程序注释不需要说明语法规则和算法思想,而是要说明程序意图或语句参数,增强程序的易读性和可维护性。

(6) 教学资源。本书提供了大量课程教学资源,如教学大纲、PPT教学课件、习题参考答案、程序代码、教学参考文档等。这些资源都打包在“《计算科学导论》(第2版)教学资源”目录下,可在清华大学出版社官网下载。

致谢

本书由易建勋(长沙理工大学)、刘珺(河南工程学院)、孙燕(青海民族大学)、冯桥华(安顺职业技术学院)共同编著完成。

本书在编写过程中得到了廖寿丰(湖南行政学院)、李冬萍(昆明学院)、周玮(四川工商学院)等老师的支持和帮助,谨在此表示衷心感谢。

由于计算科学技术发展日新月异,加之作者水平有限,书中难免有疏漏和不足之处,恳请各位同仁和读者批评指正。

易建勋2024年1月22日