2021 TOI 特訓班班內短期同好會報告書

大家好,我是 dreamoon,是 AA 競程的創辦人之一,在 AA 競程裡負責教學的部分。在這裡和大家分享舉辦為期三天的競程同好會的經驗。

和大家分享同好會的經驗之前,得從去年 12 月 29 日開班的 AA 競程 TOI 特訓班說起,因為此同好會僅邀請特訓班內的學生參加。

AA 競程 TOI 特訓班的成立過程

在 TOI 特訓班成立之前,我已有非常多以 TOI 為目標的學生,在向他們傳播競程及演算法的美妙之處的同時,我也時常思考,我還可以使用我的專長為這些學生們做些什麼?這個問題縈繞在我心頭許久。直到去年 11 月 26 日晚上,我忽然有個想法:許多學校都會為國、高中的學生舉辦會考、學測等大考的模擬考,很多考試也都有模擬考,這應該代表著大家都認為模擬考的存在是很有用的東西吧?而我,是個經驗豐富的出題者!所以我有能力為這些學生準備一些 TOI 模擬考!
但參與人數太少的模擬考是看不出學生之間的表現好壞的,所以我想要成立了一個 TOI 初選模擬賽班,同時也邀請那些已經靠全國學科能力競賽進入 TOI 一階的人也來參加,讓更多有心準備 TOI 的學生們可以一同努力,也能拿全國最頂尖的學生們的成績來當作自己表現的參考基準。
有了此念頭後,首先就拿台灣現有的競程相關營隊及活動參考,可發現有以下幾個可能的改進的空間:

  1. 多數競程營隊及課程都是短期至多五天的活動,在短短的時間內難以讓學生完全吸收課程內容,而營隊結束後,學生自學時也沒老師可以提問了。
    近期可以發現很多培育新手轉職工程師的機構都有注意到這一點,所以會特別強調學生每週除了基本課程外,還得付出 20 小時左右的練習時間才能真正有所長進。但目前台灣競程方面,只有資訊之芽及某些競程強校能產出長期的課程。
  2. 由學校所舉辦的課程沒有專職講師,大多是召集學生志工。而校外比較好的機構所請的「優秀」的老師也大都是兼職,這些老師無法全心全力投入在教育上,在平常日比較沒空閑時間能解答學生的困惑。
  3. 大多數營隊及課程無法提供優質的和 TOI 相同賽制的模擬賽,目前全台灣只有 「全國資訊學科能力競賽 模擬賽」這個組織能提供此賽制的優質模擬賽,但它模擬的是全國賽,而不是 TOI。除了它之外,只有極少數學校有學生能提供模擬賽給社團學弟妹,但這些比賽的品質也是參差不齊。
  4. 多數營隊的課程內容都是一再的重複基礎的知識,這是因為每次的營隊招收的預期對象都是剛入門競程者,所以無法擁有更進階的內容。

有了以上幾項的思考,我決定讓 AA 競程特訓班以「橫跨兩個月」且擁有「全職老師」來呈現,並對報名的學生有些基本的門檻,另外也打算出錢請了一些非常有經驗的人來當助教及驗題者。
花了幾天和另一位創辦人 AA 及一些朋友討論過後,覺得這個計畫非常可行,於是在 12 月 1 日,我們就把 AA 特訓班的消息釋放出來,也陸陸續續收到很多同學的報名,最終的報名人數也和我們預期人數吻合,有 30 人左右報名。(下圖為 TOI 特訓班第五週課程結束時的合影。)

但開班後從學生們的模擬賽成績及學習狀況中,可發現有件事和我們預期的有很大不同,也就是「學生在競程上的經驗」
我們設定報名門檻是 APCS 實作 3 級分,這是因為教育部規定只要達到這個門檻,就可以報名參加 TOI 初選。但經過兩週的課程下來,我發現 APCS 3 級分是個相當低的門檻,多數 APCS 3 級分的人都尚未達到競程的入門程度。這些學生只知道 C/C++ 的最基本語法,對於某些語法的完整的行為、電腦能跑多快、時間複雜度是什麼等等競程基本觀念都不知道。舉個實際例子:有些學生並不知道 int、long long 能儲存的數字範圍,也不知道怎麼估計自己的程式會不會超時。
於是我又忍不住開始思考,我能為班上這些程度相對落後的同學做些什麼事呢?這些學生此時此刻欠缺的並不是模擬考,而是一些更基礎的知識,並且這些知識必須伴隨著大量的練習才能夠吸收。想來想去,我只想到了一個方法:找寒假大家可能比較有空的連續幾天時間,把大家聚在一起,挑幾個主題,讓大家一起互動學習平常比較不會接著到的一些知識。
我把這個構想提出來和另一位創辦人 AA 討論,於是班內短期同好會就誕生了。

同好會時程及目的

