跳到主要內容

發表文章

APCS程式檢定的本質是什麼?

APCS(Advanced Placement Computer Science)是由教育部舉辦的一項程式能力檢定,主要用來檢定高中生的程式能力,作為申請大學入學的重要參考,官方資訊可以參考 這裡 。 若高中生有志申請大學資工、資管科系,APCS成績相當重要,大多數資工、資管科系有獨立的APCS組。以109年度的臺北大學資工系為例,APCS組相較於一般組,在學測上的要求少了九級分! 而即使是其他科系,APCS的成績能用來證明學生的程式能力,不管在任何科系的甄試方面,都是很大的加分,簡單的來說,可以把APCS視為「程式界的全民英檢」。關於APCS的評分及入學規定, 這篇 寫得相當清楚了,我在此不贅述。我要探討的是,APCS的本質到底是什麼? 我有個做教育的朋友說:「我不喜歡APCS,它的題目太刁鑽了,只是逼高中生去補習而已,又是一個填鴨式教育。」 我本身是交大資工博士候選人,並在資訊業界打滾了十幾年。APCS實作滿分是五級分,我敢斷言若是全台灣資工系的畢業生來考,差不多平均落在三級分左右。但高中生如果要錄取台清交資工APCS組,至少要考到四級分。 所以高中生要考的比大學生還高,才有辦法入學?是不是什麼地方搞錯了 是有一個地方搞錯了,許多資工系畢業的學生,根本不會寫程式就混畢業了。 他們一開始就不應該去念資工系 。 108課綱的精神是適性發展,猴子就應該去爬樹、魚就應該在水裡游,逼著魚去爬樹本來就徒勞無功。APCS不應該人人去考,應該要對程式有興趣,未來希望寫程式改變世界的人去考。APCS的考題安排很有鑑別度。如果一般有邏輯的高中生,認真學的話要實作三級分不是太難,有天分的可以到四級分。五級分(滿分)真的很難,過往紀錄只有約1%的人考到,很可能裡面多半是老師、或者資訊奧林匹亞的國手。 我並不會鼓勵學生把時間拿來拚滿級分,我認為三級分的程度,就足以寫一些有用的程式了。當學到APCS三級分的程度,就應該用心觀察生活周遭有什麼問題,自己做一個project來解決,”學”的目的是為了”用”,不是為了測驗。而我讚揚108課綱的地方在於,如果你能用的好,就能拿它來入學。 當其他同學的自傳寫著:"疫情期間當志工發放口罩",你寫的是:"開發口罩地圖app,並獲萬人使用",誰會被大學教授錄取?! 開發口罩地

學APCS程式檢定對未來有用嗎?

