《计算机科学概论》目录—导读-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《计算机科学概论》目录—导读

简介:


dd0205fccda91046017f12b8f6623bbb6b492ef7

前 言
论题选择
为了制定这本CS0教材的论题大纲,我们利用了许多资源,包括课程目录、教材大纲以及一个电子邮件调查问卷。设计这个调查问卷的目的在于了解我们的同事对这门课应该包括哪些内容的想法。我要求大家(包括自己)列出下列三种清单:
如果CS0这门课是学生在大学阶段学习的唯一一门计算机科学的课程,请列出四种你认为他们应该掌握的论题。
请列出四种你想要学生在进入CS1这门课之前掌握的论题。
请补充四种你想要学习CS1的学生熟悉的论题。
这些资源的交集反映出的大多数人的意见,也就构成了本书的大纲。在学习CS1之前掌握了本书内容的学生将为继续学习计算机科学打下坚实的基础。尽管我们的意图是编写一本CS0教材,但是许多评论家都认为本书的覆盖面非常广泛,可以作为一种程序设计语言的计算机科学导论的参考书。
结构说明
在第1章中,我们介绍了硬件和软件的历史,并且用洋葱的结构来类比计算机系统的结构。计算机和它的机器语言构成了洋葱的芯,软件层和更复杂的硬件一层层地裹住了这个芯。首先介绍的是机器语言,然后是高级语言,包括FORTRAN、Lisp、Pascal、C、C++和Java。在介绍这些语言的同时,还介绍了利用它们进行程序设计的过程,包括自顶向下的设计和面向对象的设计。我们对抽象数据类型所扮演的角色及其实现的理解已经成熟了。操作系统及其资源管理技术(包括更大、更快的二级存储介质上的文件)包围着这些程序,并对它们进行管理。
接下来的一层由更复杂的通用或专用软件系统构成,它们覆盖了操作系统。这些功能强大的程序由计算机科学中的并行理论支持。最后一层由网络和网络软件构成,网络软件包括计算机之间通信必需的所有工具。Internet和万维网给这一层画上了最后一笔。
当这些层随着时间的推移逐渐出现时,用户对计算机系统的硬件接触得越来越少。每个层都是它下面的计算机系统的抽象。随着每个层的发展,新层的用户和内部层的用户联合起来,在经济领域的高科技部门创造了大量的生产力。本书的目的是提供各个层的概述,介绍基本的硬件和软件技术,使学生了解和欣赏计算系统的方方面面。
在介绍这种洋葱式结构时,我们有两种选择,一种是从内向外逐层介绍,另一种是从外向内进行介绍。从外向内的方法看起来非常吸引人。我们可以从最抽象的层开始介绍,一次剥掉一个层,直到具体的机器层为止。但是,研究表明,比起抽象的例子,学生们更容易理解具体的例子,即使他们本身是抽象思想家。因此,我们选择从具体的机器层开始,按照层的创建顺序进行分析,当学生完全理解了一个层之后,再转移到下一个层就比较容易。

f8a16f824866b6bbfbbfd65c414c1e53ddfad638

