第1章 绪论 1
1.1 引言 1
1.2 学科专业名称的演变、学科描述及培养侧重点 2
1.3 学科知识体和核心课程 4
1.4 导论课程的构建问题 9
1.5 计算思维与计算机科学导论 11
1.6 本章小结 14
习题1 14
第2章 学科的基本问题 16
2.1 引言 16
2.2 对问题进行抽象的一个典型实例:哥尼斯堡七桥问题 16
2.3 可计算问题与不可计算问题 18
2.3.1 汉诺塔问题 18
2.3.2 算法复杂性中的难解性问题 20
2.3.3 证比求易算法 20
2.3.4 P=N P9 21
2.3.5 RSA公开密钥密码系统 22
2.3.6 停机问题 26
2.3.7 旅行商问题与组合爆炸 28
2.3.8 找零问题、背包问题与贪婪算法 30
2.4 GOTO语句与程序的结构 31
2.5 哲学家共餐问题与计算机的资源管理 33
2.6 两军问题与计算机网络 34
2.6.1 两军问题 35
2.6.2 互联网软件的分层结构 36
2.7 人工智能中的若干哲学问题 37
2.7.1 图灵测试 38
2.7.2 西尔勒的“中文屋子” 39
2.7.3 计算机中的博弈问题 40
2.8 计算机科学各主领域及其基本问题 41
2.9 本章小结 50
习题2 50
第3章 3个学科形态 53
3.1 引言 53
3.2 一个关于“学生选课”的例子 53
3.2.1 对例子的感性认识 54
3.2.2 对例子的理性认识 55
3.2.3 “学生选课”系统的设计 56
3.3 抽象形态 58
3.4 理论形态 58
3.5 设计形态 59
3.6 3个学科形态的内在联系 60
3.7 计算机语言的发展及其3个学科形态的内在联系 62
3.7.1 自然语言与形式语言 63
3.7.2 图灵机与冯·诺依曼计算机 65
3.7.3 机器指令与汇编语言 72
3.7.4 虚拟机 74
3.7.5 高级语言 77
3.7.6 应用语言 78
3.7.7 自然语言 79
3.7.8 小结 82
3.8 计算机科学各领域3个学科形态的主要内容 83
3.9 本章小结 89
习题3 90
第4章 学科中的核心概念 97
4.1 引言 97
4.2 算法 97
4.2.1 算法的历史简介 98
4.2.2 算法的定义和特征 99
4.2.3 算法实例 100
4.2.4 算法的表示方法 101
4.2.5 算法分析 106
4.2.6 搜索算法与排序算法 107
4.3 数据结构 113
4.3.1 数据结构的基本概念 113
4.3.2 基于Vcomputer机器的数据结构概述 115
4.3.3 基于Vcomputer机器的数据的逻辑结构 116
4.3.4 基于Vcomputer机器的数据的存储结构 120
4.4 程序 124
4.5 软件 125
4.6 硬件 125
4.7 数据的存储和表示 126
4.7.1 进位制数及其相互转换 126
4.7.2 原码、反码、补码及其转换 129
4.7.3 字符、字符串和汉字 134
4.7.4 图像 137
4.7.5 声音 138
4.8 CC1991报告提取的核心概念 140
4.9 本章小结 142
习题4 143
第5章 学科中的数学方法 153
5.1 引言 153
5.2 数学的基本特征 154
5.3 数学方法的作用 154
5.4 计算学科中常用的数学概念和术语 155
5.4.1 集合 155
5.4.2 函数和关系 156
5.4.3 代数系统 157
5.4.4 字母表、字符串和语言 164
5.4.5 定义、定理和证明 164
5.4.6 必要条件和充分条件 166
5.5 证明方法 167
5.5.1 直接证明法和间接证明法 167
5.5.2 反证法 167
5.5.3 归纳法 168
5.5.4 构造性证明 169
5.6 递归和迭代 169
5.6.1 递归 170
5.6.2 迭代 172
5.7 随机数和蒙特卡罗方法 172
5.7.1 随机数 172
5.7.2 蒙特卡罗方法 175
5.8 公理化方法 176
5.8.1 理论体系 176
5.8.2 公理化方法的基本概念 177
5.8.3 实例 177
5.9 形式化方法 179
5.9.1 形式系统的组成、基本特点和局限性 179
5.9.2 形式化方法概述 180
5.9.3 形式规格 181
5.9.4 形式验证 182
5.10 本章小结 184
习题5 185
第6章 学科中的系统科学方法 189
6.1 引言 189
6.2 系统科学与系统科学方法 189
6.2.1 系统科学的基本概念 190
6.2.2 系统科学遵循的一般原则 191
6.2.3 常用的几种系统科学方法 192
6.2.4 实例 193
6.3 软件开发中使用系统科学方法的原因 194
6.3.1 人固有能力的局限性以及使用工具后产生的力量 194
6.3.2 复杂性 195
6.3.3 软件系统的复杂性 196
6.3.4 软件开发的系统化方法需要遵循的基本原则 198
6.4 结构化方法 200
6.4.1 结构化方法的产生和发展 200
6.4.2 结构化方法遵循的基本原则 201
6.4.3 结构化方法的核心问题 201
6.4.4 实例:高校信息管理系统 202
6.5 面向对象方法 203
6.5.1 面向对象方法的产生和发展 204
6.5.2 面向对象方法的基本思想 204
6.5.3 面向对象方法的核心问题 206
6.5.4 实例:图书管理系统 207
6.6 本章小结 209
习题6 211
第7章 社会与职业问题 213
7.1 引言 213
7.2 计算的历史 214
7.2.1 计算机史前史 214
7.2.2 计算机硬件的历史 215
7.2.3 计算机软件的历史 216
7.2.4 计算机网络的历史 218
7.2.5 中国计算机事业发展的历程 219
7.3 计算的社会背景 220
7.3.1 计算的社会内涵 220
7.3.2 网络的社会内涵 221
7.3.3 因特网的增长、控制和使用 221
7.3.4 有关性别的问题 223
7.4 道德分析的方法 223
7.5 职业和道德责任 225
7.5.1 职业化的本质 225
7.5.2 软件工程师的伦理规范 225
7.5.3 与检举有关的内容 227
7.5.4 计算中的“可接受使用”政策 229
7.6 基于计算机系统的风险和责任 229
7.6.1 历史上软件风险的例子 229
7.6.2 软件的正确性、可靠性和安全性 230
7.6.3 软件测试 230
7.6.4 软件重用中隐藏的问题 231
7.6.5 风险评定与风险管理 231
7.7 团队工作 232
7.7.1 基本概念 233
7.7.2 团队目的 234
7.7.3 团队机制 234
7.7.4 团队激励 235
7.7.5 团队僵局 236
7.8 知识产权 237
7.8.1 知识产权概述 237
7.8.2 著作权、商标、专利、集成电路布图设计和商业秘密 238
7.8.3 数字千年版权法和TEACH法案 241
7.8.4 软件专利 242
7.8.5 有关知识产权的国际问题 242
7.8.6 我国有关知识产权保护的现状 243
7.9 隐私和公民自由 244
7.9.1 隐私保护的道德和法律基础 244
7.9.2 基于Web的隐私保护技术 245
7.9.3 计算机空间的言论自由 247
7.9.4 相关的国际问题和文化之间的问题 248
7.10 计算机犯罪 249
7.10 .1 计算机犯罪及相关立法 249
7.10 .2 黑客 250
7.10 .3 恶意计算机程序和拒绝服务攻击 250
7.10 .4 防止计算机犯罪的策略 252
7.11本章小结 253
习题7 253
第8章 探讨与展望 256
8.1 引言 256
8.2 若干问题的探讨 256
8.2.1 计算本质的认识历史 256
8.2.2 第三次数学危机与希尔伯特纲领 257
8.2.3 图灵对计算本质的揭示 258
8.2.4 如何定义一门学科 259
8.2.5 计算学科属“工科”还是“理科” 260
8.2.6 程序设计在计算学科中的地位 260
8.2.7 计算学科目前的核心课程能否培养学生计算方面的能力 260
8.2.8 在计算课程中如何做到理论与实践相结合 261
8.2.9 发明与创新 261
8.2.10 关于能力的培养 263
8.2.11 难度、复杂度与能力 264
8.2.12 SOLO分类法与浅层学习、深度学习 266
8.2.13 科学素养 268
8.2.14 注意力 272
8.3 计算学科教育的展望 273
8.3.1 技术的变化 273
8.3.2 文化的改变 275
8.3.3 制定教学计划的原则 277
8.3.4 对本科毕业生的期望 278
8.3.5 未来的计算学科教育 279
8.4 本章小结 281
习题8 281
第9章 课程实验 284
9.1 分支和循环结构的简单程序设计 284
9.2 RSA公开密钥密码系统 290
9.3 存储程序式计算机的简单程序设计 297
9.4 递归算法、迭代算法及其比较 303
9.5 数组实验 309
9.6 栈的基本操作:push和pop 313
9.7 归并排序与折半查找 316
9.8 蒙特卡罗方法应用 324
9.9 简单的卡通与游戏实验 330
9.10 基于Access的简单数据库设计 335
附录A Raptor可视化程序设计概述 357
A.1 Raptor是什么? 357
A.2 为什么要使用Raptor进行程序设计? 357
A.3 Raptor的安装 358
A.4 几个简单的Raptor程序 358
A.4.1 实例1:输出字符串“Hello,world!” 359
A.4.2 实例2:求两个整数中的较大值 364
A.4.3 实例3:求1+2+3+…+10的和 373
A.5 Raptor和标准流程图的区别与联系 375
附录B Vcomputer存储程序式计算机概述 376
B.1 Vcomputer存储程序式计算机软件的安装及使用 376
B.2 Vcomputer 机器的结构和指令 382
B.3 Vcomputer机器上的汇编指令集 382
B.4 汇编程序编写过程中的注意事项 382
B.5 机器指令(十六进制代码)编写过程中的注意事项 383
B.6 存储程序式计算机模拟平台的功能 383
B.7 计算机模拟平台的注意事项 384
B.8 Vcomputer演示实例的源程序 384
附录C Access 2013概述 385
C.1 环境搭建 385
C.2 建数据库、建表及建立表间关系 386
C.3 创建查询 391
C.4 创建窗体 394
C.5 制作报表 396
参考文献 397