AP101 /AP 计算机科学 A 在线课程

一、数学与计算机

AP 计算机科学 AAP Computer Science A

1.5骨架科目自学适配 10/10自学优选

本大纲最初按中国大陆考生口径编写,报名考务与资源可达性请以新加坡口径为准;新加坡版课件制作中。

课程速览
建议年级
Y2(16–17 岁)
自学总时长(小时)
150–200
每周(小时)
5–7(其中至少一半时间是敲代码)
周数
24–28 学习周 + 6 周考前冲刺
先修
初中代数与基本逻辑(CED 建议已完成 Algebra I,会用直角坐标系);无需任何编程前置
考试形式
全数字化 Bluebook:MCQ 42 题(55%)+ FRQ 4 题手打 Java(45%),无编译器不可运行
近年 5 分率
约 25%(近似值,历年在 23–27% 间波动)
外部锚
AP 考试、USACO Bronze/Silver、Gitee/GitHub 公开作品仓库
AI 默认级别(AIAS)
L3
资源可达性(原大陆口径)
【直】AP Central 的 CED、历年 FRQ 与评分标准;CSAwesome 抓取 403 未核实;JDK 与 IDE 用国内镜像【替】

一句话定位: 用 Java 完成大学第一学期程序设计课,考"读代码追踪结果"与"按规格手写方法"两种能力。 · 难度: ★★(入门门槛低、后半程陡;Unit 4 的数据结构与递归会筛掉一大批人)· 适合谁: 想走 CS / 工程 / 数据 / 金融科技方向,或任何想拿一门"硬"理工科 AP 的学生;有 Python / Scratch 经验起步更快,但不是必需。 · 在三年自学课程里的位置: 软件 / AI 与网安 / IT 方向的 Year 2 骨架 AP(数据 / 商业方向可放 Year 3),与 Calc AB、Micro、Psych 并行;前面接 AP-1.6 CSP,后面接大学数据结构。 · 大陆可考: ✅ 纯考试、无作品任务,不依赖 AP 协调员在 Digital Portfolio 侧配合,是自学最干净的 CS 科目。 · 自学时长: 150–200 小时,24–28 学习周(每周 5–7 小时,其中至少一半是敲代码)+ 6 周考前冲刺。

0. 课程卡片

项目 内容
考试形式与时长 3 小时,两节各 1 小时 30 分钟;全数字化(Bluebook)。Section I 单项选择题 42 题 / 90 分钟 / 55%;Section II 自由问答题(FRQ)4 题 / 90 分钟 / 45%,在 Bluebook 内置代码编辑区手打 Java——无编译器、无自动补全、不能运行。不允许也不需要计算器。考场提供 Java Quick Reference。
单元与占比 Unit 1 使用对象与方法 15–25%(5 周);Unit 2 选择与迭代 25–35%(6 周);Unit 3 类的创建 10–18%(3 周);Unit 4 数据集合 30–40%(10 周,官方约 50 课时,全课决胜单元)。
近年 5 分率 约 25%(近似值,历年在 23–27% 间波动;以官方当年 score distribution 为准)
自学总时长 / 周数 / 每周 150–200 小时 / 24–28 学习周 + 6 周冲刺 / 5–7 小时。零基础按 28 周走;有 Python 等语言基础可把 Unit 1–2 压到 6 周,总周期 16–20 周。
前置科目与后续科目 前置:初中代数与基本逻辑(CED 建议 Algebra I);先完成 AP-1.6 CSP 的 Big Idea 3 可让 Unit 1–2 快一倍。后续:大学数据结构(栈 / 队列 / 链表 / 树)、面向对象进阶(继承 / 接口 / 多态——正是新考纲删掉的那部分,毕业后自补)。与 AP-1.2 Calculus、AP-1.4 Statistics 无依赖,可并行。
大陆可考 / 报名渠道 ✅ 可考。大陆 Prometric 社会考生通道(约 9 月下旬开放、10 月下旬确认科目缴费、11 月中关闭,29 城);或香港 HKEAA(8 月下旬–11 月 2 日报名,须护照);或海外授权学校 exam-only 组(协调员订考截止 11 月 13 日)。
作品或项目任务(如有) 无。本科目没有 Digital Portfolio 组件,报名即考,这是它对自学者最大的结构性优势。
五维评分 异步 2 / 反馈 2 / 资源 2 / 设备 2 / 可验证 2 = 10 分(自学优选)
外部锚 AP 考试(主锚);USACO Bronze / Silver(免费,usaco.org,可达性未核实);Gitee / GitHub 公开作品仓库(GitHub 大陆间歇可达,Gitee 镜像【替】)
AI 默认级别 L3(可协作但须标注)。闸门、限时 FRQ、模考与费曼讲解一律 L1 禁 AI;知识点 CSA-4.1 的伦理讨论可上到 L5(把 AI 代码助手本身当研究对象)。

1. 这门课对自学者意味着什么

定位与难点。 这门课的难不在概念,在手感。考试只考两件事:给你一段代码问输出(Analyze Code,占选择题 37–53%),给你一个方法头和规格让你把实现填出来(Develop Code,22–38%)。两件事都不能靠"读懂了"过关——读懂一段嵌套循环和手工跑出它的输出,中间隔着一张变量跟踪表;看懂一道 FRQ 的参考答案和在 90 分钟里自己写出四道,中间隔着大约 40 道手写 FRQ。它的说理成分几乎为零,阅读量也小(英文只需读懂方法规格与 Javadoc 风格注释),所以时间应该几乎全部投在键盘和草稿纸上。

自学者特有的三个失败点(来自评分行):

  1. 只看代码不上机。 视频与教材让人产生"这不是很简单吗"的错觉,而 FRQ 要求你在没有编译器的情况下写出语法正确的 Java。对策写进本大纲的硬规则:Unit 1 起每个知识点必须有"按规格写小段代码"的题,Unit 3 起每周至少手写 1 道 FRQ。
  2. FRQ 手写 Java 的语法与边界错误。 分号、大括号、返回类型、length 与 length()、空列表、单元素、索引边界。IDE 会替你挡掉一半,Bluebook 不会。
  3. 不熟 Java Quick Reference 里给的类。 考场只能用那张表上的库方法,charAt、contains、Arrays.sort、Collections、StringBuilder、toUpperCase 都不在表上,用了可能不得分。自学者平时开着自动补全,考场立刻现形。

什么时候该推迟或放弃(止损线)。

  • 推迟一年的硬线:4 月两次全真模考都不到 85%(见第 6 节)——报名费损失,成绩单不损失。
  • 换课的止损线:Unit 2 闸门(选择与迭代)连续两次不过,且第二次的错题仍然集中在"追踪嵌套循环"上——说明程序执行模型还没建立起来,应先回去做 AP-1.6 CSP 的 Big Idea 3 或 2026-22 Lua 编程入门冒险,把"顺序 / 选择 / 迭代"在一个更轻的语言里跑通,下一年再回来。
  • 不该放弃的假信号:Unit 4 前两周(数组与 ArrayList)觉得吃力是正常的,全课时间的四成本来就在这里;不要在这个点上换课。

2. 先修诊断(10 题)

闭卷、纸笔、限时 40 分钟,第 1 周做。不看代码、不用电脑(第 10 题除外)。

# 题目 答案要点 对应能力
1 在整数运算里,-17 除以 5 的商与余数各是多少(按 Java 语义,商向零截断)? 商 −3,余 −2;余数符号跟被除数。 CSA-1.3 整数除法与取余
2 只用四则运算与取余,写出"取出 3854 的百位数字"的算式。 (3854 / 100) % 10 = 8;先整除去掉低位,再取余留一位。 CSA-2.9 数位分解
3 设 x、y 为整数。写出"x 与 y 至少有一个为正"的逻辑表达式,并写出它的否定式。 x > 0 OR y > 0;否定 x <= 0 AND y <= 0(德摩根律)。 CSA-2.6
4 f(x) = 2x + 1,求 f(f(2))。写出计算顺序。 f(2)=5,f(5)=11;内层先算完再作外层实参。 CSA-1.10 方法调用
5 一个 R 行 C 列的网格,行列都从 0 开始编号,第 r 行第 c 列的格子在"按行铺开"的一维序列中是第几个(从 0 开始)? r * C + c;注意乘的是列数不是行数。 CSA-4.11 二维数组
6 1+2+…+n 等于多少?一个从 1 循环到 n 的循环体一共执行多少次? n(n+1)/2;执行 n 次。 CSA-2.8 循环次数
7 用中文复述这句规格:Returns the number of elements in list that are strictly greater than val. Precondition: list is not null. 返回 list 中严格大于 val 的元素个数;前置条件是 list 不是 null(所以方法内不必判 null)。 英文规格阅读
8 用自然语言写出"判断整数 n 是否为质数"的步骤(不写代码,≤ 5 步)。 n<2 返回否;从 2 试到 √n(或 n−1);只要整除就返回否;试完都不整除返回是。 CSA-2.9
9 追踪下面伪代码的输出:s ← 0;对 i 从 1 到 4:若 i 是偶数则 s ← s + i,否则 s ← s − i;输出 s。 −1+2−3+4 = 2。要求写出四行变量表,不许心算。 CSA-2.4 追踪
10 在你自己的电脑上装好 JDK 与一个编辑器,命令行运行一个打印 Hello 的 Java 程序,截图命令与输出。 能看到 javac 编译无错 + java 运行输出 Hello;这是环境题不是知识题。 环境就绪

判定与补洞路径。

  • 8–10 题对(第 10 题必须对):直接进 Unit 1。
  • 5–7 题对:错在 1/2/6/9 → 用 2 周补"整数运算与循环次数":CSAwesome 第 1–2 章(可达性未核实)的交互练习各章末全做,配 20 道纸笔数位分解题;错在 3/7 → 用 1 周补逻辑与英文规格阅读,每天读 2 段官方 FRQ 的题干并中文复述。
  • ≤ 4 题对:不要硬上。先做 AP-1.6 CSP 的 Big Idea 3(7 周)或 2026-22 Lua 编程入门冒险(约 25 小时),把顺序 / 选择 / 迭代跑通,下一学期再开本课。
  • 第 10 题不过:这一条不打折。第 1 周的全部任务就是把环境装好(见第 3 节"工具"行),装不上就用在线 IDE 顶两周,但 Unit 3 之前必须有本地环境。

3. 资源栈

