《计算机科学导论》一导读


image

前 言

Foundations of Computer Science, Third Edition
计算机在我们的日常生活中扮演了一个重要的角色,而且在未来也将一样。计算机科学是一个充满了挑战和发展机遇的年轻学科。计算机网络将处在地球上每一个角落的我们连接在一起。虚拟现实创造了炫目的三维图像。宇宙空间探险的成功也部分归功于计算机的发展。计算机创建的特技效果改变了电影行业。计算机在遗传学研究中也扮演了一个重要的角色。
本书读者对象
这本书同时面向学术的和专业的读者。本书可以作为感兴趣的专业人士的自学指南。作为教材,本书包含一学期(semester)或一学季(quarter)的教学内容,是计算机科学的入门教程。本书是基于美国计算机学会(ACM)推荐的CS0课程设计的。它从广度上覆盖了计算机科学所有的领域。其他领域的学生需要对计算机科学有大致的了解时,无论是从本书中选读部分内容还是通读全书,都有帮助。
第3版中的改动
在本版中我进行了以下几类修改。
1.修订的章节和附录
针对教学目的,对本书中的两章和附录进行了全面的修订。
(1)第6章
为了更便于初次接触计算机网络的学生进行理解,第6章的内容采用自顶向下的教学方法进行修订。
(2)第16章
对于第一次接触计算机科学的学生而言,安全的概念普遍较难接受。该章修订后的内容更通俗易懂。
(3)附录F
该附录修订后的内容增加了三种计算机语言(C、C++和Java)的一些简易程序例子。
2.部分章节中的细微变化
基于书评者的建议,部分章节的格式和内容进行了细微的修改,并且部分章节中增加了一些新的技术。
3.章末材料的变化
章末材料主要经历了以下两个主要的变化:
每章最后的多选题被删去了,增加了在线小测验,这样无论对老师检查教学成果,还是学生进行检验都方便许多。
每章结尾增加了在线小程序来帮助学生发现一些问题的可视化解决方法。
组织
这本书由18章和8个附录构成。
1.章节
章节的作用是提供基本的学习材料,但并不是书中的每一个章节都对学生有利用价值。教这门课的老师可以自主选择教学用的章节。我们会在后面提供一份教学指南。
2.附录
附录的作用是为理解书中讨论的概念所需的材料提供一个快速的参照或复习。本书中有8个可供学生参照和学习的附录。
3.缩略语
本书包含一份缩略语表来帮助快速寻找到对应的术语。
4.术语表
为了使学生熟悉书中使用的术语,本书提供一份广泛的术语表。
教学法
本书中的部分教学法是为使学生可以非常简便地理解书中内容而设计的。
1.图文并茂
本书图文并茂,而且不使用复杂的公式来展示高深内容。本书附图超过400幅,以便读者形象而直观地了解本书内容。图片对于解释构成整体的各组件之间的关系极为重要。对于很多学生来说,这些概念通过图片相比文字更容易掌握。
2.重点
把重要的概念放在阴影框中以便快速参考和即时注意。
3.范例和应用
在合适的情况下,在书中引入了可以说明概念的例子。
4.算法
第3版增加了几十个算法,有助于学生熟悉问题求解和编程。

  1. UML
    本书通篇使用UML图以使学生熟悉该工具,因为这已经成为业界的实际标准。

6.章末材料
每一章以一系列材料结尾,包括以下部分:
(1)推荐读物
这部分给出该章推荐书目列表。这些列表也用于参考引用。
(2)小结
每章结尾的小结都包括了对该章中所有内容的概括。小结把该章最重要的内容都整合在一起以便阅读。
7.练习
每章包括为强化重要概念同时鼓励学生进行实践而设计的练习。练习包括四部分内容:小测验、复习题、练习题和小程序。
(1)小测验
本书网站上的小测验提供对概念掌握情况的快速测试。学生可以通过这些小测验来检测对所学内容的理解。
(2)复习题
这个部分包括与书中讨论到的概念有关的简单题。本书网站上为学生提供了奇数编号复习题的答案以供核对。
(3)练习题
这一部分包括难度更大的题目,这些题目的求解需要对该章讨论的内容有更深层次的理解。我强烈推荐学生去尝试求解这部分的全部题目。奇数编号练习题的答案也已经公布在了本书网站以便学生进行核对。
(4)小程序
Java小程序是作者编写并发布在网站上的交互式试验。这里的小程序有些用于更好地理解部分练习题的解答,而有些则用于更好地通过实践理解网络的概念。小程序是为了简化对部分范例的理解而专门设计的。
教师资源
本书为教该课程的老师提供完整的以下教学资源。他们可以从本书网站下载。
1.演示文稿
本书网站为教授该课程的老师提供了一系列彩色的、动画式的幻灯片演示文稿。
2.练习的答案
本书网站为教授该课程的老师提供了所有复习题和练习题的答案。
如何使用本书
本书的章节提供了较大的灵活性组织。我建议以下几点:
第1~8章内容对理解本书剩下内容而言是必要的。
如果时间允许,可以教授第9~14 章内容。在学季制(quarter)中这些内容可以省去。
第15~18章内容的教授应该基于学生的专业和老师的辨别力进行选择。

