跳到主要內容區塊
::: 網站導覽

程式設計教學經驗談

策展人:臺北市南港高中 高慧君老師
 
更新時間:2016-01-27

程式設計教學經驗談

       筆者擔任高中電腦教師即將屆滿二十年。這些日子中,最想做的就是發展程式設計教材,一來因為在筆者的學習經驗中,高中自學PE2, Lotus1-2-3等應用軟體都能輕易上手,但想自學Dbase資料庫軟體卻不得其門而入。有幸筆者於大學時進入國立臺灣師範大學資訊教育學系就讀,於大一上、下學期分別學習Pascal和C,過程雖然辛苦,但也苦讀通過了。到了大二修習資料結構、大三修習演算法,課程內容雖然不是很有趣,但大大增進了程式設計的內功。大四的專題研究課程中,筆者選擇了多媒體製作專題,自學Director,製作了系上的多媒體簡介與學校的校慶光碟。這四年的磨練培養了筆者的程式設計能力,也逐漸理解自己為何在高中時無法成功自學Dbase。


       大學後輾轉至南港高中任教。有鑑於筆者的程式設計學習經驗較為枯燥,為使自己的學生有較愉悅的學習經驗,筆者嘗試了許多方法,例如使用了ExcelVBA、JavaScript、Asp、Flash、VB,但都宣告失敗。在這些課程中,學生雖能馬上做出成品,卻缺乏程式設計的內涵。2010年時,得知臺灣師大林美娟教授編製了Scratch教材,並到偏鄉地區教小學生程式設計,學生反應良好;此外,林教授也向筆者推介了當年在SIGCSE研討會中引起廣泛注意的Greenfoot軟體。就這樣,筆者開始接觸了Scratch和Greenfoot,並投入與其相關的教材與教具開發至今。

        Scratch(其程式設計環境如圖1)是以拖曳、組裝積木的方式撰寫程式,而積木的組裝本身就隱含了語法檢查的功能,因此不必擔心會有語法錯誤的問題。其次,Scratch的積木上可顯示中文指令,而官網上來自世界各國的許多作品,其積木式程式碼也都可以被翻譯成中文讓學生觀摩學習,因而創造了無國界的學習環境。最後,運用Scratch可以輕易地完成各式各樣的互動遊戲。對於數位原生的新世代而言,他們玩過了許多電腦遊戲,但並不知道遊戲背後運作的原理。若能讓他們學習以Scratch開發電腦遊戲,應可獲得與玩遊戲截然不同的體驗。於是筆者經過四年的Scratch教學經驗匯整,出版了「Scratch2.X用積木玩程式設計」國小用書。

Scratch程式設計環境

圖1 Scratch程式設計環境

筆者的Scratch著作封面與封底

