一句话定位: 用 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 风格注释),所以时间应该几乎全部投在键盘和草稿纸上。
自学者特有的三个失败点(来自评分行):
- 只看代码不上机。 视频与教材让人产生"这不是很简单吗"的错觉,而 FRQ 要求你在没有编译器的情况下写出语法正确的 Java。对策写进本大纲的硬规则:Unit 1 起每个知识点必须有"按规格写小段代码"的题,Unit 3 起每周至少手写 1 道 FRQ。
- FRQ 手写 Java 的语法与边界错误。 分号、大括号、返回类型、
length与length()、空列表、单元素、索引边界。IDE 会替你挡掉一半,Bluebook 不会。 - 不熟 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 附录与样题 | 免费 | 【直】(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 页 | 免费 | 【直】 | 无需账号 | 可得年份以页面为准(未核实) | 见附录 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 一次。
本单元产出
- 一个
Unit1Playground.java,包含至少 12 个main里可运行的小实验(每个实验一行注释写"我以为输出是 X,实际是 Y"),推到 Gitee 仓库。 - 一张 A4 手写的 Quick Reference 默写卡(String / Math / Integer / Double 全部方法签名,含参数与返回类型),拍照存档案。
- 一份"引用 vs 值"的手绘图:两个引用变量指向同一对象、其中一个被重新赋值后的内存示意。
微关示例题(≥ 3 道,附答案要点)
- 求值。
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 参与时是拼接。 - 字符串。
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 是拼接。 - 引用与相等。
String x = "hi"; String y = new String("hi"); System.out.println(x == y); System.out.println(x.equals(y));输出?为什么? 答案要点:false与true。==比较的是引用(地址),new一定造出新对象;equals比较内容。考试里凡是比较字符串一律用equals。 - 溢出与转换。
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 到 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 分钟)。
本单元产出
StandardAlgorithms.java:12 个标准算法(求和、计数、最值、平均、判质数、数位分解、反转数字、回文判断、统计子串、最长连续段、打印三角形、九九表)各一个方法 + 一个main跑边界用例(0、1、负数、空串)。- 一本追踪表活页本:至少 60 张手画变量跟踪表,按知识点编号归档。
- 一段 2 分钟讲解录音:for 循环的执行顺序。
微关示例题
- 嵌套循环计数。 下面代码输出什么?答案要点:
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 次。必须列表统计,不许心算。 - 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 行变量表。 - 短路求值。
if (s != null && s.length() > 0)与if (s.length() > 0 && s != null)在s为null时行为有何不同? 答案要点: 前者安全(&&左边为假就不再求右边);后者立刻抛 NullPointerException。判空必须放在最左。 - 德摩根律。 写出
!(a > 3 && b < 5)的等价表达式(不用!)。 答案要点:a <= 3 || b >= 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(...),观察调用者看到什么。
本单元产出
classes/目录下 5 个完整类 + 各自的测试main,推到 Gitee。- 3 份手写 FRQ Q2 答卷(照片或扫描),每份附自评表:按官方 7 分制逐点画勾(字段私有 1 / 构造器正确初始化 1 / 每个方法头与规格一致 1 / 状态维护正确 2 / 返回值与类型正确 1 / 整体按规格 1,采分点为示意)。
- 一页"引用语义"总结:值传递与引用传递各画一张图。
微关示例题
- 找错。 下面构造器错在哪?后果是什么?答案要点: 参数遮蔽了字段,
public class Box { private int size; public Box(int size) { size = size; } }size = size是参数赋给自己,字段保持默认值 0。应写this.size = size;。 - 引用语义。 已知
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)只改了拷贝指向哪里,外面看不到。 - static。 为什么下面代码编译不过?改法是什么?答案要点:
public class Counter { private int count; public static void reset() { count = 0; } }static方法没有this,不能访问实例变量count。要么把reset改成实例方法,要么把count改成static(但那样所有对象共享一个计数)。 - 按规格写类。 规格:写一个
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。
本单元产出
collections/目录:数组算法 8 个、ArrayList 算法 6 个、二维数组算法 6 个、查找 2 个、排序 3 个、递归 5 个,每个方法配 3 组边界测试(空、单元素、极值)。- 12 份手写 FRQ 答卷(Q3 与 Q4 各 6 份)+ 12 份按官方评分标准的自评表。
- 一份"调用栈表"手稿集:至少 15 个递归方法的展开与回收过程。
- 600 字数据伦理短文(对应 CSA-4.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--。 - 二维数组。
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]; }——外层循环变量是行下标。 - 二分查找次数。 一个已排序数组有 16 个元素,二分查找最坏情况下比较多少次?为什么? 答案要点: 5 次。每次把候选区间减半:16 → 8 → 4 → 2 → 1,共 5 步;一般地最坏次数是使 2^k > n 的最小 k。
- 递归追踪。 下面方法
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, 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 趟后长什么样"。 - 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 写法铁律(每次闸门都检查)
- 先读完整题干与已给代码;
- 圈出 precondition / postcondition——它们是免费信息,直接决定循环范围与是否要判空;
- 用注释写 3 行伪代码;
- 再写 Java,方法头照抄题目,不自作主张改签名;
- 写完人肉跑一组小数据:空列表 / 单元素 / 边界值各一次;
- 最后扫一遍"有没有用到 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 条)
- 2025-26 修订版 CED 把继承 / 多态 / 接口从考试中删除了,但市面上绝大多数教材、网课与 2025 年以前的真题仍按旧 10 单元编排。 —— 会踩是因为你买的书、搜到的题、B 站的课都不会主动告诉你"这一章不考了",你可能花三周学
extends与super,或者用旧真题模考时被继承题拉低分数产生错误的挫败感。对策:把源包里的"旧 → 新对照表"打印贴在书桌上;任何一道题只要出现extends、implements、super、接口,立刻跳过并记进"已删除清单";买书前先确认封面写的是 4 单元 / 2025-26 新考纲。 - 考场只能用 Java Quick Reference 上列出的库方法,
charAt、contains、Arrays.sort、Collections、StringBuilder、toUpperCase全都不在表上。 —— 会踩是因为你平时在 IDE 里写代码,自动补全会把这些方法推到你面前,你甚至不知道自己用了表外方法。对策:Unit 1 起在编辑器里关闭 Java 自动补全(或至少在写 FRQ 时切到纯文本编辑器);每周默写一次 Quick Reference;AI 批改模板里固定加一条"违规检查"。 split、File、Scanner是新版 Quick Reference 才加进来的条目,对应新增的 4.6 文本文件读取。 —— 会踩是因为 2024 年以前的备考资料完全没有这块内容,你会以为自己"学完了 Unit 4",考场遇到读文件的题却没见过hasNext()的写法。对策:以 CED 附录的 Quick Reference 为唯一权威,对照自己手上的教材列出"缺哪几个方法",缺的部分用官方文档补,并在第 19 周专门做一次"读 CSV 求和"的上机。- FRQ 按采分点给分、能拿部分分,空着必然 0 分;但调用了题目禁止的方法或修改了不该改的参数会倒扣。 —— 会踩是因为中国学生的应试习惯是"没把握就不写",同时又容易在慌乱中"多做一点"(顺手排个序、顺手改个参数)。对策:闸门规定任何 FRQ 不得留白,至少写出方法头 + 循环骨架 + return;读题时用符号把"不能使用 / 不能修改"的句子圈出来,写完对照一遍再交。
- Unit 4 占 30–40%、官方约 50 课时,是全课时间的四成,但自学者最常见的排法是把四个单元平均分配。 —— 会踩是因为 Unit 1–2 学得顺、心理上想"多巩固",结果 3 月才开始学递归和排序。对策:周计划里 Unit 4 的 10 周锁死不动;要压缩只能压 Unit 1–2;每次周复盘时看一眼"距离 Unit 4 开始还有几周"。
- FRQ 在 Bluebook 的代码区手打,没有编译器、没有自动补全、不能运行、也不会替你配平大括号。 —— 会踩是因为你在 IDE 里"能写对"的手感是假的:IDE 帮你补了分号、配了括号、标了红线。对策:从 Unit 3 起所有 FRQ 一律在系统自带纯文本编辑器里写,写完再粘进编译器,统计"第一次就编译通过率"并写进档案,目标是冲刺期达到 80% 以上;养成"写一个
{立刻写}、再回中间填内容"的习惯。 - 本课的失败点是"只看代码不上机",但它有一个反面:只刷 LeetCode 不练 FRQ 规格。 —— 会踩是因为力扣有完整的
main与测试用例、能立刻看到红绿,成就感高;而 AP 给你半个类和一段英文规格,要你填一个方法。这两种能力不能互相替代。对策:刷题与手写 FRQ 保持 1 : 1;每道力扣题做完后强制加一步——把题目改写成"AP 风格的方法规格"(含 precondition),再照着规格重写一遍。 - USACO 作为第二外部锚,比赛集中在 12 月、1 月、2 月与 3 月公开赛,与 3 月的全真模考 #1 直接撞档。 —— 会踩是因为竞赛的即时反馈比模考爽,很容易临时改主意去打比赛。对策:只打 12 月与 1 月两场 Bronze,3 月一场无条件放弃保模考;usaco.org 的注册与年龄要求未核实,报名前先确认,并由家长知情。
- JDK 的版本与语法糖会给你一种"能编译就是对的"的错觉,而 AP 只考 Java 的一个保守子集。 —— 会踩是因为
var、switch 表达式、增强instanceof、文本块在 JDK 17 里都能编译通过,IDE 甚至会建议你这么写,考场却不认。对策:装 JDK 17 LTS,在编辑器设置里关闭所有"现代 Java 写法"提示;把 CED 里出现过的语法形式列成一张"允许清单",不在清单上的写法一律不用。 - AP Classroom 的 Personal Progress Check 对 exam-only 学生基本关闭——官方规则是"只有教师布置后才能打开"。 —— 会踩是因为很多备考攻略默认你有 Progress Check 可刷,你拿到 join code 后会花很久去找它们在哪。对策:从一开始就不把它算进题源;MCQ 题源只用 CED 样题 + 平台题库 + 一本新考纲的纸质题库(AP Videos 对自学者可用,可以看,但那是讲解不是题)。
- 大陆 Prometric 社会考生通道"不退费、无补考",而报名(11 月中)在毕业模考(3 月)之前四个月。 —— 会踩是因为你会本能地想"先报了再说",然后在 3 月发现只有 70% 也舍不得弃考,最后拿一个 3 分。对策:把 12 月阶段模考 ≥ 70% 当成硬性报名门槛写进日历;4 月全真 #3 不到 85% 就弃考,报名费是沉没成本,成绩单不是。
- 家里练的 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 的可达性表复核,被封或下线的资源换成表内替代 |
— |