离五月的日子越近,就越想要打醒一月报名时信心膨胀的自己。随着AP考试在国内的普及率越来越高,越来越多的出国党也开始不仅把眼光放在托福和SAT的考试上,而是挑战更高的难度的AP。今天,笔者将为大家带来AP备考系列最后一篇:Computer Science A考试分享。
为了帮助AP考生备考,TD近期推出了《考前1月AP复习救命稻草》系列推文,这是本系列的11号文章 — 关于AP CS A那些事儿。
与大多数其他AP考试类似,AP CS A分为两个部分:
Multiple Choice Question [1 hour and 30 minutes for 40 multiple-choice questions]
Free-Response Question [1 hour and 30 minutes for 4 problems involving extended reasoning]
Section I的选择题就不多说,Section II的FRQ一般是让我们补充完整类的方法。
在对AP Course Description的Section I样题分析可以得出如下常见技能点考察:
1. 对程序运行效果的分析(比如哪几个可以给出这个答案、这段程序会输出什么、运行了程序之后variable会变为什么,题目1、2、3、4、5、8、9、10、13、14、15、16、18、19、20、24考察此项技能)
2. 错误分析和改正(题目原意是如此,然后接着下面函数哪个能达到目的、为什么这段程序不能达到目标,如何达到目标,题目11、12、23、25考察此项技能)
3. 面向对象程序设计(主要是考如何把事物抽象成计算机的方式来描述,题目6、7、22考察此项技能)
4. 程序运行效率、代码的最佳位置等其他题(题目17、21考察此项技能)
AP编程所用的语言是Java,一门经典的面向对象编程语言,AP主要要求我们掌握如何才能用对象的思维抽象问题,如把一个棋盘抽象成二维数组;二是如何才能使用算法用抽象的内容来进行各种操作(题目可能会给出抽象好的内容,如变量定义,让我们完善一个类的方法)。 以下的考试内容供大家参照初步了解AP计算机科学A的具体要求:
I. Object-Oriented Program Design 面向对象编程
1. 我们需要明白如何用计算机的方式来看待问题
2. 需要明白怎么把现实生活中的数据用计算机的方式描述
3. 我们要知道类和接口的特点以及两种关系(“is-a”是继承关系,“has-a”是组成关系)
4. 明白code reuse和code overload这两种易混淆的概念
5. 需要明白数据呈现形式和算法实现形式
6. 需要明白如何把操作分解,简单地说就是把一个操作变为很多子操作
II. Program Implementation
A. 程序的实现方法(这里面的内容巴朗讲得很清楚,还有生动形象的例子)
1.Top-down 从上到下
2. Bottom-up 从下到上
3. Object-oriented 面向对象式
4. Encapsulation and information hiding 把一定对象封包和隐藏信息
5. Procedural abstraction 过程抽象
B. 程序结构
1.知道primitive types和reference types的特点和区别
2.知道常量、变量、方法及其参数、类、接口的定义和应用(这个及其重要,例如要学会如何使用extend、implement来创建子类和实现接口)
3.知道如何使用System.out.print、System.out.println输出数据(或其他有特殊说明的输出方式)
4.学会如何调用方法、如何顺序执行和条件执行、循环遍历、递归
5.知道数字的表达式、字符串表达式和布尔表达式的计算
C. AP要求的Java类(String等里面的方法和参数需要记忆,考过很多次)
A. 测试
1. test case的开发(包括boundary case,巴朗有详细说明测试数据的选取)
2. 单元测试
3. 整体测试
B. 调试
1. 要知道不同分类的错误,compile-time error,run-time error和logic error
2. 错误的辨别和改正
3. 如何使用调试器、添加输出语句或手动跟踪代码
C. 运行出的exceptions
D. 程序更正
1. 前提条件和后来条件(就是执行前需要什么,执行后会是什么)
2. 断言
E. 算法分析
1. 要会分析出语句执行次数
2. 要会大体比较运行的时间(一般双方所用的时间和效率会差距很大)
F. 要学会用不同进制表示一个非负数,还要知道整数的最大最小限制
integer.MAX_VALUE和integer.MIN_VALUE,知道计算机储存数的方式,如整数的最高位是用来判断正负的。这里需要注意:不是最高位从0变为1就变成相反数了 。
IV. 标准数据结构(如何把题目的概念抽象成数据等)
A. 前面说的primitive data types如int, boolean, double
B. 字符串
C. 类
D. List
E. 一维和二维数组
A. 数据结构操作,如截断、添加、删除
B. 顺序搜索和二叉树搜索
如果你的时间充裕而且有一定的计算机编程基础知识,推荐用巴朗AP 计算机科学A来做第一次阅读和做练习,它的优点在于把概念写得很完整很详细。上面的考纲的内容巴朗里都基本都有详细介绍。里面的题目也都很不错,选择题和大题都很适合练习和模考,引进版的巴朗还配有中英目录翻译,对专有名词的理解还是很有帮助的。
不过其中的内容有点超纲,而且介绍的内容过于复杂(例如第一章出现的package基本都不考),不适合复习的时候使用。内容的排序也要求读者有一定的计算机编程基础,不然很容易被绕晕,也不太适合新手入门。
如果你觉得自己理解不了巴朗的英文描述和比较有挑战性的编排体系,或者是已经到了不足一个月的紧要关头还觉得自己有知识空缺,推荐一个专门做计算机教程的公众号:程谱CodeRecipe,里面专门为AP设计的知识树体系,而且语言比较活泼好理解。如果是还没有对AP CS A有一个完整的理解(比如认真读过一遍参考书或者跟着老师上过一遍课),那么可以直接学习整个AP CS A知识树。
如果你只是想要差缺补漏(比如看书做题的时候发现了没有理解的知识点),可以去看程谱的抱佛脚知识树,里面有对知识点的完整梳理而且每一个知识点都链接到教程原文,做得很完善。当然如果用中文教程学AP的话,那么教程括号里的英文单词也是需要掌握的(AP CS A不需要写文章,因此会认即可)。电脑可能看公众号不太方便,也直接登录官网看: https://coderecipe.cn
大家可以把参考书看一遍,之后再来看看这篇文章,过一遍考点分析和知识点梳理,确定内容中没有不会的知识之后就可以开始练题了,如果有不会的知识的话,可以程谱参考手册中直接查理解一下。
对于往年的选择题官网基本没有放出,Course Description里面有一套参考题,推荐大家作为考前训练用,当然也可以做做练手,其他时候考前有时间的话每天一套参考书的选择题来防止知识的遗忘。
对于FRQ问答题,建议大家练习时拿HB铅笔(到时候会要求用铅笔写而不是水笔)和橡皮自己计时完成,一套题大概留出15分钟左右的时间,最后可以重新读一下题和自己的答案试着用参考数据模拟运行一下,看一看结果是不是和参考相同。题目内容优先练2014年以后的年的官方问答题,实在不够再练参考书的。
一开始写出的程序和参考答案不像不要紧,尽量靠近就好了,但参考答案上的算法一般效率都会比较高,而自己写的可能存在一些运行的问题或效率低。(当然高手们练到后期会发现自己写的答案比参考效率还要高,那就另当别论,不过建议考试和练习的时候不要炫技,分数要紧,最好稳扎稳打,不然老师要是看不懂或者自己写错某个步骤就不太好了)
看了那么多内容,你是不是觉得超累。接下来让我们来放轻松,划一划非重点。因为近年来AP计算机科学一直在删减内容,有一些内容已经不要了,做往年卷子时可能会遇到,这些题可以直接跳过:
GridWorld Case Study(在前年的卷子中开始消失,在这之前的卷子每套一般会有一个大题考这个,当时我还问了深圳的老师,得到消息说不考了后就只是尝试着写一写,被换成了三个labs)
instanceOf 这个以前在标准答案中出现过,现在Course Description中的描述是not tested in the exam but potentially relevant/useful三个labs (The Magpie Lab, The Elevens Lab, The Picture Lab,在巴朗的计算机科学的书里面有,但是现在的描述是optional and are not tested on the exam,对于这些labs,只需知道内容和其中面向对象编程概念就好)
AP各科选择题真题打包下载福利(超过10科)
请扫码添加TD客服微信
并发送关键字「AP真题」领取~