序言

记得刚开始接触CS(是 Computer science 不是 Counter-Strike)的时候,就发现它与我们平常意义上学的学科如数学、物理上有一定的差距。学习计算机就像是进入了一个以前从未接触过的世界,这里面的任何东西都让人感到陌生——语言、逻辑……但是,我们不用担心这些。在这份AP CSA的辅导资料里,我将会详细介绍如何学习AP CSA以及如何学好AP CSA。 学好计算机科学有一点特别重要——打好基础。计算机是一个很注重基础的学科,不管是数学基础还是计算机的基本理论都是不可缺少的。所以这份入门资料里会有一定的篇幅叙述需要懂得的基础知识。除了基础知识之外,计算机还需要实操, AP CSA对其十分注重甚至会考察手写代码的内容【真题还特别少】。 这份入门资料主要关注学习计算机的学习方法、准备规划、练习等。 希望大家看完之后能够形成系统的关于Computer Science的认识,形成一套完备的学习方法,轻松考到AP CSA五分。也希望这份入门资料能给大家以后的计算机学习打下一个良好的基础,帮助到很多人,也算是满足我的一个小小的梦想啦! System.out.println (“Hello World”);

学科介绍

AP计算机科学A考试(AP Computer Science A,简称AP CSA)是一场考察考生逻辑思维能力和计算机语言掌握能力的考试。考生需要以JAVA语言为基础,运用面向对象型编程和计算机编程语言及其逻辑的知识来解决问题。考试时长三个小时,分为以下两个部分: Section I:Multiple Choice[1 hour and 30 minutes for 40 multiple-choice questions] Section 11:Free-Response[1 hour and 30 minutes for 4 problems involving extended reasoning]

考试常见题型

^[AP CSA Study guide by TestDaily]

根据对AP Course Description的选择题样题分析可以得出:

Section 1有以下几种题型: 1.对程序运行效果的分析(比如哪几个可以给出这个答案、这段程序会输出什么、运行了程序之后variable会变为什么) 2.错误分析和改正(题目原意是如此,然后接着下面函数哪个能达到目的、为什么这段程序不能达到目标,怎么才可以最终达到目标) 3.面向对象程序设计(主要是考如何把生活中的事情抽象成计算机的方式来描述) 4.程序运行效率、代码的最佳位置等其他题

Section 2 主要是大题为主,主要考察程序设计能力

来自 Collegeboard 官方AP CSA考试指南

AP CSP

可能大家会好奇为什么这里面没有AP Computer Science Principle的东西。AP Computer Science Principle这个名字看起来很高大上,实际上它的难度是小于AP CSA的。同时,如果大家想要报考AP CSP需要在学校里上这门课,因为这门课最后的分数是要拿一部分平时成绩来计算的。因为这个原因,这份资料里不会讲解AP CSP的内容,有兴趣的童鞋可以自学一下,总的来说还是能提升一些对于计算机的基本了解的【真的很基本!】以下是AP CSP的大纲:

  • Assignment, Display, and Input
  • Arithmetic Operators and Numeric Procedures
  • Relational and Boolean Operators
  • Selection
  • Iteration
  • List Operations
  • Procedures
  • Robot

如果想要了解一下AP CSP的话,大家可以看一下5分制胜的教材【Google上能搜到】讲解的也比较全面!鉴于篇幅原因,后文就不再提及AP CSP了!

学习方法

没有接触过计算机的学生也许会觉得上面的知识点很高深。我学计算机也有弄不清楚语句为什么这样写,看不懂程序意思的阶段。但是相信学过计算机的同学,看上述大纲的内容也不会觉得很难。接下来我会分学习、练习和复习三个部分分别介绍方法,最后给大家一些比较好的学习资源。

学习

如果大家觉得自己时间还比较充裕(离AP考试还有1年左右的时间并且自己也想在计算机领域上有所建树)郝斌老师的C语言视频会是很好的资源(详情见考试资料)。这个视频设计了编程所涉及到的一些基本知识(对于AP CSA足够了)以及C语言的一些应用方法。就我个人在看这个视频的时候是记了很多笔记的,因为相对来说它的信息量还是非常大的。 虽然说C语言不是AP CSA考核的内容,但是看完郝斌老师讲的视频能让你对编程形成一个较为良好的认知,让你形成一套比较完备的体系。

课本其实对于AP CSA这门课不算太重要,我个人觉得使用英文教辅中的巴朗AP CSA就可以了。巴郎讲解的也比较简单,深入浅出并且每一章也配有难度适当的练习题,很推荐大家阅读!

下面详细给大家介绍一下巴郎这本教材:

Baron Textbook

