APCS 分為兩個大部分,觀念題和實作題。觀念題以選擇題為主,旨在測試考生對於程式語言的觀念是否正確。除了考對於邏輯應用及操控記憶體的正確性,電腦科學概論知識也常會出現在考題內,此外也會以C語言寫出範例程式考基礎程式相關知識及演算法等高階題目。
在 APCS 官網上公布的觀念題範圍如下:
- 程式設計基本觀念 (basic programming concepts)
- 資料型態 (data types)
- 常數 (constants)
- 變數 (variables)
- 視域 (scope):全域 (global) / 區域 (local)
- 控制結構 (control structures)
- 迴路結構 (loop structures)
- 函式 (functions)
- 遞迴 (recursion)
- 陣列與結構 (arrays and structures)
- 基礎資料結構 (basic data structures)
- 佇列 (queues)
- 堆疊 (stacks)
- 基礎演算法 (basic algorithms)
- 排序 (sorting)
- 搜尋 (searching)
實作題則是在為期兩個半小時的時間中出四個上機考題目,每一題都有不同的輸入及要求的輸出,而我們的工作就是要寫出能夠寫出能夠正確輸出的完整程式或是函式。
而在這邊的上機考指的是會有一個線上解題系統(Online Judge)測試考生寫出來的程式是否能夠達到題目要求,並按照題目敘述給分。在 APCS 中總共會有四題,每題 100 分,但每一題都會有不同難度給分的機制,因此並不是很難的題目就不會去寫。
在 APCS 官網上公布的實作題範圍如下:
- 輸入與輸出 (input and output)
- 算術運算 (arithmetic operation)
邏輯運算 (logical operation)
位元運算 (bitwise operation)- 條件判斷與迴路 (conditional expressions and loop)
- 陣列與結構 (arrays and structures)
- 字元 (character)
字串 (string)- 函數呼叫與遞迴 (function call and recursion)
- 基礎資料結構 (basic data structures)
- 佇列 (queues)
- 堆疊 (stacks)
- 樹狀圖 (tree)
- 圖形 (graph)
- 基礎演算法 (basic algorithms)
- 排序 (sorting)
- 搜尋 (searching)
- 貪心法則 (greedy method)
- 動態規劃 (dynamic programming)
雖然分為兩個不同題型,但考的內容大同小異,都是考有關程式設計的能力,但因為實作題的範圍遠大於觀念題,因此實作題的難度往往難於觀念題,也幾乎不會出現實作題的分數大於觀念題的情況。
在準備方法上,大部分都會直接學習 C/C++,並在練習程式的過程慢慢加上不同技巧,步驟幾乎可以從上面的實作題範圍慢慢練習下來。但由於這樣講太籠統,因此在未來幾篇會大致介紹在 APCS 中會遇到的問題,並提供大致上的學習方向及資源。