角色 资源 形式 费用 大陆可达性 年龄/账号 版本/核验 怎么用
官方 AP CSA Course and Exam Description(CED),含 Java Quick Reference 附录与样题 PDF 免费 【直】(collegeboard.org 域 GreatFire 标 "Mixed",开学第一周自测一次) 无需账号即可下载 2025-26 修订版(Effective Fall 2025,4 单元框架,2026 年 5 月首考,2026-27 沿用),2026-08 核对 唯一权威。第 1 周下载存本地并做 3-2-1 备份;每个知识点对照 CED 的 Learning Objective 打勾;Quick Reference 打印贴墙
官方 历年 FRQ + 评分标准(scoring guidelines)+ 学生样卷 + 分数分布,AP Central 的 past-exam-questions 页 PDF 免费 【直】 无需账号 可得年份以页面为准(未核实) 见附录 B 的分配表。选择题官方不公开,别去找
官方 AP CSA Labs(官方实验项目代码包,AP Central 课程页) 代码 + 讲义 免费 【直】 无需账号 新 CED 后官方 Lab 清单是否更新未核实,开学前核对 只当 Unit 3–4 的上机素材,不当主线;不考 Lab 内容
教材 CSAwesome(Runestone 开放教材,含浏览器内可运行的交互练习) 在线交互教材 免费 未核实(本轮抓取返回 403) Runestone 需注册账号;未成年由家长实名建号并知情 是否已按 4 单元新 CED 更新未核实,开学前核对 若能打开,作为 Unit 1–3 的主线读物 + 章末交互练习;打不开则改用下一行
教材 CodeHS AP CSA 免费自学版 在线课程 免费自学版 未核实 需注册账号;未成年家长知情 未核实 CSAwesome 不可用时的第一备选;只用它的练习,不看它的进度条
教材 Barron's AP Computer Science A 纸书 / 电子书 约 $20(国内引进或海淘,¥100–170) 【付】,实体书不受网络影响 无账号要求 买之前确认是"2025-26 新考纲 / 4 单元"版本,旧版含继承与接口 只用它的选择题题库与单元测评;讲解部分与 CED 冲突时以 CED 为准
视频 Fiveable AP CSA 学习指南与直播回放 图文 + 视频 免费层 + 付费层 【直】(GreatFire 2026-08-23 测通) 需注册账号;未成年家长知情 是否已更新到 4 单元新考纲(未核实,开学前核对) 只在某个知识点卡住时点开对应一节,不按它的顺序学
视频 B 站上的 AP CSA / Java 基础中英字幕搬运 视频 免费 【替】(YouTube 被封;B 站搬运为非官方,随时可能下架) B 站账号需手机号;未成年家长知情 非官方、版本不明 只作辅助,不作主线;看完必须配一道追踪题或一段代码,否则不计学时
练习 本平台 AI 1v1 导师 + 平台题库 在线 平台内 【直】 平台账号(家长实名) 随课更新 微关题、变式题、错题归因;闸门与模考禁用
练习 力扣中国站(leetcode.cn)Easy 题,用 Java 提交 在线判题 免费层足够 【直】 需手机号注册;未成年家长实名 常年在线 只作"语法肌肉"训练,每周 5 题;不能替代 FRQ(力扣给你完整 main 与测试,AP 给你半个类要你填方法)
练习 Practice-It(华盛顿大学 Java 练习站) 在线判题 免费 未核实(未核实,开学前核对) 需注册 题目按旧式 Java 课程组织 备选题源;只挑数组 / ArrayList / 二维数组 / 递归四类
工具 JDK(OpenJDK / Temurin,17 LTS) 本地软件 免费 官网【慢】;国内镜像【替】(清华 TUNA、华为云、阿里云开源镜像站均提供 OpenJDK 下载,未核实,开学前核对具体路径) 无账号 装 17 LTS;在编辑器里关闭一切 Java 8 之后的语法糖提示(var、switch 表达式、增强 instanceof 都不在考纲子集里) 上机主环境
工具 VS Code + Extension Pack for Java,或 IntelliJ IDEA Community 本地软件 免费 官网【慢】,国内镜像【替】 IntelliJ 可选 JetBrains 账号(13+ 未核实);VS Code 无需账号 长期维护 平时写代码用;写 FRQ 时不用(见下一行)
工具 系统自带纯文本编辑器(记事本 / TextEdit / gedit)+ 计时器 本地软件 免费 【直】 无 — Unit 3 起所有 FRQ 都在这里手打:无补全、无高亮、无格式化,最接近 Bluebook
工具 Bluebook(College Board 官方考试 App,含练习考) 本地软件 免费 未核实(家庭端在大陆的下载与练习考加载速度未核实) 需 College Board 账号;未成年家长知情 每年更新 10 月装一次并跑一遍练习考;跑不通就用"纯文本编辑器 + 计时器"模拟,不影响考场(考点提供设备)
工具 Gitee / GitCode(代码托管,GitHub 大陆间歇可达时的镜像) 在线 免费 【直】(Gitee / GitCode);GitHub【慢】(GreatFire 2026-09-04:68% 测试受干扰) 国内平台需实名手机号,未成年家长实名 — 每周把代码推上去;作品仓库是第三外部锚
工具 Anki 本地 + 同步 免费(桌面端) 【直】(GreatFire 2026-07-16 通过) AnkiWeb 账号可选 — 只背两样:Java Quick Reference 的方法签名、附录 A 的知识点编码

国内替代与离线策略。

  • 第 1 周做"资源连通性自检":CED PDF 下载、past-exam-questions 页打开、CSAwesome 打开、Fiveable 打开、Bluebook 练习考加载、Gitee 推送。把结果记进档案,不通的按上表换成【替】那一行。
  • 离线包(存本地 + 一份外置盘 + 一份云盘,3-2-1):CED PDF、Java Quick Reference 单页、所有能下到的历年 FRQ 与评分标准 PDF、JDK 安装包、编辑器安装包。这些下完之后,本课在断网状态下仍可推进 80% 的内容。
  • 视频类一律不作主线。B 站搬运随时可能下架,把它当"卡壳时的补丁"。

明确不用的资源及原因。

  • AP Classroom 的 Personal Progress Check 与题库:官方规则是"只有教师布置后才能打开",exam-only 学生拿到 join code 后只能用到 select resources 与 AP Videos,Progress Checks 基本关闭——不要把复习计划建立在它上面。
  • 2024 年及以前出版的备考书与网课:按旧 10 单元编排,含已删除的继承 / 多态 / 接口,且缺 split、File、Scanner 这几个新进 Quick Reference 的条目。
  • 任何"资源包""网盘题库""AP 真题合集":盗版、版本混乱(新旧考纲混在一起),本课不使用、不推荐。
  • Scratch:官网自 2020-08 起在大陆被封,且与 Java 无关。
  • AI 现编的"模拟真题":可以用来做变式练习(L3),但不得用于毕业模考(见第 6 节)。

4. 单元学习路线

全课屏幕 / 离屏比例约 6 : 4:屏幕时间用于敲代码与在线练习,离屏时间用于纸笔追踪表、手写 FRQ、Quick Reference 默写。每 30–40 分钟离开屏幕休息 10 分钟(远眺 + 起身),单次上机不超过 90 分钟。所有追踪题必须纸笔完成后再验证。

Unit 1 · Using Objects and Methods / 使用对象与方法(占比 15–25%,第 3–7 周,约 30 小时)

知识点清单(沿用 CED 编码,★ 为难度)

  • CSA-1.1 算法、程序与编译器导论:编译错误 / 运行错误 / 逻辑错误 ★
  • CSA-1.2 变量与数据类型:int / double / boolean、基本类型 vs 引用类型 ★
  • CSA-1.3 表达式与输出:算术运算符、整数除法与取余、优先级、System.out.print/println ★
  • CSA-1.4 赋值语句与输入:= 的语义、变量重新赋值 ★
  • CSA-1.5 类型转换与取值范围:自动提升、(int) / (double)、(int)(x + 0.5)、溢出 ★★
  • CSA-1.6 复合赋值运算符:+=、-=、*=、/=、%=、++、-- ★
  • CSA-1.7 API 与库:读方法文档、Java Quick Reference 的使用 ★
  • CSA-1.8 用注释写文档:前置 / 后置条件 ★
  • CSA-1.9 方法签名:方法名、参数列表、返回类型、重载 ★
  • CSA-1.10 调用类方法(静态方法):ClassName.method(args)、实参与形参 ★
  • CSA-1.11 Math 类:abs、pow、sqrt、random 与区间随机整数公式 ★★
  • CSA-1.12 对象是类的实例 ★
  • CSA-1.13 对象创建与存储:new、引用变量存地址、null ★★
  • CSA-1.14 调用实例方法:有返回值 vs void、对 null 调用 → NullPointerException ★★
  • CSA-1.15 字符串处理:不可变性、length、substring、indexOf、equals、compareTo、== 与 equals 的区别 ★★

学习活动(读 / 看 / 做;屏幕与离屏)

  • 读(离屏 6 h):CED 中 Unit 1 的 Learning Objectives 与 Essential Knowledge 逐条打勾;Java Quick Reference 的 String / Math / Integer / Double 四块抄一遍到活页纸上。
  • 看(屏幕 4 h):CSAwesome 第 1–3 章交互教材(打不开则用 CodeHS 免费自学版对应章);每看完一节立刻做该节的交互练习,不做不算学完。
  • 做(屏幕 12 h + 离屏 8 h):① 每个知识点 8–12 题微关;② 上机把本单元所有例子敲一遍再改写成变式(例如把 substring(2,5) 改成 substring(2, s.length()-1) 看会不会越界);③ 纸笔完成 30 道"表达式求值"题(整数除法、取余、类型转换各 10 道);④ 手抄 Quick Reference 一次。

本单元产出

  1. 一个 Unit1Playground.java,包含至少 12 个 main 里可运行的小实验(每个实验一行注释写"我以为输出是 X,实际是 Y"),推到 Gitee 仓库。
  2. 一张 A4 手写的 Quick Reference 默写卡(String / Math / Integer / Double 全部方法签名,含参数与返回类型),拍照存档案。
  3. 一份"引用 vs 值"的手绘图:两个引用变量指向同一对象、其中一个被重新赋值后的内存示意。