首先,巴郎每一章的开头都会有一个每一章的关键词,抓住这些关键词可以很好地把握整一章的内容。建议大家先阅读这些内容,再接着读后面的内容!

巴郎章节关键词

在阅读章内的内容时,巴郎的重点也非常清楚(就是小标题)。最重要的时巴郎会配有详细的代码例子来讲解,在看这些例子的时候我们不能只局限在看懂代码。我们一定要自己去复现代码。所以我建议大家一定要去手敲一遍(如果时考试前最好手写代码),这样能加深对代码的理解。

巴郎章节内容

看完每一章的内容之后,章后练习题大家一定要认真完成。如果是学习计算机的新手,可能一开始直接硬做这些题目以会有一些困难,所以我建议大家按照记得以下的方法(大佬请跳过):

1、在遇到复杂的看不懂的代码的时候

  • 把每个变量的初始值写到纸上
  • 把没执行一遍循环或其他操作之后的变量数值记在纸上
  • 查看最后结果

遇到类似循环、递归这种难看懂的代码的时候,大家一定要多动纸笔!

2、记得一些基本的原则

  • 初始化变量后内存指向
  • 继承、多态调用方法的原则

另外需要注意的就是,做巴朗练习题的时候如果有错题一定要标注出来!标注出来!标注出来!这样可以方便我们在之后复习的时候能够更好的回顾知识点!

同时大家需要注意一下,在看巴朗的时候看到以下几个部分可以跳过,因为现在这些已经不是考试内容了:

一、GirdWorld Case Study 二、instanceOf这个操作符以前在标准答案中出现过,现在Course Description中的描述是not tested in the exam but potentially relevant/useful,在以后写多态的时候可以用这个去避免ClassCastException,但并不强制要求掌握。 三、三个labs(The Magpie Lab,The Elevens Lab,The Picture Lab),现在的描述是optional and are not tested on the exam.

当然除了巴郎以及我提到的郝斌老师的视频之外,还有一些其它的优质资源。这些我都已经放在后文的学习资料里了,大家可以去康康!

复习

复习的时候不用再重新看一遍巴郎了,比较浪费时间,性价比低,可以去下载各个机构出的AP CSA的复习资料(如TestDaily的教材,我们接下来以这本书为例)。这种资料一般都比较精简,针对考点下手。如果感觉第一次学习的时候有没有弄懂的概念(比如说面向对象,多态继承等)都可以到这本书里面看一下!(说实话,如果大家离学习AP CSA的时间过了很久,建议大家还是在看一下这类资料;相信她一定能激活你沉睡的脑细胞!) 同时,我们在做巴朗的时候标注的错题也可以拿来再炒一遍豆子。

最好的投资就是投资自己

TestDaily教材:

TestDaily AP CS 内容

TestDaily的教材就相对来说比较简单了,但是还是有重点分明的。每一个序号都是一个小重点,把握好这些就可以把握住考试的主要内容了。

TestDaily AP CS 测试样题

每一章之后都会有一个TestDaily官方做的Practice,大家可以做一下检测一下前面学习的水平! 答案在这里:

https://shop1257295.youzan.com/v2/category/1isl74e1q?spm=m562599058648076288.autoreply&sf=qq_sm&is_share=1

第三轮复习就主要是以刷真题为主查漏补缺。真题一般都可以在翰林学院或者TestDaily上能够找到。找到真题以后不要盲目就直接开刷,最重要的还是限时练习。大家可以找一个安静的,可以一个人待的地方开始计时练习。这种练习在考试的时候是非常重要的!【详细参见下面的练习板块】

练习

想必大家也注意到了,我在前面反复强调了“实操”与“练习”的重要性。只学习理论知识而不进行实际操作是无效的,尤其是对于计算机科学。很多时候看着觉得理所应当,但自己动手根本就写不出来。在学习过程中一定注意要把例子中的代码手打一遍,这样能形成对程序更加深刻的认知,保证自己是真的学会了。同时最好能对着CB给的大纲学习,这样才能够更好的把握考察的重点,跟进考纲,保证学的都是重点,不会把精力放在不重要的地方。当初我考前把很多Java的异常现象专门背下来,可是事实证明根本没有这个必要。 说到实操,最开始非常重要的就是安装软件!而这也是难道了一些想学java的人的第一步,因为软件真的难装!!!大家可以到Oracle(也就是那个收购java的公司)的官网上,从网站顶部的搜索框搜索java,然后就可以跳转到java安装的界面!

Java 下载界面

