跳到主要內容

發表文章

目前顯示的是有「APCS」標籤的文章

愷哥教學模式為何效果顯著?線上/錄影/實況?

這個同學給我的回饋,我很有感觸,肯定了我程式教學的成效。曾經有家長對於我程式教材採用線上錄影的方式提出質疑,希望我做一些現場教學。但以我教程式的實務經驗,同學普遍給我的回饋都是: 「老師,在你這邊學習程式的效果比別的地方好很多!」 錄影教學的方式,受到主要的質疑是:「學習的過程有疑問時,不能當場問怎麼辦?」。不過我們來看典型的教學現場,學生們幾乎都不發問的,因為「不知道要怎麼問」。有可能是因為現場一分神就沒聽到銜接不上,也有可能是一大片根本沒聽懂,不知道要問哪個點,總不能叫老師從頭講兩三遍。顯然的,錄影教學在這方面占盡優勢。 同學沒聽懂的部分能重複看好幾遍,沒有心理壓力。 但即使能重複觀看,問題減少了,但還是有可能需要發問,怎麼辦? 這其實分成兩個層面: 學生為什麼需要發問? 能怎麼發問? 學生為什麼需要發問?其一是學生素質落差太大,老師講課不可能涵蓋所有可能,如果教簡單了,優秀的學生感覺浪費時間;如果教難了,後段學生跟不上。怎麼樣都會有一半的學生教不好,這是當老師最大的痛苦。因此我的程式課程是篩選學生的,學科能力要有國中會考4A以上(含數學),並且在報名流程上阻擋了學習動機較弱的學生。 學生素質比較齊之後,哪裡會聽不懂、需要加強解說的部分也會比較一致。所以我會收集常被學生問到的問題,更新到錄影課程裡面。如此一屆一屆下來,學生不懂的部分也變的很少,不太需要提問了。同時我也開闢線上群組,方便同學隨時提問。 【提問沒有限定時段】,任何時候只要愷哥或助教醒著,都會盡快回答 ,大部分提問都會在1hr內獲得回應。在這個過程裡,我也意外發現這有互相激勵的效果,同學的提問可能被另一個同學回答,而其他同學看著別人討論熱烈,也會激起自己的積極心態。這種「一樣是同學,為什麼他都會?」的心理衝擊,產生不錯的共學效應。最後,如果學生的問題還是搞不定,則透過一對一的視訊通話來指導。 另外一個傳統教學做的不好,但我非常重視的部分是「練習」。傳統程式老師給的練習很薄弱,僅是讓學生依樣畫葫蘆。而我給的程式作業在質跟量上都具有挑戰性,必須學生舉一反三才能解出。我們以開放軟體為基礎,自行開發了「code1程式練習系統」,讓學生看完錄影教材接續練習解題。很多學生反映,看錄影的時候都聽的懂,在code1上寫作業的時候才發現寫不出來,回去再看一次錄影就想到怎麼寫了。 「線上錄影教材」搭配「code1練習系統...

參加比賽是為了贏?

每隔一陣子就會有家長來問我:「老師,這個程式比賽/檢定難嗎?我的孩子他才學沒幾個月,是不是學個一年再去參加比較有把握?」。我的回答都是:「現在就去參加啊。放心啦,他現在去比穩輸的,比賽又不一定要贏」。 是的,參加比賽的目的不是為了贏,是為了累積失敗 我自己是一名創業者,曾獲得郭台銘董事長投資, 公司估值達2000萬美金 ,但創業是成功率僅為1%的超高難度挑戰,我經營的相當掙扎。直到有一天我聽到了一場演講,演講者是國內最快上櫃的電商公司老闆,他說:「我總共開了20個購物網站,倒了15家,只活了5家」,霎那間我突然了解, 如果我連失敗都比人家少,憑什麼成功? 東方的教育都很害怕失敗,為了避免失敗,都會希望做好萬全準備之後再上場,其實這是搞錯目標了。應該追求的並不是「避免失敗」,而是「盡快成功」。 「避免失敗」的哲學,會盡可能的避免競賽,畢竟每比一次就多一次失敗的機會,不如盡可能的避開,等到自己有萬全準備的時候再上場,這樣「成功機率比較高」。 「盡快成功」的哲學,會盡可能的上場,盡可能累積失敗的經驗,從中學到成功的方法。雖然成功率被拉的很低,但成功會來的快很多,也容易迎來較大的成功。 成功是屬於累積最多失敗的人 。這麼說或許有些雞湯,更精確地說,快速的用最低的成本、累積最多的失敗,是獲取成功最科學的方法。 應該不難設想,那些得獎的人,肯定是失敗很多次之後才贏的。如果你都不去參加比賽,在家苦練三年,然後第一次比賽就得獎,你覺得機會多大? 以APCS程式檢定來說,我自己的程式學生,每30個人去考,就會有一個實作零分。我相當清楚這些學生的實力絕對不可能零分,但是第一次上機考, 不熟悉環境、心情緊張又操作錯誤、或遇到電腦出問題 ,明明會寫卻拿零分。 所以我都跟學生說:「有得考就去考,就是要趁著還沒準備好的時候,先去把失常的配額用掉啊。 不然你要等準備好再去失常嗎? 」 但總是有學生不相信自己會失常,還是等自己覺得準備好了才去考。但第一次考的學生,經常只能發揮出平常七成的實力,只好等半年之後再考一次。 我總是為他們沒聽我的話覺得很惋惜。但轉念一想,這些學生不就是敗在這個觀念嗎?以一個小小的檢定挫敗,換來人生不會再犯相同錯誤,正是在實踐累積失敗啊! 歡迎加入 高中生 學程式FB社團 、以及 愷哥電腦科普頻道 ,跟我一起學程式、學人生。 【愷哥APCS程式班】 熱烈招生中喔!

