2015年12月22日 星期二

043.來自教學現場的程式教育感想

拜讀蘇文鈺老師寫的文章後,心中的感想很多,所以也試著從現場教學教師的角度來說說程式教育的一些狀況。
在蘇老師的文章中提到幾個問題,我簡單整理如下:
  1. 學習資源的差異性:高社經與低社經學童能獲得的資源可能不一。
  2. 師資問題:有程式撰寫經驗且能教得不錯的程式設計師未必願意投入程式教學行列
  3. 如何設計一門讓學生有興趣的程式教育課程?
  4. 程式教育課程的性質(體驗?通識?)與授課時間長短?
  5. 程式教育的內涵(寫程式還是解決問題?)?
我想先就老師提出的問題,說說我自己的想法。雖然我的想法沒有甚麼代表性,但是經過實做證實最少在現場是可行的。因為在台灣社會對於程式教學還不是那麼重視時,我們學校在102年就引進了code.org的完整課程,並且也全面的實施(除了有一班導師自己教授的班級之外,有七個班實施),今年也在原有的基礎上再加入了將code.org概念加以延伸的專案課程以及軟硬整合應用課程。

首先,我先來說說學習資源的差異性。以現今的教育體系來說,學校真的是低社經孩子一個很重要的支柱,因為除了學校之外,低社經的家庭有時候囿於接觸層面,有時囿於經濟壓力,讓孩子接觸課業以外的活動真的是一種奢侈。所以在當初規畫課程時,我便決定要將它放在正式課程中,讓每一個孩子都可以上到這樣的課,也因為我們將這些資源放入學校課程規劃中,這種資源不均的狀況可以降到最低。當然,還是會有家長會在家中另外指導,那個就不是我們管得到的範圍了,不過最少在學校,我們會給每個孩子一樣的學習環境與資源,甚至透過適當的分組給跟不上的孩子更多的協助。

其次是師資的問題。我自己支援教育局的時候曾經普查過全市高中以下學校的資訊人員,幾乎有1/3以上是非資訊及理工相關科系畢業的師資。去年本校在找代理老師時,發現教師甄試資訊類備取名單中非資訊相關科系畢業的師資比例也是很高。不過,我覺得只要願意學習,門檻不要太高的專業課程應該還是可以教授的。就像蘇教授說的,如果我們把這門課當作是一門技術,那麼,師資的要求必定會高。但是如果當作是一些基礎認知課程或是通識來教導一些邏輯思考的應用,那麼這個門檻應該就會低很多。即便如此,如果我們國家認真地看待程式教育,那麼在師資部分最少還是要做到:
  1. 在職教師需要提供完整教材與訓練
  2. 在教師甄試加考程式教育教學必要科目
在上面我提到的提供完整教材是個很基本的要求,而且絕不能隨意為之。不然就會像寫程式的人常常說的"技術債"般,總有一天要為現在的便宜行事在日後付出代價。至於在訓練方面,也不是辦個研討會將教材說明一下就可以了,因為在這類的課程中,老師引導是否得宜對學生的學習會產生很大的影響。因此,最好是要有完整教材教法的課程,最少讓使用新的教學課程的老師,不會手足無措,最低的程度是可以跟著做。當然如果老師願意更進一步,鼓勵有意願的老師成立共備社群更是一種可以提升教學品質及教學支援的好措施。

至於新進教師部分,也可以透過適當的甄選機制,讓考生將注意力放在程式教育上。雖然不敢說效果一定會很好,但是只要我們逐步調整、改進,總是比什麼都沒做來得好,也更能找到我們要的教學師資。

第三點我們來談談如何設計一門有趣的課程,以便提升學生學習動機。在我一開始進入程式教育時我選的是SCRATCH,因為我去上過研習,也實際做了一下,發現真的不難,而且還蠻有趣的。不過自己做是一回事,教學生又是另外一回事。做到後來,感覺學生對於專案式的應用很難掌握,加上我自己對於SCRATCH教學方式的瞭解也不夠,搞到後來自己教得有點煩,學生學得也不是那麼有興趣。

後來我發現或許該先想想希望在這門課程中讓學生學得什麼?目前的工具自己是否有辦法呈現我們要的結果?認真思考後我發現,透過SCRATCH大概沒有辦法完成我要的目標,所以當下就捨棄了SCRATCH,找到code.org的K-8課程來上課。因為這個課程具有以下特色
  1. 完整的教學指引(英文)
  2. 關卡有趣,關卡數也夠多,關卡中的人物是學生熟悉的
  3. 學習目標和關卡互相對應
  4. 教導邏輯思考,即便不是程式寫作者也可以教(就像我)
  5. 提供教師工具讓我掌握學生狀況
  6. 學生過完關那張證明很吸引人(K-8真的有點難喔!那和HOUR OF CODE不可同日而語)