第5版中的变化
在计划这次改版时,我们咨询了CS教育学院的同事,要求他们给予一些反馈。37人回复了我们,非常感谢这些有思考、有见解的回应。
第15章中添加了“云计算”一节,并更新了域名部分。第16章中加入了HTML5。此外,专门用一章(第17章)讨论计算机安全。老版的第17章是现在的第18章。目前,大多数的安全问题集中在网络时代信息的安全使用上,因此把第17章放在通信层的最后一章。
除了新的章节,现在每章结尾部分的道德问题有了更为一致的主题,从道德责任的定义和一个专业计算机人士的道德责任开始,展示了两个主要的计算协会ACM和IEEE的道德准则,也给出了选择计算机专业可能面临的案例研究。这些材料在计算机课程中称为the Tenth Strand,其中对涉及计算的主要社会问题进行了讨论,包括政治、版权、工作场所监视和游戏成瘾方面。
当然,我们对整书进行了全面调整,对“你知道吗”板块和传记部分也进行了更新。
摘要
第1章是我们探索计算机科学(计算机系统“洋葱”)的基础,描述了本书的组织结构。第2章和第3章则分析了包含在物理硬件中的层。这个层称为信息层,它反映了如何在计算机上表示信息。第2章介绍了二进制数制以及它与其他数制(如人们日常用的十进制系统)的关系。第3章研究了如何获取多种类型(如数字、文本、图像、音频和视频)的信息以及如何用二进制格式表示它们。
第4章和第5章介绍了硬件层。计算机硬件包括的设备有晶体管、门和电路,它们都按照基本原理控制电流。正是这些核心电路使专用的元件(如计算机的中央处理器——CPU)得以运转。第4章介绍了门和电路。第5章介绍了计算机的元件,以及在冯·诺伊曼体系结构中这些元件是如何交互的。当然,第5章开头的广告已经更新了,在你阅读本书时,它可能又过时了。
第6~9章介绍了程序设计层。第6章使用模拟计算机Pep/8介绍了机器语言和汇编语言的概念。该章引入了用伪代码编写算法的功能,介绍了循环与选择的概念,并在Pep/8中以伪代码的方式实现。
第7章分析了问题求解过程,同时涉及人类和计算机的问题求解方法。引导这个论题的是George Polya的人类问题求解策略。该章介绍了自顶向下的方法来设计简单算法,并在讨论算法时选择经典的搜索和排序算法。因为算法是对数据进行操作,所以在此研究数据的结构,以便更有效地处理数据。该章也介绍了子算法(子程序)语句。
第8章介绍了抽象数据类型或容器,容器是只知道其属性或行为的复合结构。该章介绍了列表、有序列表、栈、队列、二叉检索树和图,扩展讨论了子算法,包括引用参数与值参、参数传递。
第9章介绍了高级程序设计语言的概念。许多杰出的高级语言包含与面向对象编程相关的功能,我们先绕过这个设计过程,讨论语言范型以及编译过程。我们用四种编程语言设计了一些小例子来说明伪代码的概念,即Python、VB.NET、Java和C++。
第10章和第11章介绍了操作系统层。第10章讨论了操作系统的资源管理任务,介绍了一些用于实现这些任务的基本算法。第11章介绍了文件系统,包括什么是文件系统,以及操作系统如何管理它们。
第12~14章介绍了应用程序层。这一层由人们用来解决问题的通用应用程序和专用应用程序构成。我们根据这些程序的基础,把这一层分到了计算机科学的几个子学科中。第12章分析了信息系统,第13章分析了人工智能,第14章分析了模拟、图形学、游戏和其他应用。
第15~17章介绍了通信层。第15章说明了计算机之间通信的理论和应用。第16章介绍了万维网和它对当今生活的影响,包括修订的社交媒体部分。全新的第17章讨论计算机安全,涵盖了当今信息时代与保护信息安全相关的各个方面。
第2~17章都是说明计算机可以做什么以及它是如何做的。第18章进行了总结,讨论了计算机硬件和软件的固有局限性,以及计算机能够解决和不能解决的问题。在讨论算法的有效性时,采用了大O符号,以便讨论算法的分类。此外还介绍了停机问题,以说明某些不能解决的问题。
本书的第1章和最后一章就像一对书档,第1章说明了计算系统是什么,第18章告诫我们计算系统不能做什么。它们之间的章节则深入探讨了构成计算系统的各个层。
特性
本书具有三种特性,用于强调计算的历史、广度以及新技术带来的道德义务。首先,每一章都有一个简短的名人传记,介绍对计算做出杰出贡献的人。这些人包括对数据层做出贡献的George Boole和Ada Lovelace,以及对通信层做出贡献的Doug Engelbart和Tim Berners-Lee。这些传记的目的是让学生了解计算界的历史以及那些对计算界做过贡献和正在做贡献的人。
我们称第二个特性为“你知道吗”,因为没有更好的词可以表达它。这部分显示在方框中,是过去、现在和未来的一些轶闻趣事,它们来自历史记录、当今的报纸和作者的见闻。这些小插曲的目的是使学生开心、鼓舞他们、激发他们的兴趣,当然也为了教育他们。
第三个特性是每章中的“道德问题”小节。这些小节的目的是说明在利用计算的好处时要承担的义务。隐私权、黑客、病毒和言论自由都属于我们的论题。在每章练习的结尾处有一个思考题部分,涉及这些道德问题和这一章的内容。
致谢
对于这一版来说,读者是最有用的信息和建议来源。衷心感谢受调查者花时间填写了我们的网络调查问卷。还要感谢前几版的审校者,以及这一版的审校者,他们是:
Tim Bower,堪萨斯州立大学;Mikhail Brikman,塞勒姆州立学院;Jacques Carette,麦克马斯特大学;Howard Francis,派克维尔学院;Jim Jones,格雷斯兰大学;Murray Levy,西洛杉矶学院;Lew Lowther,约克大学;Jeffrey McConnell,凯尼休斯学院;Richard Schlesinger,肯尼索州立大学;Richard Spinello,波士顿学院;Herman Tavani,里韦学院;Amy Woszczynski,肯尼索州立大学;C. Michael Allen,北卡罗来纳大学夏洛特分校;Lofton Bullard,佛罗里达亚特兰大大学;Cerian Jones,阿尔伯塔大学;Calvin Ribbens,弗吉尼亚理工大学; Susan Sells,威奇托州立大学;R. Mark Meyer,凯尼休斯学院;Tom Wiggen,北达科他大学; Mary Dee Harris,Chris Edmonson-Yurkanan,Ben Kuipers, Glenn Downin,得克萨斯大学奥斯汀分校;Dave Stauffer,宾夕法尼亚大学; John McCormick,北艾奥瓦大学;Dan Joyce,维拉诺瓦大学;Mike Goldwasser,圣路易斯大学;Andrew Harrington,洛约拉大学芝加哥分校;Daniel R. Collins,马萨诸塞州湾社区学院;J. Stanley Warford,佩珀代因大学;Richard C. Detmer,中田纳西州立大学;Chip Weems,马萨诸塞大学阿默斯特分校;Heather Chandler,西木学院;Mark Holthouse, 西木高等学校;Robert Vermilyer,国托马斯阿奎那斯学院。
特别感谢凯尼休斯学院的Jeffrey McConnell,他编写了第14章中的图形学部分;感谢里韦学院的Herman Tavani,他参与了修改“道德问题”的工作;感谢波士顿学院的Richard Spinello,他撰写了博客的道德问题一文。
感谢审稿人与同事对第5版的内容给出了意见与建议,他们是:
Bob Blucher,雷恩社区学院;Dale Fletter,福尔瑟姆湖学院;Jerry Westfall博士,利伯蒂大学;Dwayne Towell,艾伯林基督大学;Kara Nance,阿拉斯加大学;Lisa Michaud,梅里马克学院;Jeffery Bergamini,门多西诺学院;Johanna Horowitz,西耶那学院;Lonnie R. Nelson,汉尼拔拉格朗日学院;Marie Hartlein,蒙哥马利县社区学院;Mark Holthouse,西木高等学校;Mikhail S. Brikman博士,塞勒姆州立大学;Patricia Roth Pierce,南理工州立大学;Quentin J. White,SR,帕洛马学院;Rakesh Arya,马里兰大学东海岸分校;Tim Bower,堪萨斯州立大学;William Honig,洛约拉大学芝加哥分校;Barbara Zimmerman,维拉诺瓦大学;Maria Jump博士,国王学院;Joe Pistone,巴洛玛社区学院;Derek Merck,佐治亚佩雷米特学院。
还要感谢Jones&Bartlett Learning的许多人,尤其是Tim Anderson(资深编辑)、Amy Bloom(主编)、Amy Rose(出版总监)。
我还必须感谢我的网球朋友使我有一个健康的体魄,感谢我的桥牌朋友使我的头脑十分机敏,感谢我的家人做我的坚强后盾。