能不能靠程式能力更強,考上更好的大學?

最近我被幾位同學問到:"老師,我APCS已經實作三級了,後面我該往哪個方向努力,可以上更好大學?"  簡單來說同學的疑問是 "能不能靠程式能力更強,上到更好的大學資工系?" 概略上來說,會問到這個問題的同學,尤其是高二下的學生,幾乎都沒有機會了。別誤會,我講的不是程式超強沒用,我講的是程式能力 從"還可以"練到"超強",投資報酬率比較不保險 。 我在 考好APCS就是進好大學的保證? 這篇文章中提到,高中生的程度分成四級 資訊奧林匹亞國手,每年全國四人 資訊奧林匹亞選訓選手(準國手),30人以下,以及全國賽名列前茅者,兩者合計約40人 對於程式有興趣也學得不錯,APCS成績在實作三級分以上 APCS實作二級分以下 靠程式超強來上頂大的學生,制度上走保送推薦、特殊選材跟APCS組,就是前面的兩種人。以全國每屆約22萬高中職學生來說,錄取比例約萬分之一,是名符其實的萬中選一。這樣的程式天才,其實都不需要詢問有什麼樣的升學管道,而是升學管道會主動找上你。 這樣的程式天才,光靠努力是不夠的,一定要有超乎常人的天分(不然怎麼叫"特殊"選材)。大致上來說,如果"認真"學一年程式達不到APCS實作四級的話,就很難是天選之人。對絕大多數的高中生來說,要上好大學,就是學測成績要過一階標準,然後靠APCS實作三級通過二階甄試。這是名額最多,可行性最高的路徑。 那同學又會問說: "老師,難道APCS實作考四級、五級沒有用嗎?" 其實還是有,實作四級可以上到中字輩資工,不過我們要思考時間報酬率的問題。就考生的成績分布,APCS實作三級佔25%,四級佔5%,五級佔1%。實作三級要能夠升到四級,是一個很大的門檻,有可能投注了很多時間,卻跨不過去。 反觀東華資工一般組,學測只採計數學跟英文兩科,多念一點書就有機會多一級分。甚至再多念一科自然,就可以挑戰中央、台大了。這種 每一分努力都有機會上更好大學 的時間投資,對非天選之人的正常學生來說,是更保險的策略。 綜合來說,大部分高中生最好的策略就是我在前一篇文章所說的 八分準備學科、兩分準備興趣專長 ,學科還是第一關,APCS實作三級一定要考到,考到了之後可以當興趣持續培養,四級以上算是加分,但不要孤注一擲在程式...

如何一魚多吃的準備學習歷程?