微关示例题(≥ 3 道,附答案要点)

  1. 求值。 int a = 7, b = 2; System.out.println(a / b + " " + a % b + " " + (double) a / b); 输出是什么? 答案要点: 3 1 3.5。整数除法截断得 3;7 % 2 得 1;(double) a 只把 a 提升为 double,再做实数除法得 3.5。注意 + 在有 String 参与时是拼接。
  2. 字符串。 String s = "computer"; System.out.println(s.substring(2, 5) + s.indexOf("t")); 输出是什么? 答案要点: mpu5。索引 c0 o1 m2 p3 u4 t5 e6 r7;substring(2,5) 取索引 2、3、4,右端不含;indexOf("t") 返回 5;String 加 int 是拼接。
  3. 引用与相等。 String x = "hi"; String y = new String("hi"); System.out.println(x == y); System.out.println(x.equals(y)); 输出?为什么? 答案要点: false 与 true。== 比较的是引用(地址),new 一定造出新对象;equals 比较内容。考试里凡是比较字符串一律用 equals。
  4. 溢出与转换。 System.out.println(Integer.MAX_VALUE + 1); 与 System.out.println((int) 3.99 + (int)(3.99 + 0.5)); 分别输出什么? 答案要点: 第一行是 -2147483648(int 32 位环绕);第二行 3 + 4 = 7((int) 是截断不是四舍五入,加 0.5 再截断才是四舍五入)。
  5. 区间随机。 写一个表达式,生成 5 到 20(含两端)的随机整数。 答案要点: (int)(Math.random() * 16) + 5。取值个数 = 20 − 5 + 1 = 16;Math.random() 返回 [0,1)。

易错与陷阱

  • 7 / 2 得 3 不是 3.5;-7 % 3 的符号跟被除数(得 −1)。
  • substring(a, b) 不含 b 端;substring(a) 取到末尾;b > length() 直接抛异常。
  • 用 == 比较字符串;对 null 引用调方法 → NullPointerException。
  • (int) 是截断不是四舍五入。
  • 只写 s.substring(1,3); 不接收返回值——String 不可变,方法不改原串。

AI 导师用法(可直接复制的提示词)

你是我的 AP CSA 导师,遵守规则:只提示不给答案,我说"给答案"之前不得写出完整代码或最终数值。
现在按 CED 2025-26 版 Unit 1 的知识点 CSA-1.15(字符串处理)出 10 道题:
5 道"写出输出"的追踪题、3 道"这段代码错在哪并说明后果"的找错题、2 道"按下面规格写一个方法体"的编码题。
硬性约束:只使用 AP Java Quick Reference 上列出的库方法(String 只有 length/substring/indexOf/equals/compareTo/split);
不得出现 charAt、contains、StringBuilder、toUpperCase。
我逐题作答后,你每题只回"对/错 + 一句提示指向我想错的那一步",全部答完再一次性讲解。

🚪 Unit 1 闸门

  • 闭卷限时 50 分钟综合卷:25 题 = 15 道表达式 / 字符串求值 + 6 道找错 + 4 道按规格写小段代码(含变式题与陷阱题)。全对才过。
  • 费曼讲解 2 分钟(录音或对小队讲):"引用变量里存的是什么?两个引用指向同一对象意味着什么?"——必须手画内存图,不许念定义。
  • 白纸默画项:Java Quick Reference 的 String 与 Math 两块,方法名、参数、返回类型全对。
  • 规则:错 1 题回看对应知识点做备用变式;错 ≥ 2 题本单元重学。单元结束 48 小时后再考,两次不过 → 冷却 48 小时 + 错题重学 + 换卷。闸门期间 L1 禁 AI。

Unit 2 · Selection and Iteration / 选择与迭代(占比 25–35%,第 8–13 周,约 36 小时)

知识点清单

  • CSA-2.1 带选择与重复的算法:自然语言需求 → 判断 + 循环结构 ★
  • CSA-2.2 布尔表达式:关系运算符、比较 double 用误差容限、布尔变量 ★
  • CSA-2.3 if 语句与 if–else:代码块大括号陷阱 ★
  • CSA-2.4 嵌套 if 与 if–else if–else 链:互斥分支的顺序、悬空 else ★★
  • CSA-2.5 复合布尔表达式:&&、||、!、短路求值、先判空再调用 ★★
  • CSA-2.6 比较布尔表达式:德摩根律、真值表、等价改写 ★★
  • CSA-2.7 while 循环:初始化 / 条件 / 更新三要素、死循环、哨兵循环 ★
  • CSA-2.8 for 循环:头部三段式、循环变量作用域、执行次数计算 ★
  • CSA-2.9 实现选择与迭代算法:累加 / 计数 / 求最值 / 判断质数 / 数位分解 ★★
  • CSA-2.10 实现字符串算法:逐字符遍历、统计 / 反转 / 子串计数 / 回文,用 substring(i, i+1) 取单字符 ★★
  • CSA-2.11 嵌套迭代:双层循环执行次数、打印图案、内外层变量关系 ★★★
  • CSA-2.12 非形式化运行时间分析:数语句执行次数、比较两段代码效率 ★★

学习活动

  • 读(离屏 5 h):CED Unit 2 全部 Learning Objectives;把"标准算法清单"(见附录 A 下方)抄成一张卡。
  • 看(屏幕 4 h):CSAwesome 第 4–6 章;卡壳时才看 Fiveable 对应小节。
  • 做(屏幕 14 h + 离屏 13 h):① 每个知识点 8–12 题微关,配比固定为 5 追踪 + 3 找错 / 改写 + 2 按规格写代码;② 每天 3 道纸笔追踪题并强制画变量跟踪表(每变量一列、每次迭代一行、条件判断单独一列记 T/F、输出单独一列;嵌套循环外层每迭代一次画一条分隔线);③ 上机实现 12 个标准算法各一遍,然后闭上教材重写一遍;④ 每周末 1 套 20 题限时选择题(45 分钟)。

本单元产出

  1. StandardAlgorithms.java:12 个标准算法(求和、计数、最值、平均、判质数、数位分解、反转数字、回文判断、统计子串、最长连续段、打印三角形、九九表)各一个方法 + 一个 main 跑边界用例(0、1、负数、空串)。
  2. 一本追踪表活页本:至少 60 张手画变量跟踪表,按知识点编号归档。
  3. 一段 2 分钟讲解录音:for 循环的执行顺序。

微关示例题

  1. 嵌套循环计数。 下面代码输出什么?
    int x = 0;
    for (int i = 0; i < 4; i++) {
        for (int j = i; j < 4; j++) {
            x++;
        }
    }
    System.out.println(x);
    
    答案要点: 10。内层次数依赖外层:i=0 跑 4 次、i=1 跑 3 次、i=2 跑 2 次、i=3 跑 1 次。必须列表统计,不许心算。
  2. while 追踪。 下面代码打印出什么序列?
    int n = 5;
    while (n != 1) {
        if (n % 2 == 0) { n = n / 2; }
        else { n = 3 * n + 1; }
        System.out.print(n + " ");
    }
    
    答案要点: 16 8 4 2 1 。注意打印在更新之后,所以第一个输出是 16 不是 5;要画 6 行变量表。
  3. 短路求值。 if (s != null && s.length() > 0) 与 if (s.length() > 0 && s != null) 在 s 为 null 时行为有何不同? 答案要点: 前者安全(&& 左边为假就不再求右边);后者立刻抛 NullPointerException。判空必须放在最左。
  4. 德摩根律。 写出 !(a > 3 && b < 5) 的等价表达式(不用 !)。 答案要点: a <= 3 || b >= 5。取反后 && 变 ||,每个关系运算符取反。
  5. 按规格写方法。 规格:/** Returns the number of times ch appears in str. Precondition: str is not null, ch has length 1. */ public static int countChar(String str, String ch)。写出方法体,只能用 Quick Reference 上的方法。 答案要点: int count = 0; for (int i = 0; i < str.length(); i++) { if (str.substring(i, i+1).equals(ch)) count++; } return count;。踩分点:循环边界 < length()、用 substring(i, i+1) 而不是 charAt、用 equals 而不是 ==、返回 count。

易错与陷阱

  • 循环边界差一(off-by-one):< 与 <= 混用。
  • if 后忘大括号,导致只有第一行受控。
  • if (x = 5) 与 if (x == 5)(前者在 Java 里对 int 是编译错误,对 boolean 变量则是逻辑灾难)。
  • 追踪嵌套循环时只在心里算——必须手画变量跟踪表,本平台辅导中口头报答案不算。
  • 用 charAt 取单字符(不在 Quick Reference 上),应用 substring(i, i+1)。

AI 导师用法

你是我的 AP CSA 导师,规则:只提示不给答案。
我要练 CSA-2.11 嵌套迭代的代码追踪。请出 6 段 Java 代码(每段 6–12 行,含双层循环与一个条件判断),问"输出是什么"。
要求:不要给答案;我会把我的**变量跟踪表**(每变量一列、每次迭代一行、条件列记 T/F、输出列)以文本表格发给你。
你只检查我的表格:指出第一处出错的行号并问我"这一行的循环变量在进入内层前是多少",不要直接说正确值。
我改到全对为止,最后请你总结我这 6 题的错误类型分布。

🚪 Unit 2 闸门

  • 闭卷限时 60 分钟综合卷:28 题,必含 5 道"写出输出"的追踪题(其中 2 道嵌套循环)+ 8 道布尔与短路 + 8 道标准算法 + 4 道找错 + 3 道按规格写代码。全对才过;追踪题必须附手画跟踪表,表错答对也算错。
  • 费曼讲解 2 分钟:"for 循环每一步的执行顺序",边讲边手画变量表。
  • 规则同 Unit 1;48 小时后再考,两次不过 → 冷却 48 小时 + 换卷。L1 禁 AI。

Unit 3 · Class Creation / 类的创建(占比 10–18%,第 14–16 周,约 18 小时)

知识点清单

  • CSA-3.1 抽象与程序设计:分解为类与方法、数据抽象与过程抽象 ★
  • CSA-3.2 程序设计的影响:设计选择对正确性、可读性与社会影响的后果 ★
  • CSA-3.3 类的结构:public class、实例变量 private、方法 public、封装 ★
  • CSA-3.4 构造器:与类同名、无返回类型、用参数初始化字段、重载、默认值 ★★
  • CSA-3.5 写方法:访问器 / 修改器、返回类型与 return、局部变量 vs 实例变量 ★★
  • CSA-3.6 传递与返回对象引用:形参是引用的拷贝 ★★★
  • CSA-3.7 类变量与类方法:static 字段共享、static 方法不能访问实例变量 ★★
  • CSA-3.8 作用域与访问:局部变量作用域、遮蔽、private 数据只能通过方法访问 ★★
  • CSA-3.9 this 关键字:区分同名参数与字段、把自身传给其它方法 ★★

