前言 “计算科学导论”是理工科学生的专业基础课程,本书全面介绍了计算科学核心课程的基础知识,这些内容是每个计算科学从业人员都应当了解和掌握的基本核心知识。 写作目标 本书的写作原则是: 介绍基础知识,开阔专业视野。作者期望达成以下目标。 (1) 说明计算无所不在。本书尽量从商业领域、社会科学领域和日常生活中选取不同的案例讨论计算的普遍性。例如,囚徒困境问题、热门检索词排名、平均工资计算问题等,从不同侧面讨论了计算的普遍性。 (2) 讨论解决问题的方法。本书强调用计算思维的方法讨论和分析问题。如数学建模讨论中,重点讲解利用计算思维进行建模的方法,而不是数学模型的理论推导和技术实现细节。在程序设计、信息编码、体系结构、操作系统、网络通信、信息安全等内容中,尽量结合计算思维来讨论问题。 (3) 介绍专业知识框架。ACM/IEEECS在CS2013中提出了计算科学的18门核心课程,本书覆盖了这些课程最基本的核心知识点。受教学课时的限制,一些核心课程的内容不会专门开课讲授。例如,本书介绍了10种程序设计语言,虽然很多编程语言读者可能不会用到,但是了解它们的技术特点可以开阔读者的专业视野。 主要内容 第一部分(第1~4章)是课程最基本的核心知识。第1章主要介绍计算机的发展历程、计算技术的特征、计算学科的核心课程、计算领域的知识产权、职业道德和规范等内容; 第2章主要介绍程序语言的演变过程、程序语言的基本语法、不同程序语言的设计风格、软件工程的基本方法等内容; 第3章主要介绍计算思维的基本概念、数学建模的典型案例、可计算理论的基本概念、计算的复杂性、计算学科的经典问题等内容; 第4章主要介绍算法分析的基本方法、常用的经典算法、数据结构基本概念等内容。 第二部分(第5~8章)是相关核心课程的基础知识。第5章主要介绍信息编码、数理逻辑; 第6章主要介绍组成原理、操作系统; 第7章主要介绍网络通信、信息安全等; 第8章讨论了目前计算领域的热门技术,如人工智能、大数据、数据库、区块链技术、计算社会学等内容。教师可以根据不同专业的需要,选择部分内容进行教学。 几点说明 (1) 明确概念。ACM/IEEE发布的《2020年计算课程: 全球计算教育范例》建议采用“计算”(Computing)一词作为计算工程、计算科学等所有计算领域的统一术语。本书缩小了名词计算机(Computer)的概念范围,计算机专指与具体机器相关的概念,如个人计算机、计算机程序、计算机网络等。名词计算(Computing)用来表示抽象或整体概念,如计算科学、计算学科、计算领域、计算技术等。计算一词的内涵和外延都大于计算机。 (2) 内容编排。尽管本书有自己的结构体系,但各个主题在很大程度上相对独立。教师完全可以根据不同专业的教学要求,重新调整讲授内容和讲授顺序。本书每章大致讨论两个或更多的核心课程内容。本书对一些理论性问题尽量用图、表、案例的形式加以说明,试图帮助读者加深对所述内容的理解,但是作者也会存在力有不逮的情况。 (3) 一家之言。本书写作中,作者力图以严肃认真的态度分析和讨论,但是难免会掺杂一些作者不成熟的看法与意见。如计算工具的发展、计算机类型的划分、第一台电子计算机的发明、软件的分类、对冯·诺依曼计算机结构的阐述、程序控制计算机的思想、并行传输与串行传输的性能比较、电子信号的传输速度、大型计算机集群系统的设计等,这些内容可能与目前的主流技术观点有所不同。这都是作者一些不成熟的看法,仅仅是一家之言,期望专家学者们批评指正。 (4) 教学建议。本书遵循ACM/IEEECS倡导的“广度优先”原则,讨论范围涉及计算科学的核心知识点。对没有形成计算科学整体观念的读者来说,有些内容不易理解很正常。如可计算理论、计算复杂性、数据结构、程序编译、组成原理、数理逻辑、机器学习等内容中,很多名词、概念、算法、程序等理解起来都有一定的难度。作者建议教学中讲授计算科学的核心知识“有什么”,不要讨论“为什么”,这是后续专业课程的要求。 (5) 编程语言。本书对算法的说明和实现采用Python编程语言。考虑到读者不一定学习过Python编程语言,书中的程序案例都进行了详细的语法注释和算法说明,这些注释的目的是帮助读者快速理解程序。在实际工程中,程序注释不需要说明语法规则和算法思想,而是说明程序意图或语句参数,增强程序的易读性和可维护性。 (6) 教学资源。本书提供了大量课程教学资源,如教学大纲、PPT教学课件、习题参考答案、程序代码、技术资料、教学参考文档等,这些教学资源可在清华大学出版社网站下载: http://www.tup.tsinghua.edu.cn/。 致谢 本书由易建勋(长沙理工大学)、刘珺(河南工程学院)编著,邓江沙、唐良荣、廖寿丰、周玮等老师在本书写作中提供了很多帮助,作者非常感谢他们的帮助。 尽管作者非常认真努力地写作,但水平有限,书中难免有疏漏之处,或者存在以偏概全的讨论,恳请各位同仁和读者批评指正。 作者 2021年10月22日