之前提到,「 有公信力的前30%」 ,是學習歷程最主要的準備方向(參閱 【參加營隊很重要?從數據的角度來看學習歷程】 )。除此之外,高中生們還有一個很大的困擾是,光是準備學科就沒有時間了,哪來的時間處理學習歷程? 既然沒有時間,那就一魚多吃吧! 有哪個方向,既可以強化學科,又是多數科系喜歡的領域呢? 有喔,就是 英文 跟 程式 ! 英文的學科重要性無庸置疑。所有科系都喜歡錄取英文好的學生,這樣才有能力吸收國際上最新的知識,進而用英文做國際發表。 學習程式就是學習數學邏輯,尤其像APCS這樣的程式檢定,主軸就是考驗用程式解數學的能力。在目前網路及AI的時代,不只是電機資訊等科系,包括醫學、財金、法律、商管、設計、機械、物理...等,所有科系都喜歡錄取程式能力好的學生,結合領域知識及程式能力來開發各種創新應用。 英文跟程式,絕對是學習歷程最有利、最通用的準備方向! 方向有了,那 目標 呢? 前面提到「有公信力的前30%」 , 所謂的有公信力,基本上就兩個方向, 比賽獲獎 跟 檢定考試 。而主辦單位自然是要有代表性的,譬如教育部主辦最好,最低標準是校內競賽,而巷口補習班辦的就別提了。 量化來看,概略有3%的學生拿過校內競賽獎項,但學校間的程度落差很大,譬如說建中程式比賽最後一名,可能比他校的第一名還厲害,可比性並不好。「全國競賽」的可比性高,但難度太高,概估只有0.1%的學生可拿到獎項。對大部分的學生來說, 「全國檢定」的難度適中,是最可行的目標 。 從統計數字來看,通過全民英檢的高中生裡面,中級以上約50%,中高級以上約10%。 若通過全民英檢中高級,在二階甄試有明確優勢 。 通過APCS程式檢定的高中生裡面,實作二級以上約50%,實作三級以上約25%。 若通過APCS實作三級,在二階甄試有明確優勢 。 以上的成績比例,都是以「有去考檢定的高中生」為分母,通常是實力前5%的學生才敢去考,所以這樣的比例優勢,即使去申請頂尖大學,都是很足夠的。 這邊有個重要的概念是,除非是在該領域有明顯的資優,不然我都不會鼓勵同學往0.1%努力,只要穩穩進30%就好。畢竟個人申請第一關還是學測,第二關才是甄試,「 八分準備學科、兩分準備興趣專長 」才是比較聰明的戰略。0.1%是頂大特殊選材的道路,大多數學生不適合。 最後來到結論,對高中生來說,以 全民英檢中高級 、 APCS實作三級 為目...

怎麼搶到APCS秒殺報名?

APCS程式檢定的考試每年會舉辦三次,按例在每年的一、六、十月舉辦 。 通常考試名額 總量 還算充足,但容易搶不到 離家近的考場 ,需要跑遠甚至跨縣市去考。 這篇是告訴大家,報名順序大概是怎樣 。 先說好,這不是什麼"保證搶到"的密技,只是事先讓你知道流程,讓你減少出錯、動作更快、更高機率搶到而已。 【報名過程】 1)以2024/6/16的檢定為例( 不見得每次規定都一樣,僅供參考,請以當次官方公告為準 ),考試前兩個月就要注意開放報名公告,2024/4/24 9:00開放報名。開放前5min,等在報名網頁,準備reload。簡單的來說,報名網頁就那一頁,只是"開始報名"的按鈕要時間到才會冒出來,所以同學就等在那個網頁,不斷reload吧! 2)輸入email並獲取驗證碼。這邊要求你輸入email,APCS官方會立刻發驗證碼給你,輸入驗證碼之後才能登入。為了節省時間,先把email address打好,到時候copy/paste比較快。而且信箱先開好,讀取驗證碼才不會手忙腳亂! 3)輸入資料 總共需要輸入的資料如下圖,注意沒打星號是可以不填的,節省時間。一樣先把姓名、行動電話、身分證號先打好,到時候copy/paste比較快。選考科目有兩科,對於升學來說,兩科成績都是必要的,我會建議第一次兩科都考。若觀念題已經拿到滿意的級分,之後也可以集中精力,單考實作題。 4)一直出現網站錯誤? 由於APCS檢定超熱門,上千人在第一時間搶,官網會出現錯誤訊息。不用想太多,就是網站塞爆而已,唯一解法就是重複試,慢慢試,等待系統慢慢把人流消化完。從最近幾屆的經驗來看,卡2hr都是很正常的。不用太焦慮,最近幾屆名額還算夠,當天中午前完成報名,大概率還是可以搶到自己縣市的考場。 好了,就這樣! 這篇不是告訴大家什麼一定會報名到的後門,只是告訴大家先準備好什麼,搞清楚流程,節省個幾分鐘就比較容易搶到。加油啦! 歡迎加入 高中生 學程式FB社團 、以及 愷哥電腦科普頻道 ,跟我一起學程式、學人生。 【愷哥APCS程式班】 熱烈招生中喔!

考好APCS就是進好大學的保證?