我們決定把同好會辦在 2 月 1 日至 2 月 3 日每天的早上 10 點至晚上 6 點,但若學生願意,也可以從早上 8 點待到晚上 10 點。因為要長時間待在同一個地方,怕大家會有心理上的不適,所以我們也選了相當舒適的空間當作我們的活動場地,並且我們只向參與的學生們收取最基礎的費用,甚至 AA 競程還出了幾千塊補貼場地費。
這三天正好緊接在今年台大所舉辦的程式解題競賽集訓營之後,有不少同學是參加完五天的台大營隊後繼續參加我們的同好會,甚至有四位學生專程從台中北上而來參與我們同好會,由此可見來同好會的學生們都是非常有上進心的。總共有 14 位同學及 4 位志願者參與此次同好會。
我在同好會的每天會挑一個主題,並且挑選一些練習題。期間我會先講解一些觀念,講完讓大家寫相關例題,當大家完成的差不多時,再繼續解說新的觀念。練習期間大家能互相討論,仍有不懂的地方也可以詢問我或助教。希望能藉由這幾天的時間,了解學生們的不足,並幫他們補強基礎概念。
每天只挑一個小主題的原因是,我認為與其一次性丟給大家很分散的不同主題 (大部分學校的練習方式都屬於這種,不太有系統的由選題者挑一些自認為比較好的題目給大家練習),不如找很多概念相似的題,讓學生們對於該概念的熟悉程度達到一定的值後,就能真正把該概念學起來。而不會學了一次後,下次又是久久才碰到,而再次碰到時早就忘了當初自己學了什麼了。

同好會第一天

第一天的主題是「枚舉」,這是我在很多地方都演講過的主題。我也做了一份專屬於同好會的簡易投影片作輔助。
有些人覺得這個主題比較簡單,就沒有來聽。雖然我相信後面比較深入的部份這些人也都不會,但我也不會勉強大家都來。
十點左右學生們就到齊了,按照計畫我講完部分後,就讓學生們開始寫練習題,由於這是第一天,我擔心學生們沒有動力練習,所以就和大家說:「我會請今天完成題目的難度和最高的前兩名飲料」,希望大家能有動力多寫些題。並且開了一個 Google 試算表如下,統計每個人完成多少題。
事後證明我白擔心了,畢竟每個學生都是自願來的,大家都練習的很認真,所以只有在第一天提出請飲料的活動 ????。
由於這個主題我講過很多次了,所以也很清楚大家常犯的毛病,如同我所知,雖然遞迴枚舉是個非常實用的工具,但對於剛入門競程的人來說,要在一天內理解這東西可能還是有些困難的,對於這些人,至少就讓他們能把使用基礎的 for、while 迴圈就能解出來的題好好寫出來。
在這天,有兩個人留下來練習到快十點,非常會把握時間呢~

同好會第二天

第二天是來最多人的一天,在下午時總共有 14 位學生,4位助教及工作人員同時在現場。
這天的主題是「數學」,早上先從「計算幾何」講起,把內積、外積、及他們的基礎應用都講了一遍,正好 CSES Problem Set 裡就有最基本的習題,除此之外我還選了些我以前出過的相關題目也都拿出來給大家練習。
這天大家寫題進度並不如我預期,平均而言同學們在 8 個小時左右只能練習 4 道計算幾何題,所以我就把原本預計下午要講的有關因數倍數及指數幂相關題目移到第三天講。
到了第一天時,大家可能還有些怕生,問問題並沒有那麼踴躍,但到了第二天,大家問問題就變得很踴躍了。好在今天有兩位前 IOI 國手來幫忙回答問題,讓大家有問題幾乎能立刻得到解答。
由於晚上是第六週 TOI 特訓班的模擬考時間,所以今天就讓非 A班的同好會學生在六點之前離開了。

同好會第三天

今天主要講的是因數、倍數與指數幂相關的知識,我原本以為這部分算是相對簡單的部分,因為這些東西大部分學生在數學課上也有學過相關知識。但我發現大部分人再來同好會之前對相關題目也只是似懂非懂,可能寫過類似題,但並沒有清楚知道為什麼這樣寫是對的。過程中也有一些值得描述給大家聽的現象:
有些問題我已經在台上說明給大家聽要怎麼做,但說明完,留時間給大家練習的時候,大部分人都會先嘗試自己想到的自以為正確的方法,寫完後發現通過不了,才來問我說,為什麼自己這樣寫過不了,我告訴他們為什麼後,才來嘗試我告訴他們的方法。並且這些人嘗試的方法都一樣 ????
我想,這現象說明大部分學生都是喜歡自己動腦思考的,而不是台上老師說什麼就照著做,這其實是個好現象,但是我的教學流程這樣設計就有些問題了,反正大家都會想要自己先思考,嘗試自己的作法,那我就沒有必要在大家自己練習前先講解一次,而是等到大家都練習過,有嘗試過自己的想法後,最後再來聽老師怎麼講。所以以後我設計課程時,有時應該視情況,先讓大家自己嘗試寫過後再做講解,而不是大家還沒嘗試時就先講解。
這天還有一個地方有點可惜,那就是沒有找到其他人來幫忙回答學生們的問題,導致今天學生們還得排隊問問題。按照這樣的經驗,大概每 5~6 個人就有一位助教的需求。
今天也有一些同學在晚上留下來練習,我們就陪學生留到晚上快十點。結束了連續三天的同好會。

未來展望

其實這種形式的同好會是參考 接棒程式設計學院 的 歡樂刷題時間:把對競程有興趣的人都聚集在同一個地方長時間的交流。除此之外, AA 競程再加入「提供練習主題及題單」的概念,讓大家有個共同的練習方向及目標,希望能藉此最大化相同時間內的學習果效。
在同好會三天期間,雖然每天都只講了簡單的幾個概念,但可以看出,學生們是真的有在期間學會新東西,有些學生也懂的自己再去尋找更多的例題來練習,相信這幾天對所有參與的同學來說都是個愉快的回憶。
AA 競程也會繼續嘗試各種教學方式,營造良好的學習環境,讓每位學生的努力都能有所回報!TOI 特訓班結束後將是我們 2021 年的春季課程,其中也有線上課程,讓全台灣對競程有興趣的學生們,都能夠接觸我們的課程。