105學年度程式設計課程的規劃

底下是我對105學年度的程式設計課程的規劃,請同學們給我一些建議,讓這門課可以更適合大一的新生,並且達到「讓修課同學都『會』寫程式」的目的。

在講規劃之前,要先說兩件事,請耐心看完這兩個小故事。理由是,看完後,你會更瞭解我做這些規劃的理由,並且比較能站在老師的位置來思考整個規劃。

好啦,那麼我們開始吧!這兩件事是:

  1. 周信宏老師在FB社團的po文(如下圖)。內文的大意是今年全國程式設計比賽中,高雄第一科大今年異軍突起,幹掉了傳統強校中正及嘉義大學,奪得了第一名。分析原因,就是團隊中有幾位同學很努力的練習,練習量是達到了平均一天要練7題的鬼神數量。有努力,有回報,就奪得了第一。周老師這篇po文的目的,是要勉勵同學們,並傳達成功,是不斷努力才成就的。

類似這類的心靈雞湯,不只周老師會po,我也會po。目的就是只有一個,那就是激勵同學們。不過這類心靈雞湯有個問題,那就是只能激勵原本就「很有」動力的同學,沒什麼動力,或是動機很弱的同學,那就完全沒有用了。

再談談第2件事:

2. 有位研究人員想知道如何讓大學生樂捐食物給需要的人。要知道大學生是很忙的,而且社會化已經很深了,普通的道德勸說要說得動大學生們,可不是件容易的事。

研究人員把大學生分兩種,一種叫「聖人」,就是平常就對人慷慨,是很有可能會捐食物的人。另一種人叫做「混蛋」,就是那種一毛不拔的人。研究人員發信給這兩類的人,說明在下週時,有一班食物列車會開到校園中,鼓勵他們帶罐頭食品去那兒捐輸。

結果如何?所有的混蛋都無動於衷,這十分合理。但只有8%的聖人捐了食物。他們可是平常就樂善好施的人種,這8%也太低了吧!

結論

這兩件事都有一個共同的特徵,那就是某一個人(或組織),想要說服另一群人,鼓勵他們完成某件事。以周老師為例,他希望鼓動大家,多多練習,追求更高,更好的能力。以研究員為例,他們希望勸誘同學們樂捐食物。

但看起來好像成功的機率都不高勒…這是大家不想成就卓越嗎?這是大家不想樂善好施嗎?這是大家不想做個好人嗎?

不過呢…

在研究人員那個案例中,他們後續又做了一件事,把聖人的捐輸率題高了5成,達到46%。這還不是最讓人吃驚的地方,他們居然成功地把混蛋捐食物的比率,拉高到25%。這是個會讓人下巴掉到地上的結果。類比到我們課程中,如果能讓打死都都不交作業的同學中,有25%突然發奮起來,做了作業,那是多麼高的成就!

所以研究人員做了什麼?嗯,他們只發了一封訊息,訊息中提供了一個更為「明確」的指示。那就是跟大學生說,食物列車是那個時候到(幾點幾分),需要食物的明細為何(豆類要多少,脆瓜要多少),訊息中附了一張地圖,指明食物列車來的地點,還有請同學們事先想想,要如何規劃路線,才不會走冤枉路。

研究人員說,這就是「明確地路徑」所帶來的好處。這讓我反醒,「動機」,還有「知道怎麼做」這兩件事,那個重要?從前我都以為,我們學生之所以不努力,那是因為動機不足。反正學生就是混,上大學就想玩。學習這件事,等大四再說吧!

但捐食物的例子讓我想到,問題可能不在動機。我們的學生都想卓越,都知道應該要努力,動機可能是我們學生最不缺的東西。但…我們「不知道」要怎麼努力才有效。

所以,我想做的事,規劃一個明確的架構,讓同學們可以遵循,沿著這個道路前進,達到我們所設定的目標。

目前我對下學期的規劃有:

  1. 先教Scratch: Scratch似乎很能幫助同學建立起基礎的程設概念。這有這種想法是因為底下這個文章的影響。

