AP Computer Science,看完這篇拿不到5分別回來見我 || TD乾貨

喬布斯說,任何人都應該學習編程,因為它教會你如何思考。事實確實是這樣的,很多學習文科或者商科的同學到了美國大學之後一臉問號地發現,計算機竟然是必修課!好尷尬呀。

與此對應的是,AP裡面也會有CS科目。對於大多數人來講,CS還是一張比較陌生的面孔,畢竟我們沉浸在陰陽師和王者榮耀里的時候並不會去思考它們是如何被編寫出來的...那麼如何handle這門看起來神秘莫測的考試呢?我們給你一個關於AP-CS的結構框架和考試指南。

隨著打算出國的學生越來越多,學AP計算機科學的人也越來越多了呢。作為近年來5分率超過20%的科目,計算機科學A備受青睞。其130個Career Areas和48個College Majors成為打敗大多數科目成為考生心愛對象的原因,畢竟現實一點,未來更重要。

作為從小學開始學習計算機、去年參加考試的學生一枚,筆者成功地考(bao)到(dao)五(da)分(tui)。話說今年又新增了AP計算機科學原理(Computer Science Principle),只可惜apchina沒有組織無法參加,不然筆者好想再考一次呢~閑話少說,進入正題,我們這就來借官方的Course Description來明確一下到底會考什麼、如何考,才能合理安排、高效利用時間。

常見考試題型

相信做過計算機科學真題或各種參考書上套題的同學們都有所體會,在此簡單提一下。

Section I: Multiple Choice [1 hour and 30minutes for 40 multiple-choice questions]

Section II: Free-Response [1 hour and 30minutes for 4 problems involving extended reasoning]

根據對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,一門經典的面向對象編程語言,就是書上的Object-Oriented Program Design。

主要要求我們掌握兩大模塊,一是如何才能用對象的思維抽象問題,如把數據抽象成各種變數及數組;二是如何才能使用演算法將抽象的內容(題目可能會給出抽象好的內容,如變數定義)。

以下的內容供大家參照初步了解AP計算機科學A的具體要求。

Object-OrientedProgram Design 面向對象編程

1. 我們需要明白如何用計算機的方式來看待問題

2. 需要明白怎麼把現實生活中的數據用計算機的方式描述

3. 需要知道類和介面的特點以及兩種關係(「is-a」就是inheritance relationship繼承,「has-a」就是composition relationship組成關係)

4. 需要明白code reuse和code overload這兩種易混淆的概念

5. 需要明白數據呈現形式和演算法實現形式

6. 需要明白如何把操作分解,簡單地說就是把一個操作變為很多子操作

ProgramImplementation

程序的實現方法

(這裡面的內容巴朗講得很清楚,還有生動形象的例子)

1. op-down 從上到下

2. Bottom-up 從下到上

3. Object-oriented 面向對象式

4. Encapsulation and information hiding 把一定對象封包和隱藏信息

5. Procedural abstraction 過程抽象

程序結構

1. 知道primitive types和reference types的特點和區別

2. 知道常量、變數、方法及其參數、類、介面的定義和應用(這個及其重要,例如要學會如何使用extend、implement來創建子類和實現介面)

3. 知道如何使用System.out.print、System.out.println輸出數據(或其他有特殊說明的輸出方式)

4. 學會如何調用方法、如何順序執行和條件執行、循環遍歷、遞歸

5. 知道數字的表達式、字元串表達式和布爾表達式的計算

AP要求的Java類(String等裡面的方法和參數需要記憶,考過很多次)

程序分析

測試

1. test case的開發(包括boundary case,巴朗有詳細說明測試數據的選取)

2. 單元測試

3. 整體測試

調試

1. 要知道不同分類的錯誤,compile-time error,run-time error和logic error

2. 要知道錯誤的辨別和改正

3. 要知道如何使用調試器、添加輸出語句或手動跟蹤代碼

運行出的exceptions

程序更正

1. 前提條件和後來條件(就是執行前需要什麼,執行後會是什麼)

2. 斷言

演算法分析

1. 要會分析出語句執行次數

2. 要會大體比較運行的時間(一般雙方所用的時間和效率會差距很大)

要學會用不同進位表示一個非負數,還要知道整數的最大最小限制integer.MAX_VALUE和integer.MIN_VALUE,知道計算機儲存數的方式,如整數的最高位是用來判斷正負的。這裡需要注意:不是最高位從0變為1就變成相反數了。

標準數據結構(如何把題目的概念抽象成數據等)

1. 前面說的primitive data types如int, boolean, double

2. 字元串

3. 類

4. List

5. 一維和二維數組