这时候选择download选择对应的系统就可以安装了! 为了避免重复造轮子,大家可以参考这个网站完成java环境变量的配置https://www.cnblogs.com/ssrs-wanghao/articles/8994856.html 配置完环境变量之后,我们就可以安装Eclipse了(不要问我为什么要装这个奇奇怪怪的软件,因为你不会想知道用cmd编译java然后运行的感觉)。大家可以参考考试资料第4项看第一个B站视频里如何安装Eclipse!

安装完软件,我们就来说说怎么练习。练习当然也不是一味的死练,练到把代码都能背下来了。这样肯定是不对的(虽然说重复写相当重要)。 我们首先该做的是要理解计算机执行的逻辑,明白每一条语句为什么要出现在这个地方,如果它不出现在这个地方程序的结果会怎么样。对于Java来说,想要一下就明白程序是什么意思,我们首先需要牢记一些Java的基本类以及一些基本的方法(比如说Integer类,String类)。掌握类之后,我们还要熟练掌握三大结构——顺序,判断,循环(类比起来看,类就是单词,结构就是句子)。掌握了“单词”和“句子”之后,练习就没有什么太大问题了。 但既然把这一段放在这里,当然就是(暗示)意味着有些题是需要实操的。对于刚入门的同学来说,即使是真的熟练掌握了那些类和结构,还是可能出现无法理解计算机逻辑的情况,所以把代码认真的敲下来就非常有必要了!不多说,相信大家懂得! 这些敲下来的代码,大家一定要好好保留。在差不多最后一个月的复习时候,这些代码是非常重要的。我建议大家可以去重新看一下课本上的示例程序以及自己敲下来的代码并且再复习一遍一些基本类的方法(虽然考试会给表格告诉你有什么基础类以及什么方法,但自己记下来可以提升做题速度以及准确性)。

哭泣

考试资料

学习资料

  1. Fenby

这个网站提供免费的学习信息技术的资源。里面提供了各种编程语言的学习资源,而且这个网站不需要VPN!比某度理想得多。大家可以在里面找一下关于Java的学习资源来看! 大家在看视频的时候一定不要走马观花式的看,看的时候要用笔记本记录下来重点。根据我个人的经验,一般第二天再看的时候,大家最后把之前学过的东西都看一遍。每天重复这样的炒豆子过程,我们就可以牢记学过的知识点了!

  1. CB官网

CB官网是有提供AP CSA专门的考试大纲的,在开始学AP CSA之前,大家可以去上面下载 AP CSA 的 course description,里面有课程大纲、考试要求还有“Big idea”。大家可以在看完课本之后“返璞归真”,把握CB的重点。 同时CB的 course description 的结尾处会附赠一些 AP CSA 式的题目,大家可以做以下这些题,把握一下CB的命题思路。

B站

https://www.bilibili.com/video/av45552592?from=search&seid=10290116579292399246

B站上的这个视频讲得非常清楚,如果觉得只看书来学习 AP CSA 有一定的困难,可以去看一下这个网站上的视频(有兴趣的可以都看一下,没那么大兴趣的话就专门挑考试内容来看就可以了!)。这个视频主要讲解了一些Java的基础内容,看完之后学习课本的时候就会轻松很多!

https://www.bilibili.com/video/av8074534?from=search&seid=12941751045823955839

另外一个就是郝斌的C语言视频了,里面详细了讲解了从数据类型、三大程序结构(顺序、判断、循环)等内容。但是视频个数比较多,单个时间也比较长,所以如果不是以后要学CS的学生其实就没有必要花很多时间来看了!

复习资料

TestDaily AP CSA 复习资料 这本之前已经介绍过了,没有很深厚编程基础的人一定要去看一下啊!

TestDaily APCS 教辅

APcompSci

如果做完巴朗上的题还“饥渴难耐”的话,大家可以上一下这个网站。这也是一个比较好的专门用于学习AP CSA的网站:

APcompSci 网站简介

网站上面有关于AP CSA的知识点的讲解——基础、变量、字符串、条件语句、循环、数组、List和ArrayList等。 这个网站最好的就是它有自己出一些关于AP CSA的题目(没错,又是题目!),而且种类还非常多,如:4套多项选择,2013-2019的主观题…… 以上这个网站可以说是可以蛮美配合学习复习使用啦!

APcompSci 样题

推荐大家去试一下!

考前准备

因为AP CSA的没有什么计算的内容,所以计算器这些东西都是不存在的(哈哈哈) 需要带的东西很简单:一个脑子,一只飞快的可以爆发手速的风速写代码的手!

感谢大家看到了这里,相信看完的同学都是AP CSA妥妥的5分。还是要重复一下一句老话:师傅领进门,修行靠个人!学习终究还是自己的一件事请!

赞