学习活动

  • 读(离屏 3 h):CED Unit 3;把官方 FRQ Q2(Class Design)近三年的题干各读一遍,只读题干不看答案,圈出"字段 / 构造器 / 方法"三块要求。
  • 看(屏幕 2 h):CSAwesome 第 7–8 章。
  • 做(屏幕 7 h + 离屏 6 h):① 微关;② 每周 1 道手写 FRQ Q2(从本单元起执行,写在纯文本编辑器里,限时 22 分钟);③ 写 5 个完整类(Counter、Rectangle、BankAccount、Student、Dice),每个都要有 ≥ 2 字段、2 构造器、3 方法;④ 做一次"引用传递实验":写一个方法在内部 obj = new ... 与 obj.setX(...),观察调用者看到什么。

本单元产出

  1. classes/ 目录下 5 个完整类 + 各自的测试 main,推到 Gitee。
  2. 3 份手写 FRQ Q2 答卷(照片或扫描),每份附自评表:按官方 7 分制逐点画勾(字段私有 1 / 构造器正确初始化 1 / 每个方法头与规格一致 1 / 状态维护正确 2 / 返回值与类型正确 1 / 整体按规格 1,采分点为示意)。
  3. 一页"引用语义"总结:值传递与引用传递各画一张图。

微关示例题

  1. 找错。 下面构造器错在哪?后果是什么?
    public class Box {
        private int size;
        public Box(int size) { size = size; }
    }
    
    答案要点: 参数遮蔽了字段,size = size 是参数赋给自己,字段保持默认值 0。应写 this.size = size;。
  2. 引用语义。 已知 Box 有 setSize(int)。执行下面代码后,b1.getSize() 是多少?
    public static void grow(Box b) { b.setSize(10); b = new Box(99); }
    // 调用:Box b1 = new Box(3); grow(b1);
    
    答案要点: 10。形参 b 是引用的拷贝:b.setSize(10) 改的是同一个对象,所以外面看得到;b = new Box(99) 只改了拷贝指向哪里,外面看不到。
  3. static。 为什么下面代码编译不过?改法是什么?
    public class Counter {
        private int count;
        public static void reset() { count = 0; }
    }
    
    答案要点: static 方法没有 this,不能访问实例变量 count。要么把 reset 改成实例方法,要么把 count 改成 static(但那样所有对象共享一个计数)。
  4. 按规格写类。 规格:写一个 Tally 类,私有字段 total(int)与 count(int);构造器 Tally() 把两者置 0,构造器 Tally(int start) 把 total 置 start、count 置 1;方法 add(int v) 累加并计数;方法 getAverage() 返回 double 平均值,count 为 0 时返回 0.0;方法 getCount() 返回计数。 答案要点: 字段 private;两个构造器无返回类型且同名;getAverage 必须写 (double) total / count 而不是 total / count(否则整数除法);count == 0 必须单独判断,否则除以零。

易错与陷阱

  • 构造器里写 count = count; 忘 this.。
  • 方法返回类型与 return 语句不匹配(声明 int 却 return;)。
  • 在 static 方法里访问实例变量。
  • 把 setter 写成返回新对象而不是修改字段。
  • 求平均值忘了强制转换,整数除法把小数吃掉。

AI 导师用法

你是我的 AP CSA FRQ 教练。我刚在纯文本编辑器里手写了一道 FRQ Q2(Class Design),下面是题目规格与我的代码(未编译过)。
请严格按 AP 官方评分标准的"采分点"方式处理,规则:
1) 先不要给正确代码。逐条列出你判定的采分点(写成"应有的可见代码动作"),并对每条只回 得分/不得分。
2) 对每个不得分项,只给一句提示(指向规格里的哪一行我没照做),不要修改我的代码。
3) 额外单独指出:我有没有用到 Java Quick Reference 之外的方法、有没有擅自改方法签名。
4) 我修改后再发第二版给你,你重新评分。第三版之后我才会说"给参考实现"。

🚪 Unit 3 闸门

  • 闭卷限时 45 分钟综合卷:20 题(含变式题与陷阱题)全对。
  • 附加硬性要求:手写一个完整类(≥ 2 字段、2 构造器、3 方法,规格由平台给出),在纯文本编辑器里 25 分钟内完成,粘到编译器里一次编译通过(允许最多 1 处分号 / 大括号级别的机械错误)。
  • 附加:手写一道官方 FRQ Q2,按官方评分标准得分 ≥ 85%(7 分制 ≥ 6 分)。
  • 费曼讲解 2 分钟:"方法传参时基本类型和对象各发生了什么",手画两张内存图。
  • 规则同上。L1 禁 AI。

Unit 4 · Data Collections / 数据集合(占比 30–40%,第 17–26 周,约 65 小时)

这是全课的决胜单元:占比最高、官方约 50 课时、直接对应 FRQ Q3 与 Q4 两题。周计划里这 10 周锁死,要压缩就压 Unit 1–2,不要压这里。

知识点清单

  • CSA-4.1 数据收集的伦理与社会议题:隐私、偏见、数据来源合法性 ★
  • CSA-4.2 使用数据集导论:读取、清洗、汇总数据集的思路 ★
  • CSA-4.3 数组的创建与访问:new int[n]、初始化列表、索引 0..length-1、ArrayIndexOutOfBoundsException、默认值 ★
  • CSA-4.4 数组遍历:标准 for 与增强 for(for-each)的区别 ★★
  • CSA-4.5 实现数组算法:求和 / 均值 / 最值 / 计数 / 移位 / 反转 / 判断有序 / 找重复 ★★
  • CSA-4.6 使用文本文件:用 Scanner 按行 / 按词读取、文件不存在时的处理概念 ★
  • CSA-4.7 包装类:Integer / Double、自动装箱与拆箱、MIN_VALUE / MAX_VALUE ★
  • CSA-4.8 ArrayList 方法:add、add(i, x)、get、set、remove、size、泛型 ★★
  • CSA-4.9 ArrayList 遍历:索引遍历与 for-each、遍历中删除元素导致跳过 ★★
  • CSA-4.10 实现 ArrayList 算法:插入保持有序、删除满足条件的所有元素、合并 / 过滤、对象列表处理 ★★★
  • CSA-4.11 二维数组的创建与访问:a[row][col]、a.length 与 a[0].length ★★
  • CSA-4.12 二维数组遍历:行优先 / 列优先、for-each 遍历行 ★★
  • CSA-4.13 实现二维数组算法:行列求和、找最值位置、转置、边界 / 相邻格判断 ★★★
  • CSA-4.14 查找算法:顺序查找、二分查找 ★★
  • CSA-4.15 排序算法:选择排序、插入排序、归并排序的过程与一趟后的状态 ★★★
  • CSA-4.16 递归:基例与递归步、调用栈、追踪返回值、递归 vs 迭代 ★★★
  • CSA-4.17 递归查找与排序:递归二分查找、归并排序的递归结构 ★★★

学习活动(分四段,各 2–3 周)

  • 4A 数组与文件(4.3–4.7,第 17–19 周):读 CED;上机实现 8 个数组算法;用 Scanner 读一个 200 行的 CSV 文本(自己生成),做求和与均值;纸笔 20 道 for-each 与索引遍历对比题。
  • 4B ArrayList(4.8–4.10,第 20–22 周):每天 2 道"遍历中修改列表"的追踪题;上机实现有序插入、条件删除、合并、过滤;每周 1 道官方 FRQ Q3 手写。
  • 4C 二维数组(4.11–4.13,第 23–24 周):纸笔画 5×4 网格做行优先 / 列优先遍历;上机实现转置、行列和、找最值位置、相邻格计数(含边界);每周 1 道官方 FRQ Q4 手写。
  • 4D 查找、排序与递归(4.14–4.17,第 25–26 周):手工模拟二分查找 10 组;手写选择 / 插入 / 归并排序各一趟的中间状态 20 组;递归全部用调用栈表追踪(每层一行:参数 → 是否基例 → 返回值)。
  • 贯穿(4.1–4.2):写一篇 600 字中文短文《我的数据集从哪来、会伤害谁》,把 CSA-4.1 的伦理点落到一个具体数据集上(例如你自己收集的小队学习时长表)。屏幕 / 离屏 = 5 : 5。

本单元产出

  1. collections/ 目录:数组算法 8 个、ArrayList 算法 6 个、二维数组算法 6 个、查找 2 个、排序 3 个、递归 5 个,每个方法配 3 组边界测试(空、单元素、极值)。
  2. 12 份手写 FRQ 答卷(Q3 与 Q4 各 6 份)+ 12 份按官方评分标准的自评表。
  3. 一份"调用栈表"手稿集:至少 15 个递归方法的展开与回收过程。
  4. 600 字数据伦理短文(对应 CSA-4.1),发到小队互评。

微关示例题

  1. 遍历中删除。 已知 list 内容为 [3, 4, 6, 8, 9],执行下面代码后 list 是什么?
    for (int i = 0; i < list.size(); i++) {
        if (list.get(i) % 2 == 0) { list.remove(i); }
    }
    
    答案要点: [3, 6, 9]。i=1 删掉 4 后元素前移,6 移到索引 1 而 i 变成 2,6 被跳过;i=2 时是 8,删掉;结果剩 3、6、9。正确写法:倒序遍历 for (int i = list.size() - 1; i >= 0; i--),或删除后 i--。
  2. 二维数组。 int[][] a = new int[3][4]; 中 a.length 与 a[0].length 各是多少?写出"求第 c 列所有元素之和"的循环骨架。 答案要点: a.length = 3(行数),a[0].length = 4(列数)。列和:int sum = 0; for (int r = 0; r < a.length; r++) { sum += a[r][c]; }——外层循环变量是行下标。
  3. 二分查找次数。 一个已排序数组有 16 个元素,二分查找最坏情况下比较多少次?为什么? 答案要点: 5 次。每次把候选区间减半:16 → 8 → 4 → 2 → 1,共 5 步;一般地最坏次数是使 2^k > n 的最小 k。
  4. 递归追踪。 下面方法 mystery(7) 返回什么?画调用栈表。
    public static int mystery(int n) {
        if (n <= 1) { return 1; }
        return n * mystery(n - 2);
    }
    
    答案要点: 105。展开 7×5×3×mystery(1)=7×5×3×1。调用栈表五行:n=7 → 非基例;n=5 → 非基例;n=3 → 非基例;n=1 → 基例返回 1;再逐层回代 3、15、105。
  5. 排序中间状态。 数组 [5, 2, 9, 1] 升序排序:选择排序第 1 趟后是什么?插入排序第 2 趟后是什么? 答案要点: 选择排序第 1 趟把最小值 1 与位置 0 交换 → [1, 2, 9, 5];插入排序第 1 趟把 2 插到 5 前 → [2, 5, 9, 1],第 2 趟把 9 插入已排序区(9 > 5,不动)→ [2, 5, 9, 1]。考试最爱考"第 k 趟后长什么样"。
  6. for-each 的限制。 下面代码为什么不能把数组元素翻倍?
    for (int v : arr) { v = v * 2; }
    
    答案要点: v 是元素的拷贝(基本类型),改 v 不改数组。要改元素必须用索引 for 循环 arr[i] = arr[i] * 2;。