之前看到一個朋友在抱怨:"我辛苦培養我兒子學程式,考過頂大資工APCS組的門檻,結果還是被刷下來阿,考APCS到底有沒有用?!" 考APCS當然有用,但是你要知道怎麼用 首先我們先搞清楚APCS組是什麼意思,簡單來說,各大學的資工、資管系,大約會拿出總入學名額的5%,錄取程式能力強,但是學科差一點點的學生。而APCS檢定,就是學生程式能力的證明。 高中生的程式能力,大約可以分成幾個等級 資訊奧林匹亞國手,每年全國四人,這些人不需要考APCS,而是保送直接進到頂尖大學。 資訊奧林匹亞選訓選手,約30人以下,以及全國賽名列前茅者,兩者合計約40人,APCS可以考到實作五級分(滿分)、透過推薦、特殊選材或APCS組進到頂尖大學。 對於程式有興趣也學得不錯,APCS成績在實作三級分以上的高中生 APCS實作二級分以下的話,我跟國立大學資工系教授聊過,對入學的影響較小,在此不討論。 第一種人是老天爺賞飯吃啦,這要靠天份,沒辦法強求。 第二種其實也很靠天分啦,只是運氣差一點沒當到國手而已。這些人就把頂大資工的APCS組名額佔光了。 第三種的話,會考數學在A以上的學生,都有機會培養起來。 但是你要知道APCS成績的正確使用方法。 首先要知道,APCS組不是後門,而是窄門。 如果學科成績夠的話,想要上前段國立大學資工系,就盡量不要報APCS組,名額真的很少。後段國立大學甚至私立,APCS組競爭比較沒這麼誇張。但APCS成績最高勝率的用途,其實是在一般組的申請入學。 高中生們應該知道,目前大學入學名額最大宗的是申請入學,佔了七成。而申請入學的機制裡面,分成第一階段學測成績,跟第二階段甄試。第二階段甄試會淘汰掉七成左右的人。想想看,如果你辛苦念了三年的書,好不容易達到頂大學測的標準,但第二階段甄試卻有七成的機率被淘汰,是不是很可怕? 對大多數人來說,APCS的成績,就是讓你在第二階段甄試脫穎而出用的。 反過來說,你也可以想到,有志進頂尖校系的學生,都有準備考APCS,好把你幹掉。 所以我在「 想要考上好大學,該怎麼做戰略分配? 」提到,高中生最好的策略是「八分準備學科、兩分準備興趣專長」。尤其隨著程式能力越來越受到重視,不只是資工、資管,包括電機、工程、理科、甚至商管等科系,APCS的成績都可以在第二階段甄試大大加分,幫助你進入理想的校系。 歡迎加入 高中生 學程式...

如果不是為了升學,學APCS有用嗎?

許多人都想學程式,這是一個時代趨勢,但該從哪裡學?第一個目標訂在哪裡?一般人並不是太有概念。 這樣的人有許多不同的背景,也有不同的動機,我比較常遇到的是以下幾種 大學非資工系學生,想開發新技能 社會新鮮人,期待未來可以轉職 心中有一個Project,想要靠寫程式來達成的人。譬如很多人就想打造自己的股票分析程式 純粹探索興趣 有些人已經有明確的目標,更多人是探索性質的,沒有非達到不可的目標。若有極明確目標的,建議就直接朝著目標去,譬如網路上就有專教打造股票分析程式的課程。如果是探索的人,大致上是想搞清楚以下幾個問題 我適合寫程式嗎? 我要投入多少時間成本才有所成? 我該學哪種程式好?網頁、App、遊戲? 寫程式的出路好嗎? 先回答第4個問題,寫程式的出路很好,以台灣來說,普遍認為電、資、醫、牙是最好的出路,工作機會跟待遇都相對高。如果寫程式的出路算不好的話,台灣八成以上的工作都算不好了。第2跟第3個問題跟第1個高度相關,所以我們來看第1題就可以了。 學APCS是一個不錯的進入點,拿來探索自己適不適合寫程式 先定義一下"學APCS"是什麼意思,"寫程式"又是什麼意思。 寫程式是一個廣泛的領域,寫一個網頁是寫程式、寫一個App是寫程式、寫一個商業後台是寫程式、寫一個遊戲是寫程式...有太多不同 應用領域 ,而大部分的程式設計師都只專精少數應用領域。 但寫程式有共通點,就是需要 高度的邏輯力,並了解電腦運作的概念 。因此先學習程式共通邏輯,後續再鑽研感興趣的應用領域是合理的,大部分大學資工系也是這樣安排課程。 學APCS其實就是學習用程式解數學 ,也就是學習程式的共通邏輯。這樣的數學不是三角函數、線性代數那種純數學,而是偏應用性質。譬如給定地圖上的一些座標點,要求走過所有點的最短路徑;譬如給定一場棒球比賽的攻守紀錄,要求算出得分等等。這樣的題目型態,在許多的刷題網站都有,國內較有名如 ZeroJudge 。許多大公司如Google、Facebook等,招募工程師時會考程式,應徵者也會先練刷題,國外較著名的刷題網站如 LeetCode 。而各種的程式設計比賽、程式檢定,多是比用程式解數學的題型,而非比誰寫的網頁比較好看、誰寫的遊戲比較好玩。 用程式解數學 的形式,單獨存在的作用不大,必須要跟領域應用譬如網站、App結合,才能處理真實生活...

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系統,辨識陌生人並發出...