重點是,學生回家竟然會主動練習,而且也把家長拖下水(有些家長是賭上自己的尊嚴撩下去了,多數家長也很支持這個課程),那時我便知道,我找到一個好工具了。所以我想,如果真的要上這類課程時,每個老師都應該要找到一個自己很喜歡,又能夠教出符合自己教學目標的工具,這樣子就能設計出一門有趣的課程。所以在這部分,主推程式教育的單位應該也要廣納各式程式教育的教法,只要符合課綱,都要盡量地提供給老師,至樣比較能滿足師資的異質性。

至於在時間上的規劃,我覺得可長可短。不過如果僅引入HOUR OF CODE,會覺得有點可惜,因此我也才會寫下這篇文章來思考HOUR OF CODE之後的課程規劃。如果我們只是把HOUR OF CODE當作一個活動,那沒有問題,確實是一個好活動。但是如果思考學生使用過HOUR OF CODE後的延伸學習,那麼便該更慎重的規劃。

至於我們學校的時間規劃,我在這個學期除了原有的102學年上學期課程規劃之外,又加入了一些新的教學設計與教學方法。包括ABC分組-讓需要協助的同學隨時有人可以詢問、利用google classroom出題、讓學生將學過的概念透過文字表示出來、也一直在課程中問問題來挑戰學生的思考。時間上,我也將課程擴充為1個學年,因為光是code.org的K-8課程,官網就建議要跑20小時左右,再加上這一次我還要再次挑戰SCRATCH教學,我希望讓學生利用自己從code.org 學到的運算式思考概念來分析幾個簡單的SCRATCH專案,並且建立他們自己的思考流程。我還另外加上了Arduino的規劃,只是想讓學生知道,可以簡單寫程式控制硬體,或是從硬體中擷取環境數值來輸入軟體中。(最近我們買了一些PM2.5的傳感器,希望讓學生從實做中發現環境變數的差異,不過arduino的傳感器控制比較技術,如果沒有相關師資,建議可以略過)

最後我來說說程式教育的內涵。我想我的程式教育內涵其實蠻簡單的,我想教小朋友讀問題、拆解問題、思考解決方法、做出自己解決問題的一種模式與工具。如果用學理來說明,就是學會CT,以下這段文章寫得很好

美國知名的電腦科學家 Jeannette M. Wing,曾經寫了一篇很有名的文章:<Computational thinking and thinking about computing>,詳細敘述了何為CT。而 Google 這間極度重視資訊人才的軟體巨擘,也不遺餘力地推動CT教育,並提出了四個CT核心能力:
拆解 (Decomposition): 將一個任務或問題拆解成數個步驟或部分。Breaking a task or problem into steps or parts.
找出規律 (Pattern Recognition): 預測問題的規律,並找出模式做測試。Make predictions and models to test.
歸納與抽象化 (Pattern Generalization and Abstraction): 找出最主要導致此模式的原則或因素。Discover the laws, or principles that cause these patterns.
設計演算法 (Algorithm Design): 設計出能夠解決類似問題並且能夠被重複執行的指令流程。Develop the instructions to solve similar problems and repeat the process.
資料來源:http://blog.orangeapple.tw/posts/what-is-computational-thinking/


不過對一般的老師來講,上面這個寫得太抽象,因此我再引用另外一篇文章,裡面提的東西就比較親和一點

想要潛移默化的教導孩子 coding 的父母,可以遵照以下 4 個步驟:
● 闡述
請孩子們先將事情拆解後一一分析,直到重點出一個可以理解的概念或動作。
● 確認
詢問孩子如何將這個概念具體化,並應用在現實世界中。
● 調整
請孩子將概念中的缺陷一一挑出並剔除掉,此階段非常的重要,挑錯的同時父母必須謹記要順便顧及孩子的信心,讓他們知道並不是他們的概念不好,而是有些細節會導致成果與我們預期的不同。
● 探索
請孩子稍微模擬不同的結果帶來的改變。



至於程式課程的功用就是讓我完成這個目標。如果我們擴展到整個資訊教育來思考,那麼我的思考是我想讓我的學生上完我的資訊課後有比較完整的資訊素養。
這些素養包括

  1. 認知(資訊環境、變遷、資訊工具的功用、造成那些改變)
  2. 情意(可以幫助誰?可以造成那些改變?自己可以做些什麼讓周遭更好?)
  3. 技能(行動裝置、閱讀、軟體應用、軟硬體整合、資訊設備的安全防護)

重要的是這些課程可以用於生活,甚至是作為接軌日後的學習應用,也就是說,我希望的是學完我們規劃的資訊課程後,學生可以學到一種 「可以帶得走的能力」,如果真能如此,那就是我的課程最大的成功了。




沒有留言:

張貼留言