易错与陷阱

  • 二维数组 a[0].length 是列数不是行数;行列写反。
  • remove(i) 之后索引不应再加一(正向删除会跳元素,倒序遍历最稳)。
  • 二分查找把 low = mid 写成不加一 → 死循环。
  • 递归忘写基例,或基例返回值写错 → StackOverflowError / 结果差一层。
  • 把 for-each 当成能改数组元素。
  • 求最值时把初值设成 0(数组全为负数时错),应设成 a[0]。
  • nextLine 紧跟 nextInt 等方法时可能返回空串(4.6 文本文件读取的高频坑)。

AI 导师用法

你是我的 AP CSA 递归教练,只提示不给答案。
请给我 8 个递归方法(Java,每个 5–10 行,覆盖:数值累乘、字符串反转、数组求和、二分查找、斐波那契、汉诺塔计数、数位求和、归并的 merge 步骤),
每个只问"给定这个输入返回什么"。
我会以"调用栈表"格式回答:每层一行,列为【层号 | 参数值 | 是否基例 | 该层返回值】。
你只检查我的表:指出第一处出错的层号,并反问我"这一层的返回值由哪两部分组成",不要给出正确数字。
全部答对后,请按"基例错 / 递归步错 / 回代顺序错"给我一张错误类型统计。

🚪 Unit 4 闸门

  • 闭卷限时 90 分钟综合卷:35 题(含变式题、陷阱题与跨知识点综合)全对。
  • 附加硬性要求:独立限时 45 分钟手写一道 ArrayList FRQ(Q3,5 分制)与一道 2D Array FRQ(Q4,6 分制),按官方评分标准得分 ≥ 85%(即 Q3 ≥ 4.5 分、Q4 ≥ 5 分)。
  • 费曼讲解 2 分钟:"递归方法怎么展开与回收",边讲边画调用栈。
  • 白纸默画项:附录 A 下方"标准算法清单"9 条骨架代码 + 各自陷阱。
  • 规则同上。L1 禁 AI。

5. FRQ / 作品任务专训

本科目没有作品任务(无 Digital Portfolio 组件),Section II 就是四道手写 Java 的 FRQ,占 45%。

四道题的固定结构与分值(CED 2025-26 版):

题号 题型 分值 来自哪个单元 每题限时
Q1 Methods and Control Structures(写 2 个方法,或 1 个构造器 + 1 个方法,含条件与循环) 7 分 Unit 2 为主 + Unit 1 基本功 22 分钟
Q2 Class Design(按规格完整写一个类:字段、构造器、方法) 7 分 Unit 3 22 分钟
Q3 Data Analysis with ArrayList 5 分 Unit 4B 22 分钟
Q4 2D Array 6 分 Unit 4C 22 分钟

合计 25 分。评分按采分点(canonical solution 的关键动作)给分:循环边界正确、条件判断正确、调用了规格要求的方法、返回值正确……能拿部分分,所以永远不要空着;但"调用了规格里说不能调用的方法""改动了不该改的参数"会倒扣。

FRQ 写法铁律(每次闸门都检查)

  1. 先读完整题干与已给代码;
  2. 圈出 precondition / postcondition——它们是免费信息,直接决定循环范围与是否要判空;
  3. 用注释写 3 行伪代码;
  4. 再写 Java,方法头照抄题目,不自作主张改签名;
  5. 写完人肉跑一组小数据:空列表 / 单元素 / 边界值各一次;
  6. 最后扫一遍"有没有用到 Quick Reference 之外的方法"。

每周篇数与节奏

阶段 每周手写 FRQ 来源 批改方式
Unit 1–2(第 3–13 周) 0 篇(先练标准算法与追踪) — —
Unit 3(第 14–16 周) 1 篇 Q2 官方历年题(旧考纲的 Q2 结构与新版一致,可直接用) 自评 → AI 采分点核对(L3)
Unit 4(第 17–26 周) 1 篇 Q3 或 Q4 交替;4C 起每周 2 篇 官方历年题 自评 → AI 核对 → 小队互评
冲刺(第 29–34 周) 4 类各 4 套,每题限时 20 分钟 见附录 B 分配表 自评 → AI → 每月 1 篇真人

AI 批改的边界与真人复核频率

  • 可以交给 AI(L3):把官方评分标准的采分点逐条列出来、对照我的代码判"得分 / 不得分"、指出用了表外方法、指出签名被改。数理与代码类 FRQ 的采分点核对,AI 相当可靠。
  • 不能交给 AI:判断"我对规格的理解偏了没有"。AI 会顺着你的错误理解继续解释,这是本课 AI 批改最大的失真点。
  • 必须真人的环节:① 每月至少 1 篇 FRQ 手写稿送给志愿导师 / 付费代码评审(预算 ¥100–300/月),重点看"规格理解偏差"与代码可读性;② 每次单元闸门的费曼讲解要有真人听众(小队或家长),只有人会追问"那如果输入是空的呢"。
  • 小队互评(每周):交换手写 FRQ 稿,按官方评分标准互相打分,分歧处回官方 scoring guidelines 判定。互评意见公开,队长轮值。

FRQ 自评表示例(Q3 ArrayList,5 分制,采分点为示意)

# 采分点(可见的代码动作) 得分
1 正确遍历 ArrayList 并访问元素 / 调用对象方法 0 / 1
2 条件判断正确(含边界与"严格大于"这类措辞) 0 / 1
3 正确调用 add / remove / set,且空列表与末尾情形处理正确 0 / 1
4 返回正确的值与类型 0 / 1
5 方法整体按规格完成(签名未改、未用表外方法) 0 / 1

Q1 / Q2 各 7 分、Q4 6 分同理拆分。每一分都对应一个可见的代码动作,自评时逐条画勾,不许"感觉写得挺好"。

6. 模考与毕业闸门

时间 模考 题源 目标 处理
12 月(第 14–15 周附近) 阶段模考:MCQ 42 题 90 分钟 + FRQ Q1、Q2 各一题 CED 样题 + 平台题库(MCQ);官方历年 Q1/Q2(FRQ) ≥ 70%(报名门槛) 不达线不缴费。因为报名在 11 月而毕业模考在 3 月,报名门槛按"Unit 1–3 单元闸门全过 + 12 月阶段模考 ≥ 70%"执行
3 月(第 29–30 周) 全真 #1:3 小时完整卷 见附录 B:留出的最近年份套题之一 ≥ 75% 不达线 → 冷却 48 小时 + 错题按知识点编号回炉 + 换卷重考
4 月上(第 32 周) 全真 #2 附录 B 留出的最近年份套题 ≥ 80% 同上
4 月下(第 33 周) 全真 #3 附录 B 留出的最近年份套题 ≥ 85%(方可应考) 两次不过 → 推迟一年,5 月弃考(损失报名费,不损失成绩单)

官方真题分配表(原则)

  • 按新考纲(4 单元)的官方真题最多只有 1 套——2026 年 5 月是修订版 CED 的首考,该年 FRQ 是否公布、何时公布未核实。这一套(若有)必须留给 4 月下的全真 #3。
  • 其余年份按旧 10 单元考纲:Q1/Q2/Q3/Q4 的题型结构与新版基本一致,可直接用;但旧真题里出现 extends、implements、super、接口的题一律剔除(新考纲已删除继承 / 多态 / 接口)。剔除动作在做题前完成,由学生自己筛,筛出来的题记进"已删除清单"。
  • 分配原则:最近两年留给最终模考;再往前的年份用于单元训练与冲刺期的分题型专练。具体可得年份见附录 B。

录屏与见证

  • 每场全真模考全程录屏(桌面 + 计时器可见),FRQ 部分在纯文本编辑器中完成,编辑器不得开自动补全 / 高亮 / 格式化。
  • 录屏文件与答卷一起存进"证据档案",小队互查是否有中途查阅资料。
  • 家长或小队队长任一人在场(线上同屏)作为见证;无见证的模考成绩不计入闸门。