有些朋友問我,學APCS除了升學以外,對未來就業之類的有用嗎? 我的觀點是 學APCS有用,只學APCS沒用 會發出這種疑問的,多半對APCS的題型有相當了解了,因為APCS要考滿級分真的很難,對於演算法要有相當深刻的理解,而這樣的熟練度,大多數的電腦工程師在他的職業生涯都用不到。 大部分的工程師不需要把Dynamic Programming、Greedy Algorithm玩得很熟練,能夠在30min之內解一題;只需要在程式效能不足時,知道有這個概念,然後去翻翻書,花個幾天去解它都沒關係。甚至大部分工程師,只要有能力寫一些”膠水”,把幾個現成的元件”黏”起來就好了,高深的演算法很多都有現成函式庫了,不太需要自己寫。 別誤會,我不是說這樣的工程師很遜。相反的,有能力用現成的元件,有效率的組成一個有用的系統,不要重複發明輪子,才是正確解決問題的方式。 所以學APCS對未來有用嗎?學到實作三級一定是用的到的,如果你有天分隨手考到實作五級當然很棒,但不是人人都有必要硬上五級,時間是世界上最貴的東西,應該花在更有意義的目的上面。 找到真實世界的問題,寫程式來解決,才是真正有用的能力 我 前面一篇文章 有提到,寫一個”口罩地圖App”就是很好的例子。若我要帶一組中學生來做這件事,大概有以下步驟 發掘問題 用戶訪談,確認需求 詳列規格書,把功能定義明確 小組分工,開發以下元件  使用政府開放的口罩資訊API  使用Google Map API  設計使用者介面  使用Web技術(JavaScript、CSS、HTML5),將以上黏成一個系統  利用一些工具,把Web系統包成App  宣傳這個App,讓更多人知道來使用它  收集用戶回饋,持續改善  只學APCS的學生,辦不到這件事,不學APCS的學生,也辦不到這件事。 開發”口罩地圖App”是一個簡單的例子,但真實世界裡面,光是”發掘問題”都不簡單。舉例來說,譬如參加棒球社的同學,能不能開發一個系統,把球員的數據輸入進去,幫助教練排出最有效的棒次?譬如說家裡開餐廳的同學,能不能開發一個系統,安排桌椅跟行動路線,發揮最高的坪效?社區偶爾有陌生人闖入,能不能開發一個AI系統,辨識陌生人並發出警訊? 程式能力只是解決問題的一部分,其他我講的部分,學校的老師都沒有辦法教

最適合高中生選的科系是什麼?

個人申請已經成為高中生進入大學最重要的管道,大約7成的入學名額都來自於此,個人申請有個特色是,只能選六個志願校系,六個都沒中就是落榜。有人會說:「我就是興趣廣泛啊,不能選100個志願校系嗎?多元入學怎麼這麼不多元。」 有喔,可以在分科測驗填100個志願,不過一則分科只佔約2成的入學名額,二則個人申請先舉行,不幸沒有錄取的話還是可以考分科,一般的學生都不會放棄個人申請。 個人申請這麼小氣的只開放六個志願,背後的原因是要倡導「適性發展」,如果學生早點確定興趣科系的話,再依照學測成績來做預估,六個志願不會太難填。 問題就在於,九成的高中生都不知道自己的興趣科系是什麼? 沒有提早佈局而去走個人申請的話,非常吃虧。 在學測通過門檻的情況下,個人申請還是有7成的機率會落榜。 舉例來說,一個高中生一直都把時間花在念學科,要填志願時,想想對多媒體還算感興趣,就填了大眾傳播相關科系,兩手空空的去參加甄試;另一個高中生,已經累積製作了數十則youtube影片,並有數千名訂閱者。顯然的,後者被錄取的機會高太多了。 可是如果真的不知道興趣在哪裡的話,該往哪個科系去佈局呢? 我會推薦資工、資管科系 主要有以下幾個原因 資工、資管是一個相對好念的科系: 一般大學裡面,理學院學的東西比較抽象,通常是最多人念不下去、被退學的科系;電機系的三電一工也是一堵高牆。相較資工學的東西,通常有一定邏輯就能理解,比較不抽象而且應用性高。從另一個面向看,物理系念的東西,是在想辦法理解上帝的發明,而資工系是在理解人類的發明,後者當然好懂很多。 資工 、資管 是最好找工作的科系之一: 資訊業界有相當多非本科系的人,由於他們的本科系畢業之後不易找工作,自學轉職成電腦工程師,可見電腦領域的人力是供不應求的,本科系畢業的當然極為吃香。電腦相關的工作很多而且很廣,從不太寫程式的MIS(資訊管理)、需要大量溝通的PM(產品或專案經理)、專門寫程式的programmer、軟硬整合的Maker等等,資工畢業的人即使各人強弱項不同,都還是能在資訊產業找到適合的工作,是學有所用比例很高的科系。 一台電腦發大財: Google、Microsoft、Apple、Facebook這些科技巨頭的創辦人有什麼共通的特色?他們都是電腦科系的中輟生,書唸到一半發現更有價值的事就離開學校了。寫軟體有個特色,只