本书由两位知名的计算机科学教育家编写,全面而细致地介绍了计算机科学的各个方面。书中从信息层开始,历经硬件层、程序设计层、操作系统层、应用程序层和通信层,深入剖析了计算系统的每个分层,后讨论了计算的限制。此外,正文中穿插了大量的人物传记、历史点评、道德问题和新的技术发展信息,有助于你进一步了解计算机科学。每章后面都附带有大量的练习,可以帮助你即时重温并掌握这一章所述的内容。
Computer Science Illuminated, Fifth Edition
出版者的话
译者序
前言
第一部分 基础篇
第1章 全景图 2
1.1 计算系统 2
1.1.1 计算系统的分层 3
1.1.2 抽象 4
1.2 计算的历史 5
1.2.1 计算硬件简史 5
1.2.2 计算软件简史 12
1.2.3 预言 16
1.3 计算工具与计算学科 16
小结 18
道德问题:the Tenth Strand 18
练习 19
思考题 20
第二部分 信息层
第2章 二进制数值与记数系统 22
2.1 数字与计算 22
2.2 位置记数法 23
2.2.1 二进制、八进制和十六进制 26
2.2.2 其他记数系统中的运算 27
2.2.3 以2的幂为基数的记数系统 27
2.2.4 把十进制数转换成其他数制的数 29
2.2.5 二进制数值与计算机 29
小结 31
道德问题:the Tenth Strand的知识单元 31
练习 33
思考题 34
第3章 数据表示法 35
3.1 数据与计算机 35
3.1.1 模拟数据与数字数据 36
3.1.2 二进制表示法 38
3.2 数字数据表示法 39
3.2.1 负数表示法 39
3.2.2实数表示法42
3.3文本表示法44
3.3.1ASCII字符集45
3.3.2Unicode字符集45
3.3.3文本压缩46
3.4音频数据表示法49
3.4.1音频格式50
3.4.2MP3音频格式50
3.5图像与图形表示法51
3.5.1颜色表示法51
3.5.2数字化图像与图形52
3.5.3图形的矢量表示法53
3.6视频表示法53
小结55
道德问题:道德准则55
练习56
思考题58
第三部分硬件层
第4章门和电路60
4.1计算机和电学60
4.2门62
4.2.1非门62
4.2.2与门63
4.2.3或门63
4.2.4异或门64
4.2.5与非门和或非门64
4.2.6门处理回顾65
4.2.7具有更多输入的门65
4.3门的构造66
4.4电路67
4.4.1组合电路68
4.4.2加法器70
4.4.3多路复用器71
4.5存储器电路72
4.6集成电路73
4.7CPU芯片73
小结74
道德问题:这些违反道德规范吗?74
练习75
思考题77
第5章计算部件78
5.1独立的计算机部件78
5.2存储程序的概念82
5.2.1冯·诺伊曼体系结构82
5.2.2读取—执行周期87
5.2.3RAM和ROM88
5.2.4二级存储设备89
5.2.5触摸屏92
5.3嵌入式系统93
5.4并行体系结构94
5.4.1并行计算94
5.4.2并行硬件分类95
小结96
道德问题:数字鸿沟96
练习97
思考题98
第四部分程序设计层
第6章低级程序设计语言与伪代码102
6.1计算机操作102
6.2机器语言103
6.3一个程序实例108
6.3.1手工模拟109
6.3.2Pep/8模拟程序109
6.4汇编语言111
6.4.1Pep/8汇编语言112
6.4.2汇编器指令112
6.4.3Hello程序的汇编语言版本113
6.4.4一个新程序113
6.4.5具有分支的程序115
6.4.6具有循环的程序116
6.5表达算法118
6.5.1伪代码的功能118
6.5.2执行伪代码算法121
6.5.3写伪代码算法123
6.5.4翻译伪代码算法124
6.6测试125
小结126
道德问题:版权与软件盗版127
练习127
思考题129
第7章问题求解与算法设计130
7.1如何解决问题130
7.1.1提出问题130
7.1.2寻找熟悉的情况132
7.1.3分治法132
7.1.4算法133
7.1.5计算机问题求解过程133
7.1.6方法总结134
7.1.7测试算法135
7.2有简单参数的算法135
7.2.1带有选择的算法135
7.2.2带有循环的算法136
7.3复杂变量139
7.3.1数组139
7.3.2记录140
7.4搜索算法141
7.4.1顺序搜索141
7.4.2有序数组中的顺序搜索141
7.4.3二分检索142
7.5排序144
7.5.1选择排序144
7.5.2冒泡排序145
7.5.3插入排序147
7.6递归算法147
7.6.1子程序语句148
7.6.2递归阶乘149
7.6.3递归二分检索149
7.6.4快速排序150
7.7几个重要思想153
7.7.1信息隐蔽153
7.7.2抽象154
7.7.3事物命名155
7.7.4测试155
小结155
道德问题:开源软件156
练习157
思考题159
第8章抽象数据类型与子程序160
8.1抽象数据类型160
8.2栈161
8.3队列161
8.4列表162
8.5树164
8.5.1二叉树164
8.5.2二叉检索树165
8.5.3其他操作169
8.6图169
8.6.1创建图171
8.6.2图算法171
8.7子程序176
8.7.1参数传递177
8.7.2值参与引用参数178
小结180
道德问题:工作场所监视180
练习181
思考题183
第9章面向对象设计与高级程序设计语言184
9.1面向对象方法184
9.1.1面向对象185
9.1.2设计方法185
9.1.3一个计算机示例187
9.2翻译过程189
9.2.1编译器190
9.2.2解释器190
9.3程序设计语言的范型192
9.3.1命令式范型192
9.3.2声明式范型193
9.4高级程序设计语言的功能性194
9.4.1布尔表达式194
9.4.2数据归类196
9.4.3输入/输出结构199
9.4.4控制结构200
9.5面向对象语言的功能性204
9.5.1封装204
9.5.2类205
9.5.3继承206
9.5.4多态207
9.6过程设计与面向对象设计的区别207
小结208
道德问题:恶作剧与诈骗209
练习210
思考题212
第五部分操作系统层
第10章操作系统214
10.1操作系统的角色214
10.1.1内存、进程与CPU管理216
10.1.2批处理216
10.1.3分时217
10.1.4其他OS要素218
10.2内存管理218
10.2.1单块内存管理219
10.2.2分区内存管理220
10.2.3页式内存管理221
10.3进程管理223
10.3.1进程状态223
10.3.2进程控制块224
10.4CPU调度224
10.4.1先到先服务225
10.4.2最短作业优先226
10.4.3轮询法226
小结227
道德问题:医疗隐私——健康保险携带与责任法案228
练习229
思考题231
第11章文件系统和目录232
11.1文件系统232
11.1.1文本文件和二进制文件233
11.1.2文件类型233
11.1.3文件操作234
11.1.4文件访问235
11.1.5文件保护236
11.2目录237
11.2.1目录树237
11.2.2路径名239
11.3磁盘调度241
11.3.1先到先服务磁盘调度法242
11.3.2最短寻道时间优先磁盘调度法242
11.3.3SCAN磁盘调度法242
小结243
道德问题:选择加入和选择退出243
练习244
思考题246