冷却规则

  • 任何闸门 / 模考不过:冷却 48 小时,期间只做错题对应知识点的重学与备用变式,不碰新内容;48 小时后换卷重考。
  • 同一闸门两次不过:本单元重学(Unit 1–3 各 1 周、Unit 4 各段 1.5 周),重学后第三次考。
  • 毕业模考(4 月 #2 与 #3)两次不过:推迟一年,把本年剩余时间转去做 Gitee 作品仓库与 USACO。

7. 报名与考务(社会考生)

没有 AP 协调员,就没有人替你盯日期。 本节所有日期以当年官网为准(AP Central / Prometric 中国 / HKEAA),每年 8 月复审时更新。

三条渠道

渠道 适用 流程 截止 注意
大陆 Prometric 社会考生通道 在家教育 / 自主学习 / 网校学生,就读无 CEEB 代码或不开 AP 课的高中 约 9 月下旬开放 → 10 月下旬确认科目并缴费 → 11 月中关闭 11 月中 29 城;同一科目不得两处报考;不退费、无补考;科目清单每年重核。2026 考季为 10-17 开放、10-24 缴费、11-14 关闭;2027 考季窗口、费用与科目清单未核实,须 9–10 月盯官网
香港 HKEAA 大陆通道未开放或名额不足时 8 月下旬–11 月 2 日网上报名,须护照 11 月 2 日 社会考生须在同一考区完成全部科目报名;差旅约 ¥2,000–6,000/趟;本科目大陆可考,一般不需要走这条
海外授权学校 exam-only 组 海外华人学生 秋季用 AP Course Ledger 找学校 → 协调员建 exam only section 并给 join code → 订考 11 月 13 日(3 月 12 日迟订,有迟费) 2026-27 起 College Board 更新校外学生订考流程,以当年协调员手册为准

时间线(自学者自己盯)

  • 9 月:确定本年报考科目组合(每年 2–4 门、并行 ≤ 4 门);盯 Prometric 通道开放公告;若走海外渠道,11 月 1 日前拿到 join code。
  • 10 月:确认科目、缴费;装 Bluebook 跑一次练习考(家庭端在大陆的加载速度未核实,跑不通不影响考场,但要提前知道)。
  • 11 月:缴费截止(HKEAA 11/2、Prometric 约 11 月中、美国学校 11/13)。缴费前必须已过"Unit 1–3 闸门 + 12 月阶段模考 ≥ 70%"中的前一半,12 月阶段模考不过就当损失报名费。
  • 3 月:设备体检;迟订截止(美国学校 3/12)。
  • 5 月:两周考期(2027 年为 5 月 3–7 日、10–14 日);AP CSA 官网列为 2027 年 5 月 12 日(周三)Session 2,具体以官网为准。
  • 6 月:AP 免费送分 6/20 前指定。7 月:出分。

费用(截至 2026-09-05 核实的口径):美国境内 $98/科(2026);境外考点标价往年为 $128/科,2026-27 未核实;大陆 Prometric 通道费用未核实,以当年公告为准。差旅按渠道另算。

设备与考务

  • 本科目全数字化,在 Bluebook 内作答,考点提供设备(大陆 AP 考点自 2025 年起已用 Bluebook 机考)。
  • 不允许也不需要计算器;不需要耳麦(那是世界语言科目的要求)。
  • 考场提供 Java Quick Reference;不允许带任何自己的参考资料。
  • 无 Digital Portfolio 组件——这是本科目相对 CSP 最大的省事之处。
  • 退费与补考:大陆通道不退费、无补考;其它渠道以当年规则为准。

8. AI 使用规范

默认级别 L3(可协作但须标注)。分环节:

环节 AIAS 级别 具体规定
知识点微关、单元闸门、限时 FRQ、全真模考、费曼讲解 L1 禁 AI 断网或关闭所有 AI 窗口;录屏见证
周计划、错题归因分类、Unit 4 四段排期 L2 只可用 AI 规划 AI 只输出计划,不输出内容
日常练习后的讲解、变式题生成、代码审查、报错解释 L3 协作须标注 必须先自己写完 / 先自己作答,再交给 AI;每次交互记进 AI 使用日志,随作业提交
作品仓库的构建脚本、测试脚本、README 排版等非考纲代码 L4 AI 可完成但你要能逐行解释 提交前口述每个函数的作用;答不出就删掉重写
CSA-4.1 数据伦理专题:把"AI 代码助手对初学者的影响"当研究对象 L5 AI 本身是研究对象 产出 600 字短文,需引用自己的两次真实交互记录

三个提示词模板(可直接复制)

① 讲解模板

你是我的 AP CSA 导师。规则:只提示不给答案;在我说"给答案"之前,不得写出完整代码、不得说出最终数值。
我卡在知识点 <填 CSA-x.y 编码> 的这个地方:<粘贴我的疑问与我已经想到的一步>。
请按顺序做三件事:
1) 用一个反问确认我到底卡在哪一步(只问一句);
2) 给我一个"最小可自查的例子"(≤5 行代码),让我自己跑出结果;
3) 我报告结果后,你再决定给下一个提示还是让我总结。
全程只使用 AP Java Quick Reference 上列出的库方法。

② 出题模板

你是我的 AP CSA 出题官。按 CED 2025-26 版(4 单元框架)知识点 <填编码> 出 10 道题,配比固定:
5 道"写出输出"的代码追踪题 + 3 道"这段代码错在哪、后果是什么"的找错题 + 2 道"按下面规格写方法体"的编码题。
约束:只用 Quick Reference 上的方法;不得出现继承、接口、多态、super(新考纲已删除);每题标注它考的知识点编码。
先只给题目,不给答案。我逐题作答后,你每题只回"对/错 + 一句指向错因的提示",等我全部答完再统一讲解。

③ 批改模板

你是 AP CSA 的评分员。下面是官方 FRQ 题干与我手写的答案(未编译)。
按官方 scoring guidelines 的采分点方式处理:
1) 先把这题的采分点写成"应当出现的可见代码动作"清单(Q1/Q2 各 7 项、Q3 5 项、Q4 6 项,按题目分值);
2) 对每一项只判"得分 / 不得分",不得直接改我的代码;
3) 单列一节"违规检查":是否改了方法签名、是否用了 Quick Reference 之外的方法、是否修改了规格禁止修改的参数;
4) 对不得分项各给一句提示(指向题干里我没照做的那句话)。
我改完发第二版给你重评。第三版之后我才会说"给参考实现"。

四层反馈在本课的落点

层 频率 在本课具体做什么 谁
① AI 即时 每天 变量跟踪表批改、报错解释、变式题、FRQ 采分点核对 平台 AI 1v1 导师(国内模型)
② 小队互评 每周 2 次同步 + 异步 交换手写 FRQ 按评分标准互评;互听费曼讲解;周三 60 分钟共同做一套限时选择题,周日 60 分钟复盘错题 3–5 人线上小队,队长轮值
③ 真人反馈 每月 ≥ 1 次(30–60 分钟) 送当月最好的一份 FRQ 手写稿 + 一个 Gitee 仓库去做代码评审;重点听"规格理解偏差"与命名可读性 志愿导师 / 校友 / 付费代码评审,预算 ¥100–300/月
④ 外部锚 每学期 ≥ 1 次 12 月 USACO 一场(Bronze);3–4 月官方真题模考;5 月 AP 实考;学期末公开一个 Gitee 仓库并请人提 issue AP、USACO、真实读者

禁止项与诚信

  • 不买"拼车号 / 代充号";18 岁前一律用国内可直接访问的大模型(DeepSeek、通义、智谱、豆包、Kimi),且需监护人同意。
  • 闸门与模考期间使用 AI,该次成绩作废并重考换卷。
  • AI 生成的代码不得直接进作品仓库;进仓库的每一行都要能口述解释(L4 规则)。
  • AI 生成的"模拟真题"不得用于毕业模考。

9. 全年周计划

第 1 周锚定为考季学年 9 月的第一个周一(2026-27 考季即 2026-09-07)。每周 5–7 小时;Unit 4 期间上浮到 7 小时。

周 日期段 单元/内容 每周产出 闸门/节点
1 9/7–9/13 环境搭建 + 资源连通性自检 + 先修诊断 10 题 JDK/编辑器截图、诊断卷、自检表 9 月:确定本年报考科目;盯 Prometric 通道
2 9/14–9/20 补洞(按诊断结果)+ CED 通读 + Quick Reference 手抄 手抄 Quick Reference、CED 打勾表 建立 Gitee 仓库与 3-2-1 备份
3 9/21–9/27 Unit 1:CSA-1.1–1.4 微关 4 组、Playground 前 4 个实验 —
4 9/28–10/4 Unit 1:CSA-1.5–1.8 微关 4 组、30 道表达式求值纸笔题 —
5 10/5–10/11 Unit 1:CSA-1.9–1.12 微关 4 组、方法调用图 10 月:Prometric 确认科目、缴费
6 10/12–10/18 Unit 1:CSA-1.13–1.15 微关 3 组、引用内存图 装 Bluebook 跑一次练习考
7 10/19–10/25 Unit 1 综合复习 + 变式题 Playground 12 个实验完成 🚪 Unit 1 闸门(单元结束 48 h 后考)
8 10/26–11/1 Unit 2:CSA-2.1–2.3 微关 3 组、追踪表 15 张 —
9 11/2–11/8 Unit 2:CSA-2.4–2.6 微关 3 组、真值表与德摩根练习 11 月:AP 缴费截止(HKEAA 11/2、Prometric 约 11 月中、美国 11/13)
10 11/9–11/15 Unit 2:CSA-2.7–2.8 微关 2 组、循环次数计算 20 题 —
11 11/16–11/22 Unit 2:CSA-2.9 标准算法上机 12 个标准算法方法 周末 20 题限时选择题
12 11/23–11/29 Unit 2:CSA-2.10–2.11 微关 2 组、追踪表累计 45 张 —
13 11/30–12/6 Unit 2:CSA-2.12 + 综合复习 追踪表累计 60 张、录 2 分钟讲解 🚪 Unit 2 闸门
14 12/7–12/13 Unit 3:CSA-3.1–3.5 微关 5 组、3 个完整类 手写 FRQ Q2 第 1 篇
15 12/14–12/20 Unit 3:CSA-3.6–3.9 微关 4 组、引用语义实验 12 月阶段模考(≥ 70%);USACO 第一场
16 12/21–12/27 Unit 3 综合 + FRQ Q2 专项 5 个类完成、3 份 Q2 自评表 🚪 Unit 3 闸门(含手写类一次编译通过)
17 12/28–1/3 Unit 4A:CSA-4.1–4.3 微关 3 组、数组基础算法 4 个 数据伦理短文起草
18 1/4–1/10 Unit 4A:CSA-4.4–4.5 微关 2 组、数组算法 8 个完成 —
19 1/11–1/17 Unit 4A:CSA-4.6–4.7(文本文件与包装类) 读 200 行 CSV 的程序 600 字数据伦理短文交小队
20 1/18–1/24 Unit 4B:CSA-4.8 微关 1 组、ArrayList 基础练习 手写 FRQ Q3 第 1 篇
21 1/25–1/31 Unit 4B:CSA-4.9(遍历中修改) 微关 1 组、20 道删除追踪题 手写 FRQ Q3 第 2 篇;春节读书周弹性
22 2/1–2/7 Unit 4B:CSA-4.10 ArrayList 算法 6 个 手写 FRQ Q3 第 3 篇
23 2/8–2/14 Unit 4C:CSA-4.11–4.12 微关 2 组、网格遍历纸笔练习 手写 FRQ Q4 第 1 篇
24 2/15–2/21 Unit 4C:CSA-4.13 二维数组算法 6 个 手写 FRQ Q4 第 2、3 篇
25 2/22–2/28 Unit 4D:CSA-4.14–4.15 查找 2 个、排序 3 个、中间状态 20 组 手写 FRQ Q3/Q4 各 1 篇
26 3/1–3/7 Unit 4D:CSA-4.16–4.17 递归 递归 5 个、调用栈表 15 份 🚪 Unit 4 闸门(含 Q3/Q4 限时 ≥ 85%)
27 3/8–3/14 全课复盘:知识点编码逐条自评 弱点清单(按编码排序) 设备体检(Bluebook)
28 3/15–3/21 弱点回炉 弱点专项 60 题 —
29 3/22–3/28 冲刺 W1:FRQ 四类各 4 套(Q1、Q2) 8 份答卷 + 8 份自评表 3 月全真 #1(≥ 75%);迟订截止 3/12 已过
30 3/29–4/4 冲刺 W2:FRQ 四类各 4 套(Q3、Q4) 8 份答卷 + 8 份自评表 真人评审 1 篇
31 4/5–4/11 冲刺 W3:选择题专项(每天 21 题 / 45 分钟) 错题全部手画跟踪表 —
32 4/12–4/18 冲刺 W4:全真 #2 + 错题 模考录屏 + 归因表 全真 #2(≥ 80%)
33 4/19–4/25 冲刺 W5:全真 #3 + 错题 模考录屏 + 归因表 全真 #3(≥ 85%)→ 决定考不考
34 4/26–5/2 冲刺 W6:错题收尾 + Quick Reference 背默 默写卡全对 AP 准考证与考点确认
35 5/3–5/9 考期第一周:轻量维持(每天 10 题追踪 + 1 道 FRQ) — 两周考期开始
36 5/10–5/16 AP CSA 考试(2027 年官网列 5 月 12 日 Session 2,以官网为准) — 考后立刻写"考场复盘"进档案

