AP计算机科学Computer Science(简称APCS),对于大部分零基础的同学们来说,实在是一门陌生的学科。APCS主要考察Java语言编程。
说到编程,有些同学会瞬间觉得高大上起来,也有些同学脑海中会闪过中关村码农的形象。其实计算机编程,远没有同学们想的那么神秘和复杂,如同机器是手的延生,汽车是腿的延生,而计算机则是人脑的延生。而所谓编程,也就是程序员让计算机按照预先设定的思路去代替人脑处理信息。
从这个角度来说,世界上任何学科和领域的发展都或多或少都离不开计算机的支持,毕竟任何一门学科都是得要用脑的啊!
AP计算机作为基础学科,非常合适那些零基础的同学们,其考试不会涉及太复杂的问题,考试出题都是以简短的代码去解决现实生活中的问题为宗旨。
毫不夸张的说,只要认真学AP计算机,不用进一步学习,就可以立刻用编程来处理生活中或者各学科中的小问题了,特别是一些人脑处理起来特别机械重复的问题。
设想一下,大家在实验室中好不容易测量出原始数据,其他同学们正在埋头苦算的时候,你只要把数据录入计算机,立刻就得出结果,是不是超酷的!
AP 计算机科学全称是AP计算机科学A,由于AP计算机科学AB在2008年之后取消考试了,所以是只有A没有AB的考试,同学们不要和AP微积分混淆。2017年新增了Computer Science Principles计算机原理,更加侧重于抽象的理论知识,而非具体的编程代码,需要提交个人作品,目前大陆还不能考试,实在想考的同学可以选择去香港报名。
下面将从各个角度给同学们分析和总结APCS的相关问题:
一.为什么要学习APCS
1. 实用性高。学完后,立刻可以独立编程解决生活、各个学科中具体问题。
有的同学可能认为,现在软件这么多,直接用现成App就好了。但App再多也很难满足每个人的不同需求,如果自己可以编写一些简单小程序,可以极大的提高效率。
2. 对于非计算机专业的同学来说,可以多了解一门新领域的知识,无需投入太多的时间和精力,是一笔很合算的投资。
3. 对于计算机相关专业的同学来说,可以提前建立自信。
对于计算机专业的学生,在大学里完全零基础学编程是一件很尴尬的事情,因为同学之间的水平差异实在是太大了,少数的计算机天才少年除外,有很多学生高中时就能独立写程序了。大一新生如果没有一定的基础知识,甚至同学之间的聊天都会不知所云。
每年寒暑假,都会有不少美国大一的中国学生,为了提前预习下学期课程,特意回国学习APCS。
二、数学不好可以学计算机吗
数学和计算机虽然都是理科,但是思维方法是截然不同的。
举个例子:某员工的年终奖和当月工资共计5万元,年终奖和当月工资的缴税规则完全不同,请问企业该如何分配才能让员工收益最大。
数学方法:利用不等式推导,求出最优方案。
计算机方法:依次比较年终奖0至5万元,共计5万零1种方案,找出最优解!
数学重点在于研究方法本身,而计算机的重点在于解决实际问题。所以数学好,并不意味着计算机就一定学得好,反之亦然。
三、APCS难度适合我吗
APCS全球满分率接近于25%,在其他AP科目中属于很高的了,仅次于微积分和物理C。对于擅长理科的中国人来说,满分率会比全球平均高出不少。
但具体到每个同学来说,难度差异巨大。一般来说,理科还不错的同学对于APCS都能轻松hold住,觉得是所有AP科目中最简单最不需要花精力的学科。但对于少数特别害怕数字和逻辑推导的同学来说,会觉得特别难。
举个例子,APCS考试中有一种必考题,题型大致如下:x=0,如果x<5满足,一直循环运行“x = x+2”。当x<5不满足时则停止。请问最后x等于多少(答案6)
当然考试中真题肯定要比这个复杂,但对于大部分考生来说都是很简单的逻辑推导,基本都是送分题。
解这种题没有任何技巧,耐心一点慢慢推理即可。但是对于个别同学来说,由于比较害怕数字的逻辑推导,同一种题型稍微变换数字和结构,就无从下手了,自然会觉得很难。不过这样的学生一般艺术、文学造诣都很高。
所以只要不是极端偏科的学生,都可以比较轻松的掌握APCS.
三、APCS课程具体包含那些内容
APCS是一门应用型科学,就像自行车、篮球、羽毛球一样,是基本不需要花精力去记忆知识点的,一旦学会后越用越熟练,考试时自然轻车熟路。
下面是每个章节的具体知识点,仅供学过编程的同学参考。
1. 变量声明和控制语句(if,for,while)
2. 面向对象语言的组成结构(object和class)、重要规则(传值与传引用)
3. 数组、动态数组、二维数组
4. String、Math等系统自带类
5. 继承和多态
6. 递归
7. 搜索和排序(只涉及最简单的方法)
相对于其它AP科目,APCS更注重于考察逻辑思维能力,编程只是一种手段,所以APCS知识点是并不多,需要记忆的就更少了。除了极少数的解题规律和技巧,以及重要的考试秘诀和易丢分点外,几乎没有需要大段记忆的地方,不喜欢背诵的同学的福音!
四、APCS考试时间、形式和5分线
为了避开5月的SAT考试,2018年的APCS考试相对于往年延后了一段时间,在5月15号的下午进行(官网最新确认时间)。12:20考生开始入场,考试分上下2部分。
第一部分,40道选择题,每道选择题5选1,每题1分,答错不扣分,但要注意的是从2016年开始,时间从75分钟增加到90分钟。
第二部分,4道编程题,每道题满分10分。除个别年份有只有一问的编程题,大部分编程题由a、b两小问组成。但要注意的是,这部分从2015年开始取消了每年固定的gridworld编程题。并且从2016年开始,时间从105分钟减少到90分钟。
概括起来,就是考试时长180分钟,卷面满分80分。AP成绩最终还是要转换成5分制的,具体信息如下
3分以上就可以被学校接受,但一般优秀的学校只接受4分甚至5分的成绩。CS属于中国学生传统强项,一般只要认真学,分数都不错。
五、书籍推荐、备考建议
在大陆基本上能很方便的购买的参考书也只有巴郎和普林斯顿了,但是强烈建议只作为字典工具书查阅,而不是作为知识书去学习。
因为如此厚的一本书,竟有大约60%的内容是读了对考试没什么用的。这还不算完,最要命的是当你看到譬如第30页时,会突然涉及后面的知识点,让你详见后面第200页,而第200页又会涉及到前面的知识点,再让你跳回第80页,然后你就抓狂了。
备考建议
如果之前没有过C++或者其它语言的编程经验,APCS并不建议自学。但是如果有的同学条件有限只能自学的话,有如下建议:
1. 自学时间长,不确定性太大,最迟春节后一定要开始。
2. 中文Java书比巴郎靠谱,但是缺点是跟把你当作程序员培养,内容太深,而且跟考试脱节太多,可以作为英文AP书的补充,但依然作为字典书使用。
3. 无需练习模拟题,刷真题足够,但一定要找个师兄师姐帮自己改代码。
编程不同于数学,只要实现题目要求,千万种方法都是可以的。初学者能写出代码已经是很不容易了,还没有发现自身错误的能力。
考完试很多考生都想不通自己是哪里扣分的。而且初学者非常容易养成一些坏习惯,例如重复声明、乱用其它小题变量、序号出错等问题,靠自身纠正几乎不大可能。