常言道,“好的開始是成功的一半。”無論是之前有豐(feng) 富經驗的小黑客,還是對電腦一無所知希望探索未知領域的小學霸、正式開始AP計算機的學習(xi) 都是可能長達一生,充滿激動與(yu) 挑戰的職業(ye) 道路的一個(ge) 重要裏程碑。勉強作為(wei) 一名前輩,在此容我道一聲“恭喜!”
前些年,我有幸和來自北京各知名高中和國際部的幾位優(you) 秀學員合作。在留學規劃項目的過程之中,我了解到他們(men) 在學習(xi) 計算機科學時麵臨(lin) 的諸多困難,也盡量利用自己的專(zhuan) 業(ye) 背景給了一些力所能及的幫助。AP Computer Science本身的難度其實並不太高,僅(jin) 相當於(yu) 美國普通大學計算機科學的前半學期內(nei) 容(加強版的AP Computer Science AB因為(wei) 大多數美國本土中學都無法找到合適的師資,早已停辦),但是國內(nei) 非常缺乏相關(guan) 的師資和學習(xi) 資源。即便對於(yu) 有條件聘請外教開設課程的國際部,外教本人的經驗往往也比較有限,通常是教齡不超過三年的新畢業(ye) 生。具體(ti) 而言,我之前學員們(men) 遇到的困難大致有如下三條:
第一,學生基礎參差不齊,而老師則基於(yu) 課本或講義(yi) 照本宣科。因為(wei) 我國國情所限,本身在中小學階段沒有在國家層麵設立計算機或編程相關(guan) 的教學大綱。對於(yu) 一部分具有得天獨厚條件或者自己有興(xing) 趣鑽研的孩子,標準的AP計算機課程可能稍顯容易。孩子們(men) 往往在上課時會(hui) 有些心不在焉,感覺和自己之前零散學的C或者C++區別不大,結果忽視了一些可能是非常重要的內(nei) 容或方法論。另外一方麵,對於(yu) 第一次“觸電”的學生,全英文的統一教學往往又會(hui) 讓他們(men) 望而生畏。與(yu) 同學之間的暗暗比較往往更加劇了這種挫折感,讓他們(men) 得出了“寫(xie) 代碼不適合自己”這種錯誤看法。
第二,課程缺乏必要配套實踐活動支持,上機實驗和/或項目流於(yu) 形式。我們(men) 都知道光說不練是假把式,對於(yu) 計算機這種實踐學科尤其是如此。目前即便對於(yu) 國內(nei) 已經正式開設AP計算機的項目,往往也缺乏必要的條件按照美國大學理事會(hui) (College Board)的要求開設至少20小時的配套實驗。更多的時候,老師會(hui) 布置一些作業(ye) 或者項目,讓學生自行在家上機完成。但這樣一來,孩子們(men) 在實際編程中遇到的困難往往很難在第一時間解決(jue) ,一些錯誤的編程習(xi) 慣也無法及時被糾正。於(yu) 此同時,麵對巨大的課業(ye) 壓力,部分孩子有時會(hui) 選擇從(cong) 網上或者同學處不求甚解的拿來一些代碼,覺得把“正確”的結果弄出來就算大功告成。但這樣一來,對課本知識的理解以及分析解決(jue) 問題能力的提升就極為(wei) 有限了。
第三,教學與(yu) 大學基礎課程不能很好銜接,也與(yu) 實際軟件開發脫節。限於(yu) 教材和課綱,以及教師本人的經驗,我們(men) 得承認AP計算機並不是一門能夠學以致用的課程。即便是對於(yu) 那些非常認真的學習(xi) 了一整年,並在最後的考試中取得5分的好成績的孩子,也往往無法獨立開發出一個(ge) 實用的程序或者應用以解決(jue) 身邊的問題。他們(men) 對更本質的計算機理論基礎會(hui) 缺乏直觀認識,也不明白在現實世界裏一個(ge) 軟件是如何開發出來的。欠下的這一課,往往需要等到大學第一年甚至更往後才能有機會(hui) 補上。
現實的說,對於(yu) 家境優(you) 渥但沒有自己產(chan) 業(ye) ,孩子邏輯思維強也有興(xing) 趣入行的話,留美學習(xi) 相關(guan) 專(zhuan) 業(ye) 並在之後以程序員身份加盟世界一流的軟件公司是中短期回報最高的選擇之一。我自己因為(wei) 當年做學生時相關(guan) 的創業(ye) 經曆,也有很深刻的體(ti) 會(hui) ,認可這無論是在物質上還是精神上都是回報率極高的職業(ye) 選擇。雖然當時因為(wei) 簽證相關(guan) 的細節原因最終沒能把這個(ge) 事業(ye) 繼續下去,在今天我也非常自豪能夠把之前積累的一些經驗和技能分享給我們(men) AADPS的學員們(men) 。具體(ti) 而言,我們(men) 的服務針對性解決(jue) 了上麵說到的三個(ge) 困難:
在課程規劃方麵,我們(men) 采用因材施教的一對一服務。在每周兩(liang) 小時左右(北京地區可麵授,外地和國外學生通過微信語音視頻的形式)的指導中,我會(hui) 根據學生的水平動態調整內(nei) 容,確保學生能夠感覺稍有挑戰,但也不會(hui) 因為(wei) 難度過大而失去興(xing) 趣。作為(wei) 對之後考試和美國大學階段學習(xi) 的準備,教材和授課內(nei) 容全部采用英文原版。對於(yu) 之前沒有基礎的學員,我在美國大學理事會(hui) 官方推薦的教材中比較選擇了Blue Pelican Java這一本。對於(yu) 已經有編程經驗的學員,則采用我自主編撰的英文講義(yi) ,在涵蓋課綱內(nei) 容的前提下根據學員的興(xing) 趣有所擴展,並聯係其他編程語言和重要的計算機科學概念。當然,對於(yu) 正式在學校裏選修AP計算機的學員,項目亦可以轉用學校采用的課本。
在實驗方麵,我們(men) 嚴(yan) 格按照課綱要求,指導實施Elevens(單人紙牌)、Magpie(聊天機器人)和Picture(圖像處理)三個(ge) 標準實驗。相對於(yu) 獲得結果,我更注重於(yu) 鼓勵學員識別編程過程中遇到的挑戰,並鼓勵他們(men) 利用各種資源積極的解決(jue) 這些困難。我要求並且幫助學員明白自己寫(xie) 的每一行代碼背後的含義(yi) 。無論如何,最終希望達到的效果是希望學員不會(hui) 把編程當成是一種“隻可遠觀不可褻(xie) 玩”的抽象概念,而是要將其內(nei) 化為(wei) 一種很生活化的技能。當然,對於(yu) 學有餘(yu) 力的學員,我還自主設計了Maze(迷宮行走)、Calc(計算器)和Tone(音樂(le) 合成)三個(ge) 高級實驗,既幫助鞏固麵向對象程序設計(object-oriented design)、控製流語句(control flow statement)、字符串(string)以及數組(array)等基本內(nei) 容,也涉獵圖形用戶界麵(graphical user interface)、異常處理(exception handling)、線程(thread)和算法實現(algorithm implementation)等實用的超綱內(nei) 容。
在實踐方麵,我們(men) 項目指導內(nei) 容中涵蓋程序調試(debugging)、測試(testing)、版本控製(version control)、Github/開源軟件使用及開發等現代軟件工程師必備技能。我們(men) 的服務也與(yu) AADPS在美本高端留學申請方麵的豐(feng) 富經驗緊密結合,讓學到的知識能最大化的轉化為(wei) 之後申請美國大學的優(you) 勢,甚至是實用的職業(ye) 技能。
評論已經被關(guan) 閉。