与三年课表的对应。 本课排在 Year 2,与 Calculus AB/BC、Microeconomics、Psychology 或 CSA 同年的其它 AP 并行(并行 ≤ 4 门)。模块侧与 T1 主题的 2026-29 C# 面向对象编程(Unit 3 的类设计在另一门语言里再走一遍)、2028-29 数据结构与算法(Unit 4 之后的自然延伸)互补。

三层速度的调整。

  • 牛顿层:把总周期拉到 34 学习周,Unit 1–2 各加 2 周;本年只考这一门 CS 科目;FRQ 从 Unit 3 起改为两周 1 篇。
  • 伽利略层:按上表执行。
  • 爱因斯坦层:Unit 1–2 压到 6 周(有 Python / Lua 基础者),省下的 5 周投入 USACO Bronze → Silver 与一个有真实用户的 Java 小工具;FRQ 从 Unit 2 起就开始写。

10. 本科目的"不知道的不知道"(8–12 条)

  1. 2025-26 修订版 CED 把继承 / 多态 / 接口从考试中删除了,但市面上绝大多数教材、网课与 2025 年以前的真题仍按旧 10 单元编排。 —— 会踩是因为你买的书、搜到的题、B 站的课都不会主动告诉你"这一章不考了",你可能花三周学 extends 与 super,或者用旧真题模考时被继承题拉低分数产生错误的挫败感。对策:把源包里的"旧 → 新对照表"打印贴在书桌上;任何一道题只要出现 extends、implements、super、接口,立刻跳过并记进"已删除清单";买书前先确认封面写的是 4 单元 / 2025-26 新考纲。
  2. 考场只能用 Java Quick Reference 上列出的库方法,charAt、contains、Arrays.sort、Collections、StringBuilder、toUpperCase 全都不在表上。 —— 会踩是因为你平时在 IDE 里写代码,自动补全会把这些方法推到你面前,你甚至不知道自己用了表外方法。对策:Unit 1 起在编辑器里关闭 Java 自动补全(或至少在写 FRQ 时切到纯文本编辑器);每周默写一次 Quick Reference;AI 批改模板里固定加一条"违规检查"。
  3. split、File、Scanner 是新版 Quick Reference 才加进来的条目,对应新增的 4.6 文本文件读取。 —— 会踩是因为 2024 年以前的备考资料完全没有这块内容,你会以为自己"学完了 Unit 4",考场遇到读文件的题却没见过 hasNext() 的写法。对策:以 CED 附录的 Quick Reference 为唯一权威,对照自己手上的教材列出"缺哪几个方法",缺的部分用官方文档补,并在第 19 周专门做一次"读 CSV 求和"的上机。
  4. FRQ 按采分点给分、能拿部分分,空着必然 0 分;但调用了题目禁止的方法或修改了不该改的参数会倒扣。 —— 会踩是因为中国学生的应试习惯是"没把握就不写",同时又容易在慌乱中"多做一点"(顺手排个序、顺手改个参数)。对策:闸门规定任何 FRQ 不得留白,至少写出方法头 + 循环骨架 + return;读题时用符号把"不能使用 / 不能修改"的句子圈出来,写完对照一遍再交。
  5. Unit 4 占 30–40%、官方约 50 课时,是全课时间的四成,但自学者最常见的排法是把四个单元平均分配。 —— 会踩是因为 Unit 1–2 学得顺、心理上想"多巩固",结果 3 月才开始学递归和排序。对策:周计划里 Unit 4 的 10 周锁死不动;要压缩只能压 Unit 1–2;每次周复盘时看一眼"距离 Unit 4 开始还有几周"。
  6. FRQ 在 Bluebook 的代码区手打,没有编译器、没有自动补全、不能运行、也不会替你配平大括号。 —— 会踩是因为你在 IDE 里"能写对"的手感是假的:IDE 帮你补了分号、配了括号、标了红线。对策:从 Unit 3 起所有 FRQ 一律在系统自带纯文本编辑器里写,写完再粘进编译器,统计"第一次就编译通过率"并写进档案,目标是冲刺期达到 80% 以上;养成"写一个 { 立刻写 }、再回中间填内容"的习惯。
  7. 本课的失败点是"只看代码不上机",但它有一个反面:只刷 LeetCode 不练 FRQ 规格。 —— 会踩是因为力扣有完整的 main 与测试用例、能立刻看到红绿,成就感高;而 AP 给你半个类和一段英文规格,要你填一个方法。这两种能力不能互相替代。对策:刷题与手写 FRQ 保持 1 : 1;每道力扣题做完后强制加一步——把题目改写成"AP 风格的方法规格"(含 precondition),再照着规格重写一遍。
  8. USACO 作为第二外部锚,比赛集中在 12 月、1 月、2 月与 3 月公开赛,与 3 月的全真模考 #1 直接撞档。 —— 会踩是因为竞赛的即时反馈比模考爽,很容易临时改主意去打比赛。对策:只打 12 月与 1 月两场 Bronze,3 月一场无条件放弃保模考;usaco.org 的注册与年龄要求未核实,报名前先确认,并由家长知情。
  9. JDK 的版本与语法糖会给你一种"能编译就是对的"的错觉,而 AP 只考 Java 的一个保守子集。 —— 会踩是因为 var、switch 表达式、增强 instanceof、文本块在 JDK 17 里都能编译通过,IDE 甚至会建议你这么写,考场却不认。对策:装 JDK 17 LTS,在编辑器设置里关闭所有"现代 Java 写法"提示;把 CED 里出现过的语法形式列成一张"允许清单",不在清单上的写法一律不用。
  10. AP Classroom 的 Personal Progress Check 对 exam-only 学生基本关闭——官方规则是"只有教师布置后才能打开"。 —— 会踩是因为很多备考攻略默认你有 Progress Check 可刷,你拿到 join code 后会花很久去找它们在哪。对策:从一开始就不把它算进题源;MCQ 题源只用 CED 样题 + 平台题库 + 一本新考纲的纸质题库(AP Videos 对自学者可用,可以看,但那是讲解不是题)。
  11. 大陆 Prometric 社会考生通道"不退费、无补考",而报名(11 月中)在毕业模考(3 月)之前四个月。 —— 会踩是因为你会本能地想"先报了再说",然后在 3 月发现只有 70% 也舍不得弃考,最后拿一个 3 分。对策:把 12 月阶段模考 ≥ 70% 当成硬性报名门槛写进日历;4 月全真 #3 不到 85% 就弃考,报名费是沉没成本,成绩单不是。
  12. 家里练的 Bluebook 是"练习版",它在大陆家庭网络下能否正常加载未核实;而考场设备由考点提供,不是你带去的电脑。 —— 会踩是因为你可能在家里怎么都装不上 Bluebook,从而误以为"我考不了",或者相反,在家练得很顺却没适应考点键盘与屏幕。对策:10 月装一次并跑一遍练习考,跑不通就改用"纯文本编辑器 + 计时器"模拟(对本科目影响极小,因为 FRQ 就是纯文本输入);同时在模考时刻意换一次键盘,训练手感的迁移。

11. 学完之后

  • AP 分数与大学学分:多数美国大学把 CSA 4–5 分兑换成"计算机科学导论 / CS1"的学分或免修资格(具体政策逐校不同,以各校 AP credit policy 为准,未核实)。国内高校一般不认 AP 学分,但它是申请材料里的硬证据。
  • 直接衔接的 AP:本课本身就是 CS 线的终点科目之一。同方向可继续 AP-1.4 Statistics(数据方向)、AP-1.2 Calculus BC(工程方向);网安方向可考虑 AP Cybersecurity(2027-05-05 首考,对社会考生 / 大陆考点是否开放未核实,只作第 6–9 门加分项)。
  • 自补被删掉的那一块:新考纲删除的继承 / 多态 / 接口是真实工程里躲不开的东西。毕业后用 4 周补上(写一个含抽象类 + 接口 + 多态调用的小项目即可),这一步不进考试但进作品集。
  • 方向课程与模块:2028-29 数据结构与算法(栈 / 队列 / 链表 / 树,本课 Unit 4 的直接延伸)、2026-29 C# 面向对象编程(在另一门语言里重走类设计)、2028-25 用 JavaScript 打造网页应用(把算法能力变成可部署的东西)。
  • 作品升级路径:把本课的 collections/ 与 classes/ 两个目录整理成一个带 README、单元测试与使用示例的公开仓库(Gitee 主仓 + GitHub 镜像);README 必含:项目目的、如何运行、每个算法的复杂度量级、已知限制、一段"我踩过的三个坑"。这是简历上比 AP 分数更能被读的东西。
  • 外部锚续接:USACO Bronze → Silver(免费);力扣 300 题(含 100 道中等题);首个开源 PR(Gitee 或 GitHub 上的中文文档 / 测试用例贡献是最容易的入口)。

附录 A · 知识点编码总表(按单元,全部编码 + ★ 级)