圖2 筆者的Scratch著作封面與封底 

        Scratch所標榜的特色是低地板(門檻低)、高天花板(作品複雜度高)、牆面寬廣(能容納不同興趣的學習者)。國內雖已有許多國小在電腦課中讓學生學習Scratch程式設計,但筆者認為目前小學生所達到的天花板並不夠高。雖然這份Scratch 12堂課教材是根據筆者在高一實施四年的經驗匯集而成,但筆者認為小學生是有能力學會這12堂課的,因為學習程式設計並不像練啞鈴,年紀大力氣大就比較佔優勢;它反而像是練馬步,需要紮實的基本功。坊間的Scratch用書雖多,但大部份流於勞作性質,欠缺程式設計概念的舖陳,僅只提供詳細步驟讓學生依樣畫葫蘆地完成作品,以致學生雖能完成作品,卻無法同時習得程式設計概念,遑論遷移至其它作品的創作。筆者所編製的Scratch 12堂課中,每個案例都呈現一個重要的程式設計概念。這個知識結構乃是根據筆者近十年來編寫程式設計教案的心得所歸納而成。


       積木式語言雖然容易上手,可讓學生很快地產生成就感,但就像小孩子寫作文,因為認識的國字不夠多,只能寫注音文一樣,終究只是過渡期;當他們認識的國字夠多時,即應擺脫注音文的寫法,因為豐富的文字能讓他們表達更高層次及更多樣化的想法。同理,積木式程式語言也只是輔助表達的工具而已,若能由積木式程式語言提升至文字式語言,將可大大增進他們的程式設計表達能力。此時,Greenfoot就是一個很好的選擇。

        2011年在筆者研究Scratch一年之後,又想起林美娟教授推介的Greenfoot,於是開始在網路上搜尋相關資料。記得筆者剛大學畢業時,物件導向程式設計興起,筆者曾嘗試自學Java,但發現大多數Java書籍都是前四章介紹語法,第五章開始才講解物件導向概念。語法本身相形容易,但第五章之後的物件導向概念非常抽象,令人難以理解如何用它來設計程式。這個困惑在筆者研究了Greenfoot之後,方才豁然開朗。那種感覺就像以前是在非母語的情況下學英語,只能死記一些單字與文法規則,而在接觸了Greenfoot之後,則像是在母語的環境中自然而然地學習英語。基於筆者透過Greenfoot自學物件導向程式設計的成功經驗,也就試圖將自己的成功經驗推廣到學生身上,於是在101學年度進行首次的嘗試。筆者將學期的前8週用於講授Scratch,然後銜接8週的Greenfoot,結果發現學生從積木式語言過渡至文字式語言有著很大的鴻溝,於是筆者決定暫停講授Greenfoot。直到104年10月Greenfoot推出3.0版,強化了編輯器的許多功能,才又讓筆者燃起捲土重來的熱情。

       舊版的Greenfoot編輯器直接讓學生寫Java程式,使得學生往往在分號、大括號等語法細節之間困擾很久。新版的Greenfoot 3(圖3)強調frame-based editing,它將分號和大括號去除,並且會將每個程式區塊間的程式碼自動標示與縮排;此外,使用者只須鍵入關鍵字首,即可叫出相關之程式結構框架,供使用者填補細節。以選擇結構 if 為例,使用者只需鍵入i,系統就會跳出if(條件式)敘述和它的程式區塊框架。從Greenfoot官方消息得知,他們為了這個新版的功能奮門了四年。筆者的感想是:Scratch和Greenfoot就像是學術界研發的新藥,而學校教師與其埋首在自己的小世界裡土法練鋼找解藥,還不如跟上世界潮流脈動,向外尋求最好的解藥。可惜教育界習於故步自封,加以教育問題多如牛毛,往往需要很多時間與努力,才能促成些許改變。
Greenfoot程式設計環境

圖3 Greenfoot程式設計環境


       就程式設計而言,筆者是有其內功的,但是就是苦無方法在高中生面前展現出內功,當我的程式設計教學之路遇到Scratch和Greenfoot就好像是練武之人被打通任督二脈一樣,他們就好像是武功招式,可以展現出筆者程式設計的內力。傳統的程式設計教材都是計算導向的內容,因為早期電腦是用來做計算,可是當我們的學生使用電腦時,並不是為了做計算,而是為了做互動,要跟同學聊天,跟玩電動。所以在Scratch和Greenfoot中寫程式都是為了讓角色動起來,它提供一個微世界讓學生可以在其中學習,所以寫程式不再是為了做計算,而是為了做互動。


教學寶庫:
程式設計邏輯訓練-scratch https://www.junyiacademy.org/new.../programming-scratch-1
教育部校園自由軟體推廣 ossacc.moe.edu.tw/modules/tadnews/index.php?nsn=3774
教育百科:
程式設計 pedia.cloud.edu.tw/Entry/Detail/?title=程式設計
教育大市集:
scratch 積木程式設計 https://market.cloud.edu.tw/resources/web/1590086




高中
資訊科學