目 录

第1章  绪论
1.1  图灵模型
1.2  冯·诺依曼模型
1.3  计算机组成部分
1.4  历史
1.5 社会问题和道德问题
1.6 计算机科学作为一门学科
1.7 课程纲要
1.8  章末材料
1.9 练习
第2章  数字系统
2.1  引言
2.2  位置化数字系统
2.3  非位置化数字系统
2.4 章末材料
2.5 练习
第3章 数据存
3.1 数据类型
3.2 存储数字
3.2.1 存储整数
3.2.2 3种系统的比较
3.3 存储文本
3.4 存储音频
3.4.1 采样
3.4.2 量化
3.4.3 编码
3.4.4 声音编码标准
3.5 存储图像
3.5.1 光栅图
3.5.2 矢量图
3.6 存储视频
3.7 章末材料
3.8 练习
第4章 数据运算
4.1 逻辑运算
4.1.1 位层次上的逻辑运算
4.1.2 模式层次上的逻辑运算
4.2 移位运算
4.3 算术运算
4.3.1 整数的算术运算
4.3.2 实数的算术运算
4.4 章末材料
4.5 练习
第5章 计算机组成
5.1 引言
5.2 中央处理单元
5.2.1 算术逻辑单
5.2.2 寄存器
5.2.3 控制单元
5.3 主存储器
5.3.1 地址空间
5.3.2 存储器的类型
5.3.3 存储器的层次结构
5.3.4 高速缓冲存储器
5.4 输入/输出子系统
5.4.1 非存储设备
5.4.2 存储设备
5.5 子系统的互连
5.5.1 CPU和存储器的连接
5.5.2 I/O设备的连接
5.5.3 输入/输出设备的寻址
5.6 程序执行
5.6.1 机器周期
5.6.2 输入/输出操作
5.7 不同的体系结构
5.7.1 CISC
5.7.2 RISC
5.7.3 流水线
5.7.4 并行处理
5.8 简单计算机
5.8.1 CPU
5.8.2 主存
5.8.3 输入/输出子系统
5.8.4 指令集
5.8.5 处理指令
5.8.6 存储程序和数据
5.8.7 指令周期
5.8.8 另一个例子
5.8.9 可重用性
5.9 章末材料
5.10 练习
第6章 计算机网络和因特网
6.1 引言
6.1.1 网络
6.1.2 因特网
6.1.3 硬件和软件
6.1.4 协议分层
6.1.5 TCP/IP协议族
6.2 应用层
6.2.1 提供服务
6.2.2 应用层模式
6.2.3 标准化客户机-服务器应用
6.2.4 文件传输协议
6.2.5 电子邮件
6.2.6 TELNET
6.2.7 安全外壳
6.2.8 域名系统
6.2.9 端到端模式
6.3 传输层
6.3.1 传输层服务
6.3.2 传输层协议
6.4 网络层
6.4.1 网络层提供的服务
6.4.2 网络层协议
6.5 数据链路层
6.5.1 节点和链接
6.5.2 局域网
6.5.3 广域网
6.6 物理层
6.6.1 数据和信号
6.6.2 数字化传输
6.6.3 模拟传输
6.7 传输介质
6.7.1 导向介质
6.7.2 非导向介质:无线
6.8 章末材料
6.9 练习
第7章 操作系统
7.1 引言
7.1.1 操作系统
7.1.2 自举过程
7.2 演化
7.2.1 批处理系统
7.2.2 分时系统
7.2.3 个人系统
7.2.4 并行系统
7.2.5 分布式系统
7.2.6 实时系统
7.3 组成部分
7.3.1 用户界面
7.3.2 内存管理器
7.3.3 进程管理器
7.3.4 文件管理器
7.4 主流操作系统
7.4.1 UNIX
7.4.2 Linux
7.4.3 Windows
7.5 章末材料
7.6 练习
第8章 算法
8.1 概念
8.1.1 非正式定义
8.1.2 定义动作
8.1.3 细化
8.1.4 泛化
8.2 三种结构
8.2.1 顺序
8.2.2 判断
8.2.3 循环
8.3 算法的表示
8.3.1 UML
8.3.2 伪代码
8.4 更正式的定义
8.4.1 定义良好
8.4.2 明确步骤
8.4.3 产生结果
8.4.4 在有限的时间内终止
8.5 基本算法
8.5.1 求和
8.5.2 乘
8.5.3 最大和最小
8.5.4 排序
8.5.5 查找
8.6 子算法
8.7 递归
8.7.1 迭代的定义
8.7.2 递归的定义
8.8 章末材料
8.9 练习
第9章 程序设计语言
9.1 演化
9.1.1 机器语言
9.1.2 汇编语言
9.1.3 高级语言
9.2 翻译
9.2.1 编译
9.2.2 解释
9.2.3 翻译过程
9.3 编程模式
9.3.1 过程式模式
9.3.2 面向对象模式
9.3.3 函数式模式
9.3.4 说明式模式
9.4 共同概念
9.4.1 标识符
9.4.2 数据类型
9.4.3 语句
9.5 章末材料
9.6 练习
第10章 软件工程
10.1 软件生命周期
10.2 分析阶段
10.2.1 面向过程分析
10.2.2 面向对象分析
10.3 设计阶段
10.3.1 面向过程设计
10.3.2 面向对象设计
10.4 实现阶段
10.4.1 语言的选择
10.4.2 软件质量
10.5 测试阶段
10.5.1 白盒测试
10.5.2 黑盒测试
10.6 文档
10.6.1 用户文档
10.6.2 系统文档
10.6.3 技术文档
10.7 章末材料
10.8 练习
第11章 数据结构197
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.2.3 记录数组
11.2.4 数组与记录数组
11.3 链表
11.3.1 数组与链表
11.3.2 链表名与节点名
11.3.3 链表操作
11.3.4 链表的应用
11.4 章末材料
11.5 练习
第12章 抽象数据类型
12.1 背景
12.1.1 简单抽象数据类型
12.1.2复杂抽象数据类型
12.1.3 定义
12.1.4 抽象数据类型的模型
12.1.5实现
12.2栈
12.2.1栈的操作
12.2.2栈的抽象数据类型
12.2.3栈的应用
12.2.4栈的实现
12.3队列
12.3.1队列的操作
12.3.2队列抽象数据类型
12.3.3队列的应用
12.3.4队列的实现
12.4广义线性表
12.4.1广义线性表的操作
12.4.2广义线性表的抽象数据类型
12.4.3广义线性表的应用
12.4.4广义线性表的实现
12.5树
12.5.1二叉树
12.5.2二叉树的操作
12.5.3二叉树的应用
12.5.4二叉树的实现
12.5.5二叉搜索树
12.5.6二叉搜索树的抽象数据类型
12.5.7二叉搜索树的实现
12.6图
12.7章末材料
12.8练习
第13章 文件结构
13.1引言
13.1.1顺序存取
13.1.2随机存取
13.2顺序文件
13.3索引文件
13.4散列文件
13.4.1散列方法
13.4.2冲突
13.5目录
13.6文本文件与二进制文件
13.6.1文本文件
13.6.2二进制文件
13.7章末材料
13.8练习
第14章 数据库
14.1引言
14.1.1定义
14.1.2数据库的优点
14.1.3数据库管理系统
14.2数据库体系结构
14.2.1内层
14.2.2概念层
14.2.3外层
14.3数据库模型
14.4关系数据库模型
14.5关系的操作
14.5.10 差
14.6 数据库设计
14.6.1 实体关系模型
14.6.2 从E-R图到关系
14.6.3 规范化
14.7 其他数据库模型
14.8 章末材料
14.9 练习
第15章 数据压缩
15.1 引言
15.2 无损压缩
15.2.1 游程长度编码
15.2.2 赫夫曼编码
15.2.3 Lempel Ziv编码
15.3 有损压缩方法
15.3.1 图像压缩:JPEG
15.3.2 视频压缩:MPEG
15.3.3 音频压缩
15.4 章末材料
15.5 练习
第16章 安全
16.1引言
16.1.1安全目标
16.1.2攻击
16.1.3 服务和技术
16.2 机密性
16.2.1 对称密钥密码术
16.2.2 非对称密钥密码术
16.3 其他安全服务
16.3.1 消息完整性
16.3.2 消息验证
16.3.3 数字签名
16.3.4 实体验证
16.3.5 密钥管理
16.4 防火墙
16.4.1 包过滤防火墙
16.4.2 代理防火墙
16.5 章末材料
16.6 练习
第17章 计算理论
17.1 引言
17.2 简单语言
17.2.1 递增语句
17.2.2 递减语句
17.2.3 循环语句
17.2.4 简单语言的威力
17.3 图灵机
17.3.1 图灵机组成部件
17.3.2 对简单语言的模拟
17.3.3 邱奇-图灵论题
17.4 歌德尔数
17.4.1 表示一个程序
17.4.2 翻译一个数字
17.5 停机问题
17.6 问题的复杂度
17.6.1 不可解问题
17.6.2 可解问题
17.7 章末材料
17.8 练习
第18章 人工智能
18.1引言
18.1.1 什么是人工智能
18.1.2 人工智能简史
18.1.3 图灵测试
18.1.4 智能体
18.1.5 编程语言
18.2 知识表示
18.2.1 语义网
18.2.2 框架
18.2.3 谓词逻辑
18.2.4 基于规则的系统
18.3 专家系统
18.3.1 抽取知识
18.3.2 抽取事实
18.3.3 体系结构
18.4 感知
18.4.1 图像处理
18.4.2 语言理解
18.5 搜索
18.6 神经网络
18.6.1 生物神经元
18.6.2 感知器
18.6.3 多层网络
18.6.4 应用
18.7 章末材料
18.8 练习
附录A Unicode
附录B UML
附录C 伪代码
附录D 结构图
附录E 布尔代数和逻辑电路
附录F C、C++和Java程序示例
附录G 数学知识
附录H 误差检测和校正
缩略语
术语表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值