AP计算机科学A课程的目标与大部分美国大学计算机系讲授的计算机专业导论课相近。我们并不期望所有学习AP Computer Science A课程的学生最终在大学学习计算机专业。本课程既可以作为计算机专业的导论课,也可以作为其他专业学生成为当今信息社会合格公民的桥梁。

AP Computer Science A课程的具体目标如下:

  • 设计、实现并分析问题解决方案。
  • 使用与实现常见算法(algorithm)。
  • 使用标准数据结构(data structure)。
  • 开发并选择适当的算法与数据结构以解决新问题。
  • 流畅运用面向对象范式(object-oriented paradigm)解决问题。
  • 编程、运行、测试并调试Java程序,使用AP Java子集中的标准Java library class与interface。
  • 阅读理解含有数个class与彼此交互object的程序。
  • 阅读理解上述程序设计和开发过程的描述。(例子参见AP计算机科学实验)
  • 理解计算机使用的道德和社会影响。

Java基础

变量

字符串

聊天机器人实验(Magpie)

条件语句

循环

数组

图片处理实验(Picture)

List和ArrayList

  • List
  • Java中的List
  • import语句
  • List接口
  • 考试中的List方法
  • ArrayList类
  • 循环List
  • 常见错误
  • 简单多选题
  • 中等多选题
  • 困难多选题

二维数组

  • 二维数组简介
  • 数组存储
  • 声明二维数组
  • 在二维数组中设置数值
  • 从二维数组中获取一个值
  • 获取行数和列数
  • 循环遍历二维数组
  • 使用for-each来遍历数组
  • 循环遍历二维数组的一部分
  • 常见错误
  • 简单多选题
  • 中等多选题
  • 困难多选题

面向对象概念

  • 面向对象的编程概念
  • 继承
  • 为什么使用继承?
  • 包含与继承
  • 覆盖一个继承的方法
  • 使用super调用被覆盖的方法
  • 访问继承的私有字段
  • 继承和构造函数
  • 抽象类
  • 继承和接口
  • 接口的目的是什么?
  • 多态
  • 常见错误
  • 简单多选题
  • 中等多选题
  • 困难多选题

单人纸牌实验(Elevens)

递归

  • 递归
  • 什么是递归?
  • 为什么使用递归?
  • 跟踪递归方法
  • 常见错误
  • 简单多选题
  • 中等多选题
  • 困难多选题

查找和排序

  • 查找和排序
  • 顺序查找
  • 二进制查找
  • 选择排序
  • 插入排序
  • 合并排序

计算机语言

因为计算机科学强调解决问题,对学科的学习需要一种能精确简明表达可能解法的机制。任何自然语言(如英语)都会带来不一致和模棱两可,因此计算机科学的解法需要一种相较自然语言更严谨的沟通媒介。出于这个考虑,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中心网站。

扫码加群