编码 中文名 ★ 对应 FRQ 题号
CSA-1.1 算法、程序与编译器导论(三类错误) ★ 隐性
CSA-1.2 变量与数据类型(基本类型 vs 引用类型) ★ 隐性
CSA-1.3 表达式与输出(整数除法、取余、优先级) ★ 全部
CSA-1.4 赋值语句与输入 ★ 全部
CSA-1.5 类型转换与取值范围(casting、溢出) ★★ Q1、Q3
CSA-1.6 复合赋值运算符 ★ 全部
CSA-1.7 API 与库(Quick Reference 的使用) ★ 全部
CSA-1.8 用注释写文档(前置 / 后置条件) ★ 全部(读题)
CSA-1.9 方法签名与重载 ★ Q1、Q2
CSA-1.10 调用类方法(静态方法) ★ Q1
CSA-1.11 Math 类与区间随机整数 ★★ Q1
CSA-1.12 对象是类的实例 ★ Q2
CSA-1.13 对象创建与存储(new、引用、null) ★★ Q2、Q3
CSA-1.14 调用实例方法(NullPointerException) ★★ Q3
CSA-1.15 字符串处理(不可变、equals vs ==) ★★ Q1、Q3
CSA-2.1 带选择与重复的算法 ★ Q1
CSA-2.2 布尔表达式 ★ Q1
CSA-2.3 if 语句与 if–else ★ Q1
CSA-2.4 嵌套 if 与 if–else if–else 链 ★★ Q1
CSA-2.5 复合布尔表达式与短路求值 ★★ Q1、Q3
CSA-2.6 比较布尔表达式(德摩根律) ★★ 选择题
CSA-2.7 while 循环 ★ Q1
CSA-2.8 for 循环 ★ 全部
CSA-2.9 实现选择与迭代算法(标准算法) ★★ Q1、Q3、Q4
CSA-2.10 实现字符串算法 ★★ Q1
CSA-2.11 嵌套迭代 ★★★ Q4
CSA-2.12 非形式化运行时间分析 ★★ 选择题
CSA-3.1 抽象与程序设计 ★ Q2
CSA-3.2 程序设计的影响 ★ 选择题
CSA-3.3 类的结构与封装 ★ Q2
CSA-3.4 构造器(含重载) ★★ Q2
CSA-3.5 写方法(访问器 / 修改器) ★★ Q2、Q3、Q4
CSA-3.6 传递与返回对象引用 ★★★ Q2、Q3
CSA-3.7 类变量与类方法(static) ★★ 选择题
CSA-3.8 作用域与访问(遮蔽) ★★ Q2
CSA-3.9 this 关键字 ★★ Q2
CSA-4.1 数据收集的伦理与社会议题 ★ 选择题
CSA-4.2 使用数据集导论 ★ 选择题
CSA-4.3 数组的创建与访问 ★ Q4
CSA-4.4 数组遍历(for-each 的限制) ★★ Q4
CSA-4.5 实现数组算法 ★★ Q4
CSA-4.6 使用文本文件(File / Scanner) ★ 选择题
CSA-4.7 包装类与自动装箱 ★ Q3
CSA-4.8 ArrayList 方法 ★★ Q3
CSA-4.9 ArrayList 遍历(删除跳元素) ★★ Q3
CSA-4.10 实现 ArrayList 算法 ★★★ Q3
CSA-4.11 二维数组的创建与访问 ★★ Q4
CSA-4.12 二维数组遍历(行优先 / 列优先) ★★ Q4
CSA-4.13 实现二维数组算法 ★★★ Q4
CSA-4.14 查找算法(顺序 / 二分) ★★ 选择题
CSA-4.15 排序算法(选择 / 插入 / 归并) ★★★ 选择题
CSA-4.16 递归(基例、调用栈) ★★★ 选择题
CSA-4.17 递归查找与排序 ★★★ 选择题

标准算法清单(闸门前必须默写并说出复杂度量级)

算法 核心骨架 陷阱
求最值 int max = a[0]; 然后 for (int i = 1; i < a.length; i++) 比较更新 初值不能设 0(全负数时错)
数位分解 while (n > 0) { d = n % 10; n /= 10; } n = 0 时循环不执行,要单独处理
统计 / 过滤 ArrayList 倒序 for (int i = list.size() - 1; i >= 0; i--) 再 remove(i) 正向删除会跳元素
有序插入 找到第一个大于 x 的位置 i,list.add(i, x);找不到就 add(x) 空列表与末尾插入要单独想清
二分查找 mid = (low + high) / 2,比较后 low = mid + 1 或 high = mid - 1 写成 low = mid 会死循环
选择排序 每趟选最小换到前面 考"第 k 趟后数组长什么样"
插入排序 把第 i 个元素向左插入有序区 与选择排序的中间状态容易混
归并排序 递归分半 → merge 两个有序段 考递归深度与合并过程
二维遍历 外层行 r、内层列 c;列优先时外层是列 行列反、a[0].length 当成行数
递归追踪 先写基例返回值,再逐层回代 缺基例 = StackOverflowError

附录 B · 官方真题与样题清单(可得年份、题型、用途分配)

来源:AP Central 的 past-exam-questions 页(/courses/ap-computer-science-a/exam/past-exam-questions),提供最近多年的 FRQ + scoring guidelines + 学生样卷 + 分数分布,全部免费、【直】。选择题官方不公开——只有 CED 附录里的样题和 AP Classroom(对自学者基本关闭)。具体可得年份以页面为准(未核实),第 1 周下载时把实际拿到的年份填进下表。

用途 题源 分配规则 注意
Unit 3 训练 历年 Q2(Class Design) 最早的 3 年 旧考纲的 Q2 结构与新版一致,可直接用
Unit 4B 训练 历年 Q3(ArrayList / 对象列表) 最早的 3 年 若题目围绕继承层次,剔除
Unit 4C 训练 历年 Q4(2D Array) 最早的 3 年 可直接用
冲刺 W1–W2 分题型专练 四类各 4 套 中间年份 每题限时 20 分钟,对照评分标准逐点对分
3 月全真 #1 完整一套(最近第 3 年) 保留不提前做 FRQ 用真题,MCQ 用 CED 样题 + 平台题库拼成 42 题
4 月全真 #2 完整一套(最近第 2 年) 保留不提前做 同上
4 月全真 #3 按新考纲的那一套(若 2026 年 5 月首考的 FRQ 已公布;是否公布未核实),否则用最近一年 保留到最后 这是决定"考不考"的那一场

MCQ 题源(官方不公开真题,只能拼)

来源 数量 可达性 说明
CED 附录样题 CED 内提供 【直】 唯一的官方 MCQ,风格最准,留给模考
本平台题库 按知识点编码组织 【直】 微关与单元闸门的主力
新考纲纸质题库(如 Barron's 新版) 每单元 30–60 题 【付】 单元训练用;与 CED 冲突时以 CED 为准
CSAwesome / CodeHS 章末题 交互 未核实 能打开就用,作日常练习
AI 生成的变式题 不限 【直】 只用于日常练习(L3),不得用于毕业模考

附录 C · 术语表(中英对照)

中文 英文 备注
算法 algorithm 有限步骤的解决方案
编译错误 / 运行错误 / 逻辑错误 syntax error / runtime error / logic error 逻辑错误程序能跑但结果不对
基本类型 / 引用类型 primitive type / reference type int、double、boolean 是基本类型
整数除法 integer division 向零截断
取余 modulus 符号跟被除数
强制类型转换 casting (int) 是截断
溢出 overflow 超出 int 范围会环绕
复合赋值运算符 compound assignment operator +=、-= 等
方法签名 method signature 方法名 + 参数列表
重载 overloading 同名不同参数列表
前置条件 / 后置条件 precondition / postcondition FRQ 的免费信息
实例 / 对象 instance / object 类是蓝图
实例化 instantiation new
空引用 null 对它调方法抛 NullPointerException
不可变 immutable String 是不可变的
短路求值 short-circuit evaluation && 左假则不算右
德摩根律 De Morgan's laws 取反后与或互换
死循环 infinite loop 更新语句缺失或条件永真
嵌套迭代 nested iteration 内层次数可依赖外层
非形式化运行时间分析 informal run-time analysis 数语句执行次数
封装 encapsulation 字段私有、方法公开
构造器 constructor 与类同名、无返回类型
访问器 / 修改器 accessor / mutator getter / setter
类变量 / 类方法 class variable / static method static 方法无 this
遮蔽 shadowing 局部名盖住字段名
数组 array 长度固定,length 是属性
增强 for 循环 enhanced for loop(for-each) 不能按索引、不能改基本类型元素
包装类 wrapper class Integer、Double
自动装箱 / 拆箱 autoboxing / unboxing ArrayList 存对象
行优先顺序 row-major order 外层行、内层列
顺序查找 / 二分查找 sequential search / binary search 二分要求有序
选择排序 / 插入排序 / 归并排序 selection sort / insertion sort / merge sort 考中间状态
递归 / 基例 recursion / base case 缺基例会栈溢出
调用栈 call stack 递归追踪用调用栈表
采分点 scoring point / canonical solution FRQ 按可见代码动作给分

附录 D · 版本与核验记录

项目 内容 核验状态
大纲版本 2026-09-05 —
考纲版本 2025-26 修订版 CED(Effective Fall 2025,4 单元框架,2026 年 5 月首考,2026-27 沿用) 2026-08 核对(源包)
考试形式 全数字化 Bluebook;MCQ 42 题 / 90 分钟 / 55%;FRQ 4 题 / 90 分钟 / 45%;Q1 7 分、Q2 7 分、Q3 5 分、Q4 6 分,共 25 分 2026-08 核对(源包)
单元占比 U1 15–25%、U2 25–35%、U3 10–18%、U4 30–40% 与 AP 大纲原节一致
5 分率 约 25%(历年 23–27%) 近似值;以官方当年 score distribution 为准
2027 考试日 两周考期 5 月 3–7 日、10–14 日;本科目官网列 2027 年 5 月 12 日(周三)Session 2 以官网为准
大陆报名窗口 2026 考季 10-17 开放、10-24 缴费、11-14 关闭;2027 考季窗口、费用、科目清单未核实 须 9–10 月盯官网
考试费 美国境内 $98/科(2026);境外往年标价 $128/科(2026-27 未核实);大陆通道费用未核实 未核实
CSAwesome 可达性 本轮抓取返回 403 未核实,开学前核对
CodeHS AP CSA 免费自学版 存在性与免费范围 未核实,开学前核对
Fiveable AP CSA 是否已更新到 4 单元 — 未核实,开学前核对
Practice-It(UW) 可用性与题目组织 未核实,开学前核对
JDK / IDE 的国内镜像具体路径 清华 TUNA、华为云、阿里云开源镜像站 未核实,开学前核对
官方 AP CSA Labs 新版清单 是否随 4 单元 CED 更新 未核实,开学前核对
Bluebook 家庭端在大陆的加载速度 — 未核实(考点侧可用)
USACO 注册年龄与账号要求 usaco.org 未核实(源包标可达性未核实)
历年 FRQ 可得年份 AP Central past-exam-questions 页 未核实,第 1 周下载后填入附录 B
大学学分兑换政策 各校 AP credit policy 未核实
年检 每年 8 月按 _RESOURCES.md 附录 B 的可达性表复核,被封或下线的资源换成表内替代 —