離五月的日子越近,就越想要打醒一月報名時信心膨脹的自己。
隨著考試在國內的普及率越來越高,越來越多的出國黨也開始不僅把眼光放在托福和SAT的考試上,而是挑戰更高的難度的。
今天,小編將為大家帶來Computer Science A考試分享
考試介紹
與大多數其他考試類似, CS A分為兩個部分:
Section I:
Multiple Choice Question [1 hour and 30 minutes for 40 multiple-choice questions]
Section II:
Free-Response Question [1 hour and 30 minutes for 4 problems involving extended reasoning]
Section I的選擇題就不多說,Section II的FRQ一般是讓我們補充完整類的方法。
技能點分析
在對 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考察此項技能)
考點分析
編程所用的語言是Java,一門經典的面向對象編程語言,主要要求我們掌握如何才能用對象的思維抽象問題,如把一個棋盤抽象成二維數組;二是如何才能使用算法用抽象的內容來進行各種操作(題目可能會給出抽象好的內容,如變量定義,讓我們完善一個類的方法)。
以下的考試內容供大家參照初步了解計算機科學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等里面的方法和參數需要記憶,考過很多次)
III. 程序分析
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. 一維和二維數組
V. 標準操作和算法
A. 數據結構操作,如截斷、添加、刪除
B. 順序搜索和二叉樹搜索
推薦參考書
巴朗AP 計算機科學A
如果你的時間充裕而且有一定的計算機編程基礎知識,推薦用巴朗AP 計算機科學A來做第一次閱讀和做練習,它的優點在于把概念寫得很完整很詳細。
上面的考綱的內容巴朗里都基本都有詳細介紹。
里面的題目也都很不錯,選擇題和大題都很適合練習和模考,引進版的巴朗還配有中英目錄翻譯,對專有名詞的理解還是很有幫助的。
不過其中的內容有點超綱,而且介紹的內容過于復雜(例如第一章出現的package基本都不考),不適合復習的時候使用。
內容的排序也要求讀者有一定的計算機編程基礎,不然很容易被繞暈,也不太適合新手入門。
程譜CodeRecipe
如果你覺得自己理解不了巴朗的英文描述和比較有挑戰性的編排體系,或者是已經到了不足一個月的緊要關頭還覺得自己有知識空缺,推薦一個專門做計算機教程的公眾號:程譜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,只需知道內容和其中面向對象編程概念就好)更多翰林數學國際課程介紹

? 2026. All Rights Reserved. 滬ICP備2023009024號-1