標準操作和演算法

1. 數據結構操作,如截斷、添加、刪除

2. 順序搜索和二叉樹搜索

計算機在實際應用方面的問題(很少涉及,大家就簡單看看)

1. 系統可靠性

2. 隱私

3. 法律條例和知識產權

4. 計算機使用在社會和道德方面的後果

大家可以把參考書看一遍(如果有空的話做做每章的檢測)以後再來看看Course Description中的考綱看有沒有不會的知識,如果基本沒有就可以開始練題了。

訓練方式

對於往年的選擇題官網基本沒有放出,Course Description裡面有一套參考題,推薦大家作為考前訓練用,當然也可以做做練手,其他時候考前有時間的話每天一套參考書的選擇題來防止知識的遺忘。

對於問答題,推薦大家不要用電腦來寫,一是因為到時候不是機考,二是因為題目主要考察的是計算機思想,裡面的Class很多是沒有給實現的,所以如果不自己實現是沒有辦法運行的,而做題時自己去實現完全沒有必要(考綱說明裡說了學生不需要寫整個程序,只需要了解寫過的部分並且寫或修改程序以改變功能)。

建議大家練習時拿HB鉛筆(到時候會要求用鉛筆寫而不是水筆)和橡皮自己計時完成,一套題大概留出15分鐘左右可以重新讀一下題和自己的答案試著用參考數據模擬運行一下,看一看結果是不是和參考相同。題目內容優先練5~8年的官方問答題,不夠再練參考書的,下面有說現在官方題裡面的不需要掌握的知識點。

一開始寫出的程序和參考答案不像不要緊,但是後面就要慢慢和參考答案靠近,因為參考答案上的演算法一般效率都會比較高,而自己寫的可能存在一些運行的問題或效率低。當然高手們練到後期會發現自己寫的答案比參考效率還要高,那就另當別論,畢竟參考答案要給大多數學生看,建議考試和練習的時候不要炫技,分數要緊,穩紮穩打即可,不然老師要是看不懂或者自己寫錯某個步驟就不太好了。

推薦參考書

巴朗AP計算機科學A,它的優點在於把概念寫得很完整,很多基礎知識說明得很詳細,而且,最主要的是它不是很難懂,不會的詞查一下就能看明白句子的意思。上面的考綱的內容巴朗里都基本都有詳細介紹。裡面的題目也都很不錯,選擇題和大題都很適合練習和模考,引進版的巴朗還配有中英目錄翻譯,對專有名詞的理解還是有幫助的。雖然其中的內容有點超綱,但是看一看對於理解計算機科學的思想還是有好處的。

如果實在不喜歡看英文材料,推薦一個編程學習網站——Fenby,上面的視頻教程或許能讓你學得更輕鬆,但是英文教材最好還是讀一下啦,畢竟考試的內容就在上面。

跟我一起劃非重點

近年來AP計算機科學一直在刪減內容,有一些內容已經不要了,做往年卷子時可能會遇到,那就嘗試著寫一下對對答案參考吧,不會也沒有關係。

1. Marine Biology Case Study(這個好早就沒掉了,完全忽略)

2. GridWorld Case Study(在前年的卷子中開始消失,在這之前的卷子每套一般會有一個大題考這個,當時我還問了深圳的老師,得到消息說不考了後就只是嘗試著寫一寫,被換成了三個labs)

3. instanceOf 這個以前在標準答案中出現過,現在Course Description中的描述是not tested in theexam but potentially relevant/useful

4. 三個labs (The MagpieLab, The Elevens Lab, The Picture Lab,在巴朗的計算機科學的書裡面有,但是現在的描述是optional and are not tested on the exam但是考試中可能會出現和這些labs相關的概念。對於這些labs,只需知道內容和其中面向對象編程概念就好,不需要寫程序練習)

最後補充一下,AP計算機科學A只是大學的入門課,其實很早以前還有計算機科學AB,這裡面包含所有A的知識,還加上了數據結構等更深入的概念(這也就是很多學生很奇怪為什麼計算機科學只有A)。

作者:連龍

編輯:王導

本文系TD創作計劃系列。

?? 美帝互聯網生存指南:學術生活娛樂一樣不落還能省錢!

?? 如何自學AP心理學?


推薦閱讀:

AP美國歷史【必看】影視清單,輕鬆提分!
學霸的AP essay,只寫了intro分數都比我的高
AP藝術史自學教程,適用性以及5分秘籍(想多了這是不存在的)
如何評價Tp-link推出的無線ap及其ac?
國內ap課程申請加拿大大學要SAT么?

TAG:计算机 | AP | 留学 |