2. ITSA月賽,還有CPE將由「自由參加,並且加分」,改為「一定要參加」。我個人的理由有兩個,一個是學習的回饋,沒有回饋的話,是不可能學好任何事的。而ITSA以及CPE是兩個不錯的回饋機制,讓同學們知道自己到達了那個程度。另一個是看看外面的世界,長榮的池子太小,很容易讓人心生安逸,參與這些檢定,是讓同學們與校外世界比較的好時機。

3. 持續推動TQC+ C語言認證。這是個加分的誘因,致少會讓同學們更努力一點。

4. 上課切廣播:我知道這個行為很鬼畜,但我真的無法對抗FB,NBA或MLB季後賽(太弱了,不好意思),所以只要用廣播的方式對抗了。下圖是系上一位畢業學長的遭遇。他現在在研究所攻讀碩士,因為指導教授有事,所以幫忙他代課。結果他發現課堂上有同學在玩LOL…。

說實話FB這類的服務都太會讓人分心了,雖然我們都覺得我們是可以「一心多用」,但一心多用的結果如何,我想大家心知肚明。如果有唸過OS的話,那就會知道,context switch的代價是很高的。即然大部分的同學在課堂上都無法抗拒FB、遊戲…等誘惑,那只好先由上課切廣播下手,這樣致少可以逼同學們專心一點。

要如何對抗LOL呀!

5. 免死金牌機制:ITSA月賽解出三題,CPE解出兩題,就可以直接通過的機制,還是會維持。但名字會改一下,免死金牌聽起來怪怪的,改成S級妖怪證書比較合理一點。

6. 不算點名成績:以前我的課點名成績很重。這次不玩這個了。要就達到「會寫程式」的目標,然後通過!不然就下學期重來。如果真的想看季後賽,或是xxx直播的話,不要來上課就好了。真的有本事的同學,就要這樣帥氣。

7. 學長姐的導師制:這部分的新加的。過去我課堂上我並不會對重修的學長姐有任何的要求,甚至到了放牛吃草的地步。這學期仔細思考了一下,我覺得這樣不好。一來是有來修課的同學應該一視同仁才對,只放心力在大一同學身上,但不照顧學長姐,這有違公平原則。第二個是有些學長姐知道我不會管他們,所以上課時該練習也不練習,看FB,滑手機的所在多有,這種破窗效應會造成大一同學有樣學樣,對於課堂管理不是很好。我想我下學期應該會實施分組,並且讓重修的學長姐擔任組長且執行講解的任務,我想教學相長,應該會對學長姐們有很大的幫助。另外,由學長姐來講解某些課程,可能會比老師來講述,更讓學弟妹們可以接受。

8. 課堂筆記:這是我做不好的地方,上學期還有推動,下學期就有點無力了。新的學年我想採用「共筆」的方式來推動筆記的運作。我會這樣想主要是因為這篇文章。文章中說到「 學習最好的方法, 就是去教別人, 所以當公司鼓勵員工去『寫作(例如寫Blog)』, 擔任講者, 貢獻opensource, 無形中成為最便宜與最有效的訓練」

要逼系上同學都去寫blog可能有點難度,但利用HackMD之類的工具做共同筆記,且你的筆記可以幫到班上另外的同學,應該入門的難度是大大的降低,而且是會對學生大有助益的。共筆的內容應該會包含作業的講解,以及課堂上的筆記。

9. 專案:上學期有寫過猜數字,還有寶石方塊。但下學期一樣沒有持續。同樣是我不確定這樣寫專案是否可能幫到同學們。最近在看「創世神」(minecraft)與Python的相關資料,如果可以的話,可能會用在之後的課程上

10. 要教那個程式語言?還不確定…總之C、C++或是Java三選一。會選這三個的原因是目前解題比賽所使用的語言就這三種,現實所逼,那也沒法子。

這樣真的會有效嗎?不知道…。但我希望某種程度來說,能讓願意follow這個系統的同學,真的有機會學好程式設計。

這個方案無法逼同學們主動,如果可以的話,我也希望有那種「攜帶他人命運」的能力,這樣上起課來就輕鬆多了^__^。不過在這種黑科技還沒發展出來以前,就用這種方法囉。

攜帶他人的命運

請學長姐們,以及修過課的同學們給建議囉。

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.