《编程导论(Java)》附录B 知识单元与章节映射表
按照美国计算机科学专业本科的教学计划——《计算课程2001》 ,大学级别的计算机科学知识可以归纳成14个知识领域:
1. 离散结构 Discrete Structures (DS)
2. 编程基础Programming Fundamentals (PF)
3. 算法与复杂性Algorithms and Complexity (AL)
4. 体系结构与组织Architecture and Organization (AR)
5. 操作系统Operating Systems (OS)
6. 以网络为中心的计算Net-Centric Computing (NC)
7. 编程语言Programming Languages (PL)
8. 人机交互Human-Computer Interaction (HC)
9. 图形和可视计算Graphics and Visual Computing (GV)
10. 智能系统 Intelligent Systems (IS)
11. 信息管理 Information Management (IM)
12. 社会与专业议题Social and Professional Issues (SP)
13. 软件工程Software Engineering (SE)
14. (数值)计算科学ComputationalScience (CN)
每一知识领域包含多个知识单元(units),每一知识单元划分为多个主题。本书所涉及的主题请参见[附录B 知识单元与章节映射表]。
编程基础Programming Fundamentals (PF)
知识单元 |
主题 |
本书章节 |
PF1. 基本编程结构 |
高级语言的基本语法和语义 |
1.2.4 语法、语意和约定 |
变量、类型、表达式、赋值 |
2.2数据类型 |
|
简单的 I/O |
附录A 使用BlueJ 1.3.4 Math和tips. Print |
|
条件和循环控制结构 |
3.1.1 三种结构、Java语句 3.2 实现 |
|
方法和参数传递 |
1.3.3 静态方法 3.1.2 方法 3.3 消息传递机制 |
|
结构化分解 |
3.1.2 方法 |
|
PF2. 算法和问题求解 |
问题求解的策略 |
10.1.2 算法的分类 |
问题求解过程中算法的作用 |
||
算法的实现策略 |
||
调试策略 |
||
算法的概念和特性 |
0.1.5 问题求解 |
|
PF3. 基本数据结构 |
基本类型 |
2.2数据类型 |
数组 |
5.3数组 |
|
记录 |
5.3.3 对象数组 |
|
字符串及处理 |
4.1.3 String |
|
内存中数据的表示法 |
0.1.2 二进制补码 |
|
静态分配、栈和堆分配 |
7.4.1 存储管理策略 |
|
运行时存储管理 |
7.4运行时存储管理 |
|
指针和引用 |
2.4.1 引用的涵义 |
|
链表结构 |
5.2案例:单向链表 |
|
堆栈、队列和哈希表的实现策略 |
5.5栈 |
|
图和树的实现策略 |
||
选择正确数据结构的策略 |
||
PF4. 递归 |
递归的概念 |
10.3.1 递归的概念 |
递归的数学函数 |
||
简单的递归程序 |
||
分而治之策略 |
10.4分而治之 |
|
递归回溯 |
10.5回溯算法 |
|
递归的实现 |
10.3递归思维 |
|
PF5. 事件驱动编程 |
事件处理的方法 |
9.3 事件驱动编程 |
事件传递 |
||
异常处理 |
8.1 Throwable家族 8.2 捕获和处理 |
算法与复杂性Algorithms and Complexity (AL)
知识单元 |
主题 |
本书章节 |
AL1.基本算法分析 |
最大和平均复杂度的渐进分析 |
10.2时间复杂度 |
识别最好、一般和最坏情形下行为之间的区别 |
||
大O、小o、Ω和Θ(Theta)符号 |
||
标准复杂性分类 |
||
性能的经验评估方法 |
||
算法的时间与空间平衡 |
||
使用递推关系分析递归算法 |
||
AL2.算法的策略 |
蛮力法 |
|
贪心算法 |
||
分治法 |
10.4分而治之 |
|
回溯法 |
10.5回溯算法 |
|
分枝限界法 |
||
试探法 |
||
模式匹配和字符串/文本算法 |
||
数字近似算法 |
||
AL3.基本的计算算法 |
简单的数字算法。 |
10.1.1 算法 |
线性和折半查找算法 |
10.4.2 简单的查找算法 |
|
二次排序算法(选择、插入) |
11排序 |
|
O(N log N)排序算法(快速排序、堆排序、归并排序) |
||
哈希表,包括冲突避免策略 |
||
二叉遍历树 |
||
图的表示 (邻接表,邻接矩阵) |
||
深度和广度优先遍历 |
||
最短路经算法(Dijkstra算法和Floyd算法) |
||
传递闭包(Floyd算法) |
||
最小生成树(Prim和Kruskal算法) |
||
拓扑排序 |
||
AL4.分布式算法 AL5.基本的可计算性 AL6.复杂性分类:P和NP AL7.自动控制理论 AL8.高级算法分析 AL9.用密码写的算法 AL10.几何算法 |
编程语言Programming Languages (PL)
知识单元 |
主题 |
本书章节 |
PL1. 编程语言概述 |
程序设计语言的历史 |
0.2编程语言 |
编程范式概述 |
1.1.3 面向对象 1.4编程范式 |
|
规模对程序设计方法学的影响 |
0.1.5 问题求解 |
|
PL2. 虚拟机 |
虚拟机的概念 |
0.2.3 高级语言的编译与解释 |
虚拟机的层次 |
||
中间语言 |
||
安全问题——由在不同的机器上运行代码所引发的 |
||
PL3. 语言翻译初步 |
比较编译与解释执行模型,阐述各自的优点 |
0.2.3 高级语言的编译与解释 |
语言翻译的阶段(词法分析、解析、代码生成、优化) |
||
翻译的机器相关和机器无关 |
||
PL4. 声明和类型 |
类型的概念——数值和操作的集合 |
2.2.2 Java数据类型 |
声明模型(绑定、可见性、范围和生命期) |
2.2.3 变量的声明模型 |
|
类型检查概述 |
2.2.1 类型系统* |
|
垃圾回收 |
7.5垃圾回收* |
|
PL5. 抽象机制 |
作为抽象机制的过程、函数和迭代器 |
3.1.2 方法 5.2.3 迭代器 |
参数化机制(引用 Vs 值) |
3.3 消息传递机制 |
|
活动记录和存储管理 |
7.4.2 方法区 |
|
类型参数和参数化类型 |
5.4 Java泛型 |
|
编程语言中的模块 |
3.1.3 接口与实现分离 |
|
PL6. 面向对象程序设计 |
面向对象的设计 |
4.4依赖于抽象类型 |
封装和信息隐藏 |
6.1封装性 |
|
行为和实现的分离 |
3.1.3 接口与实现分离 |
|
类和子类 |
1.2.1 类体结构 2.1.1 里氏替换原则 |
|
继承(改写、动态分派) |
2.1.3 改写(overriding) |
|
多态(子类型多态 Vs . 继承) |
2.1.2 啊,我看到了多态 |
|
类层次 |
2类层次 |
|
集合类和迭代协议 |
5.2.3 迭代器 |
|
对象和方法表的内部表示 |
7.4.3 堆上的对象 |
|
PL7. 函数式程序设计[选修] PL8. 语言翻译系统[选修] PL9. 类型系统[选修] PL10.程序设计语言的语义[选修] PL11.程序设计语言的设计[选修] |
人机交互Human-Computer Interaction (HC)
知识单元 |
主题 |
本书章节 |
HC1. 人机交互基础[核心] |
动机:为什么关心人 |
|
HCI环境(工具、web超媒体、通信) |
||
HC2. 建立简单的图形用户接口[核心] |
GUI的原则 |
|
GUI工具 |
||
HC3. 以人为中心的软件评价[选修] HC4. 以人为中心的软件开发[选修] HC5. 图形用户接口设计[选修] HC6. 图形用户接口编程[选修] HC7. 多媒体系统的人机交互[选修] HC8. 协同和通信的人机交互[选修] |
离散结构 Discrete Structures (DS)
知识单元 |
主题 |
本书章节 |
DS1. 函数,关系,集合 |
||
DS2. 基本逻辑 |
命题逻辑、真值表 |
|
DS3. 证明技术 |
||
DS4. 计算基础 |
||
DS5. 图和树 |
||
DS6. 离散概率 |
图形和可视计算Graphics and Visual Computing(GV)
知识单元 |
主题 |
本书章节 |
GV1.图形学的基本技术 |
图形学软件的层次 |
|
使用图形应用程序接口(API) |
||
简单的颜色模型(RGB、HSB、CMYK) |
||
齐次坐标系 |
||
仿射转换(比例放缩、旋转、平移) |
||
取景变换 |
||
GV2.图形系统 |
||
GV3.图形通信[选修] GV4.几何建模[选修] GV5.基本渲染[选修] GV6.高级渲染[选修] GV7.高级技术[选修] GV8.计算机动画[选修] GV9.可视化[选修] GV10.虚拟现实[选修] GV11.计算机视觉[选修] |
软件工程Software Engineering (SE)
知识单元 |
主题 |
本书章节 |
SE1. 软件设计 |
基本设计概念和原则 |
2.1.1 里氏替换原则 4.4依赖于抽象类型 |
设计模式 |
||
软件体系结构 |
||
结构化设计 |
||
面向对象的分析和设计 |
||
构件级设计 |
||
重用设计 |
||
SE2. 使用API |
API编程 |
|
类浏览器和相关工具 |
||
以例程学编程 |
||
API环境中的调试 |
||
基于构件的计算导论 |
||
SE3. 软件工具和环境 |
编程环境 |
|
需求分析和设计建模工具 |
||
测试工具 |
||
配置管理工具 |
||
工具集成机制 |
||
SE4. 软件过程 SE5. 软件需求与规格说明 SE6. 软件验证 SE7. 软件演化 SE8. 软件项目管理 SE9. 基于构件的计算(选修) SE10. 形式化方法(选修) SE11. 软件可靠性(选修) SE12. 专用系统开发(选修) |
体系结构与组织Architecture and Organization(AR)
知识单元 |
AR1.数字逻辑和数字系统 AR2.数据的机器级表示 AR3.汇编级机器组织 AR4.存储系统组织和体系结构 AR5.接口和通信 AR6.功能的组织 AR7.多处理和备选体系结构 AR8.性能提高[选修] AR9.网络和分布式系统体系结构[选修] |
操作系统Operating Systems (OS)
知识单元 |
OS1.操作系统概述 OS2.操作系统原理 OS3.并发 OS4.调度与分派 OS5.存储管理 OS6.设备管理[选修] OS7.安全和保护[选修] OS8.文件系统[选修] OS9.实时和嵌入式系统[选修] OS10.容错[选修] OS11.系统性能评价[选修] OS12.脚本[选修] |
以网络为中心的计算Net-Centric Computing (NC)
知识单元 |
NC1. 网络计算导引 NC2. 通信和组网 NC3. 网络安全 NC4. 客户-服务器计算的一个实例:web NC5. 建立web应用 [选修] NC6. 网络管理 [选修] NC7. 压缩和解压 [选修] NC8. 多媒体数据技术 [选修] NC9. 无线和移动计算 [选修] |
智能系统 Intelligent Systems (IS)
知识单元 |
|
IS1.智能系统的基本问题 [核心] IS2.搜索和约束满足[核心] IS3.知识表示与推理[核心] IS4.高级搜索[选修] IS5.高级知识表示与推理[选修] IS6.代理[选修] IS7.自然语言处理[选修] IS8.机器学习与神经网络[选修] IS9.人工智能规划系统[选修] IS10.机器人学[选修] |
信息管理 Information Management (IM)
知识单元 |
IM1信息模型与系统(核心) IM2数据库系统(核心) IM3数据建模(核心) IM4关系数据库(选修) IM5数据库查询语言(选修) IM6关系数据库设计(选修) IM7事务处理(选修) IM8分布式数据库(选修) IM9物理数据库设计(选修) IM10数据挖掘(选修) IM11信息存储与检索(选修) IM12超文本和超媒体(选修) IM13多媒体信息与系统(选修) IM14数字图书馆(选修) |
社会与专业议题Social and ProfessionalIssues (SP)
知识单元 |
主题 |
本书章节 |
SP1.计算的历史[1] |
史前史---1946年以前 |
0.1.1 计算简史 |
计算机硬件、软件和网络的历史 |
||
计算的先驱者 |
涉及 |
|
SP2.计算的社会背景 |
||
SP3.分析方法和工具[核心] SP4.职业和道德责任[核心] SP5.基于计算机系统的风险与责任[1] SP6.知识产权[核心] SP7.隐私与公民自由[核心] SP8.计算机犯罪[选修] SP9. 计算中的经济议题[选修] SP10.哲学框架[选修] |
(数值)计算科学Computational Science (CN)
知识单元 |
主题 |
本书章节 |
CN1数值分析(选修) CN2.运筹学[选修] CN3.建模与仿真[选修] CN4.高性能计算 [选修] |