
AP计算机科学A课程的目标与大部分美国大学计算机系讲授的计算机专业导论课相近。我们并不期望所有学习AP Computer Science A课程的学生最终在大学学习计算机专业。AP计算机既可以作为计算机专业的导论课,也可以作为其他专业学生成为当今信息社会合格公民的桥梁。
AP Computer Science A课程的具体目标如下:
- 设计、实现并分析问题解决方案。
- 使用与实现常见算法(algorithm)。
- 使用标准数据结构(data structure)。
- 开发并选择适当的算法与数据结构以解决新问题。
- 流畅运用面向对象范式(object-oriented paradigm)解决问题。
- 编程、运行、测试并调试Java程序,使用AP Java子集中的标准Java library class与interface。
- 阅读理解含有数个class与彼此交互object的程序。
- 阅读理解上述程序设计和开发过程的描述。(例子参见AP计算机科学实验)
- 理解计算机使用的道德和社会影响。
第一单元 基本数据类型
学习Java编程语言的基础,以及其他编程基本概念。
- 包括
int
,double
和boolean
的基础数据类型 - 在代码中计算算术表达式
- 使用运算符进行赋值
- 变量和运算符如何结合并按特定顺序计算,得到结果
第二单元 使用对象
学习利用数据来在数字世界中表示现实世界的object,了解执行更复杂操作的method。
- 利用object和class来描述实例、属性和行为
- 通过调用含参数及不含参数的构造函数来创建object
- 使用Java语言自带的class,包括
Integer
和Double
- 使用method来定义object的行为,包括
static
关键字和Math
class - 调用含参数及不含参数的非
static
、无返回值(void
关键字)的method - 使用
String
的object和method - 使用应用程序接口(application program interfaces, APIs)和库
聊天机器人实验(Magpie)
第三单元 布尔表达式与条件语句
了解算法的基础单元,使用条件语句来解决问题并控制结果。
- 计算关系运算符所组成表达式的布尔值
- 使用条件语句来依据输入值执行不同语句
- 利用条件语句来创造程序的多重结果
- 布尔表达式的等价转换
- 利用别名引用object
第四单元 循环
了解循环,另一个算法基础单元,为算法提供重复性。
- 创建重复执行表达式的循环,直到达成特定条件
- 标准的算数和
String
算法 - 使用
for
及while
实现循环 - 循环的嵌套
第五单元 类的编写
探索如何把现实世界的互动以将行为和属性组织进class的形式进行数字化,考察计算机编程的法律和道德意义。
- class的组成,包括属性的
public
和private
- 利用构造函数给object的属性赋值
- 使用注释来描述代码功能
- 利用method(
void
及非void,static
及非static)定义object的行为 - 如何在程序中使用变量
- 利用method将程序分解成针对各个子问题的小部分
- 编程的知识产权和道德考量
单人纸牌实验(Elevens)
第六单元 数组
学习使用数据集合(数据结构)的技巧和标准算法。
- 将多个相关项表示为数组对象
- 使用循环语句遍历数组元素
- 利用数组遍历来实现功能的标准算法
- Java中的数组
- 使用for-each循环
- 使用for循环来遍历数组
- 从后往前循环
- 循环遍历数组的一部分
- 数组注意事项
- 常见错误
- 简单多选题
- 中等多选题
- 困难多选题
- 主观题——自我除数B
- 主观题——马房A
- 主观题——马房B
图片处理实验(Picture)
第七单元 ArrayList
对数据集进行更深入的探索,研究存储更多数据的ArrayList
object,以及个人数组存储的隐私考量。
- 使用
ArrayList
object表示一系列相关object的集合 - 使用循环语句遍历
ArrayList
元素 - 利用
ArrayList
遍历来实现功能的标准算法 - 使用标准算法进行搜索和排序
- 数据集合的道德议题
第八单元 二维数组
在一维数组的基础上探究二维数组,对表示表格的数据集进行实验。
- 将数据集合表示为数组的数组,或二维数组
- 使用嵌套循环语句遍历二维数组元素
第九单元 继承
学习如何在不改变已有代码的前提下,通过subclass来操作程序,创立层次结构。
- 利用共有的属性和行为将现有的object置于superclass内
- 在superclass和subclass中定义和重写method
- 利用继承层次结构,将subclass类型转换为superclass类型
- 利用superclass的不同subclass object来实现多态
单人纸牌实验(Elevens)
第十单元 递归
使用递归method通过解决简化版的问题来层层递进解决原始问题。
- 执行递归method
- 使用折半查找和归并排序
计算机语言
因为计算机科学强调解决问题,对学科的学习需要一种能精确简明表达可能解法的机制。任何自然语言(如英语)都会带来不一致和模棱两可,因此计算机科学的解法需要一种相较自然语言更严谨的沟通媒介。出于这个考虑,AP Computer Science A课程要求用Java编程语言来记录问题的可能解法。在精确表达之外,Java还支持解决问题的重要元素,包括面向对象(object-orientation)、抽象(abstraction)和封装(encapsulation)。使用Java还让学生们可以实际运行程序来测试解决方案。
因为Java语言本身非常复杂,提供很多在单门导论课程里无法涵盖的特性。AP Computer Science A考试仅考察Java的一个子集。
资源
学生们需要有条件使用相对较现代的计算机系统。学校需要确保每个学生每周至少三小时的上机时间,多多益善。在课堂上学生与教师都应该能使用电脑作为教具,但学生也需要用额外的时间独立解决问题。
计算机系统必须让学生创建、编辑、迅速编译(compile)并执行大小如AP计算机科学实验中所示的Java程序。推荐学生使用的计算机系统有因特网连接。教师则必须能够上网。
学校必须确保每位学生拥有大学等级的课本以在课堂内外使用。推荐学校为每位学生提供打印的实验指南和报告。
先修课程(Prerequisite)
AP Computer Science A课程的先修课程是基本的英语与代数。学生需要熟知函数以及函数记号使用所涉及的相关概念(如\(f(x)=x+2\)与\(f(x)=g(h(x))\))。学生和他们的导师需要理解任何正规计算机课程都是构筑在需要预先准备学习的数理推理的基石上的。
课程教学
教师们需要进行类同于准备大学导论课的备课。课程强调解决问题、过程式与数据抽象(procedural and data abstraction)、面向对象编程与设计方法(object-oriented programming and design methodology)、算法(algorithm)与数据结构(data structure)。教师们需要注意计算机科学是日新月异的,因而应该与时俱进,了解问题解决方法、Java编程语言与囊括主动学习的教学思路等的新变化。一些有助于教师提升专业素养的资源包括AP Computer Science研讨班和暑校、AP教师在线社区与AP中心网站。
扫码加群
微信扫码添加小助手为好友,进入AP学习群解答自己的疑惑!