目 录
前言
第一部分 基础篇
第1章 全景图
1.1 计算系统
1.1.1 计算系统的分层
1.1.2 抽象
1.2 计算的历史
1.2.1 计算硬件简史
1.2.2 计算软件简史
1.2.3 预言
1.3 计算工具与计算学科
小结
道德问题:the Tenth Strand
练习
思考题
第二部分 信息层
第2章 二进制数值与记数系统
2.1 数字与计算
2.2 位置记数法
2.2.1 二进制、八进制和十六进制
2.2.2 其他记数系统中的运算
2.2.3 以2的幂为基数的记数系统
2.2.4 把十进制数转换成其他数制的数
2.2.5 二进制数值与计算机
小结
道德问题:the Tenth Strand的知识单元
练习
思考题
第3章 数据表示法
3.1 数据与计算机
3.1.1 模拟数据与数字数据
3.1.2 二进制表示法
3.2 数字数据表示法
3.2.1 负数表示法
3.2.2 实数表示法
3.3 文本表示法
3.3.1 ASCII字符集
3.3.2 Unicode字符集
3.3.3 文本压缩
3.4 音频数据表示法
3.4.1 音频格式
3.4.2 MP3音频格式
3.5 图像与图形表示法
3.5.1 颜色表示法
3.5.2 数字化图像与图形
3.5.3 图形的矢量表示法
3.6 视频表示法
小结
道德问题:道德准则
练习
思考题
第三部分 硬件层
第4章 门和电路
4.1 计算机和电学
4.2 门
4.2.1 非门
4.2.2 与门
4.2.3 或门
4.2.4 异或门
4.2.5 与非门和或非门
4.2.6 门处理回顾
4.2.7 具有更多输入的门
4.3 门的构造
4.4 电路
4.4.1 组合电路
4.4.2 加法器
4.4.3 多路复用器
4.5 存储器电路
4.6 集成电路
4.7 CPU芯片
小结
道德问题:这些违反道德规范吗?
练习
思考题
第5章 计算部件
5.1 独立的计算机部件
5.2 存储程序的概念
5.2.1 冯·诺伊曼体系结构
5.2.2 读取-执行周期
5.2.3 RAM和ROM
5.2.4 二级存储设备
5.2.5 触摸屏
5.3 嵌入式系统
5.4 并行体系结构
5.4.1 并行计算
5.4.2 并行硬件分类
小结
道德问题:数字鸿沟
练习
思考题
第四部分 程序设计层
第6章 低级程序设计语言与伪代码
6.1 计算机操作
6.2 机器语言
6.3 一个程序实例
6.3.1 手工模拟
6.3.2 Pep/8模拟程序
6.4 汇编语言
6.4.1 Pep/8汇编语言
6.4.2 汇编器指令
6.4.3 Hello程序的汇编语言版本
6.4.4 一个新程序
6.4.5 具有分支的程序
6.4.6 具有循环的程序
6.5 表达算法
6.5.1 伪代码的功能
6.5.2 执行伪代码算法
6.5.3 写伪代码算法
6.5.4 翻译伪代码算法
6.6 测试
小结
道德问题:版权与软件盗版
练习
思考题
第7章 问题求解与算法设计
7.1 如何解决问题
7.1.1 提出问题
7.1.2 寻找熟悉的情况
7.1.3 分治法
7.1.4 算法
7.1.5 计算机问题求解过程
7.1.6 方法总结
7.1.7 测试算法
7.2 有简单参数的算法
7.2.1 带有选择的算法
7.2.2 带有循环的算法
7.3 复杂变量
7.3.1 数组
7.3.2 记录
7.4 搜索算法
7.4.1 顺序搜索
7.4.2 有序数组中的顺序搜索
7.4.3 二分检索
7.5 排序
7.5.1 选择排序
7.5.2 冒泡排序
7.5.3 插入排序
7.6 递归算法
7.6.1 子程序语句
7.6.2 递归阶乘
7.6.3 递归二分检索
7.6.4 快速排序
7.7 几个重要思想
7.7.1 信息隐蔽
7.7.2 抽象
7.7.3 事物命名
7.7.4 测试
小结
道德问题:开源软件
练习
思考题
第8章 抽象数据类型与子程序
8.1 抽象数据类型
8.2 栈
8.3 队列
8.4 列表
8.5 树
8.5.1 二叉树
8.5.2 二叉检索树
8.5.3 其他操作
8.6 图
8.6.1 创建图
8.6.2 图算法
8.7 子程序
8.7.1 参数传递
8.7.2 值参与引用参数
小结
道德问题:工作场所监视
练习
思考题
第9章 面向对象设计与高级程序设计语言
9.1 面向对象方法
9.1.1 面向对象
9.1.2 设计方法
9.1.3 一个计算机示例
9.2 翻译过程
9.2.1 编译器
9.2.2 解释器
9.3 程序设计语言的范型
9.3.1 命令式范型
9.3.2 声明式范型
9.4 高级程序设计语言的功能性
9.4.1 布尔表达式
9.4.2 数据归类
9.4.3 输入/输出结构
9.4.4 控制结构
9.5 面向对象语言的功能性
9.5.1 封装
9.5.2 类
9.5.3 继承
9.5.4 多态
9.6 过程设计与面向对象设计的区别
小结
道德问题:恶作剧与诈骗
练习
思考题
第五部分 操作系统层
第10章 操作系统
10.1 操作系统的角色
10.1.1 内存、进程与CPU管理
10.1.2 批处理
10.1.3 分时
10.1.4 其他OS要素
10.2 内存管理
10.2.1 单块内存管理
10.2.2 分区内存管理
10.2.3 页式内存管理
10.3 进程管理
10.3.1 进程状态
10.3.2 进程控制块
10.4 CPU调度
10.4.1 先到先服务
10.4.2 最短作业优先
10.4.3 轮询法
小结
道德问题:医疗隐私——健康保险携带与责任法案
练习
思考题
第11章 文件系统和目录
11.1 文件系统
11.1.1 文本文件和二进制文件
11.1.2 文件类型
11.1.3 文件操作
11.1.4 文件访问
11.1.5 文件保护
11.2 目录
11.2.1 目录树
11.2.2 路径名
11.3 磁盘调度
11.3.1 先到先服务磁盘调度法
11.3.2 最短寻道时间优先磁盘调度法
11.3.3 SCAN磁盘调度法
小结
道德问题:选择加入和选择退出
练习
思考题
第六部分 应用程序层
第12章 信息系统
12.1 信息管理
12.2 电子制表软件
12.2.1 电子数据表公式
12.2.2 循环引用
12.2.3 电子数据表分析
12.3 数据库管理系统
12.3.1 关系模型
12.3.2 关系
12.3.3 结构化查询语言
12.3.4 数据库设计
12.4 电子商务
小结
道德问题:从竞选来看政治与网络
练习
思考题
第13章 人工智能
13.1 思维机
13.1.1 图灵测试
13.1.2 AI问题的各个方面
13.2 知识表示
13.2.1 语义网
13.2.2 检索树
13.3 专家系统
13.4 神经网络
13.4.1 生物神经网络
13.4.2 人工神经网络
13.5 自然语言处理
13.5.1 语音合成
13.5.2 语音识别
13.5.3 自然语言理解
13.6 机器人学
13.6.1 感知-规划-执行范型
13.6.2 包孕体系结构
13.6.3 物理部件
小结
道德问题:从民众来看政治与网络
练习
思考题
第14章 模拟、图形学、游戏和其他应用
14.1 什么是模拟
14.1.1 复杂系统
14.1.2 模型
14.1.3 构造模型
14.2 特殊模型
14.2.1 排队系统
14.2.2 气象模型
14.2.3 计算生物学
14.2.4 其他模型
14.2.5 必要的计算能力
14.3 计算机图形学
14.3.1 光的工作原理
14.3.2 物体形状
14.3.3 光模拟
14.3.4 复杂对象的建模
14.3.5 让物体动起来
14.4 游戏
14.4.1 游戏的历史
14.4.2 创建虚拟世界
14.4.3 游戏设计与开发
14.4.4 游戏编程
小结
道德问题:游戏成瘾
练习
思考题
第七部分 通信层
第15章 网络
15.1 连网
15.1.1 网络的类型
15.1.2 Internet连接
15.1.3 包交换
15.2 开放式系统与协议
15.2.1 开放式系统
15.2.2 网络协议
15.2.3 TCP/IP
15.2.4 高层协议
15.2.5 MIME类型
15.2.6 防火墙
15.3 网络地址
15.4 云计算
小结
道德问题:社交网络的影响
练习
思考题
第16章 万维网
16.1 Web简介
16.1.1 搜索引擎
16.1.2 即时消息
16.1.3 博客
16.1.4 cookie
16.2 HTML
16.2.1 基本的HTML格式
16.2.2 图像与链接
16.2.3 HTML5
16.3 交互式网页
16.3.1 Java小程序
16.3.2 Java服务器页
16.4 XML
16.5 社交网络
小结
道德问题:赌博与互联网
练习
思考题
第17章 计算机安全
17.1 各级安全
17.2 阻止未授权访问
17.2.1 密码
17.2.2 验证码
17.2.3 指纹分析
17.3 恶意代码
17.3.1 杀毒软件
17.3.2 安全攻击
17.4 密码学
17.5 保护你的在线信息
17.5.1 安全与可移动设备
17.5.2 维基解密
小结
道德问题:博客
练习
思考题
第八部分 总结
第18章 计算的限制
18.1 硬件
18.1.1 算术运算的限制
18.1.2 部件的限制
18.1.3 通信的限制
18.2 软件
18.2.1 软件的复杂度
18.2.2 当前提高软件质量的方法
18.2.3 臭名昭著的软件错误
18.3 问题
18.3.1 算法比较
18.3.2 图灵机
18.3.3 停机问题
18.3.4 算法分类
小结
道德问题:Therac-25灾难剖析
练习
思考题
参考文献
索引

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: