Py(thon) Route直直行
Email:Lct4246@gmail.com
FB:http://gg.gg/TedLeeFB/
歹路金拍走,不用驚,擱向前行(台語)。
108課綱之科技領綱
今年(2021)翰林出版社獨樹一格,在九上資訊科技科投入一顆強大的震撼彈:編入一章12節課的Python編程(我們暫借此詞語,因為通俗的程式設計(programming design)一詞太過形下而強調。「技法(skills)」。另一方面,運算思維(computational thinking)又太形上而有摸不著邊際之感)。有人一聽到國中生要學語法程式立刻心生疑問:新課綱不是規範第四教育階段(七到九年級)宜採積木式的視覺化程式設計工具(visualized programming tools)教學嗎?我們翻出科技領綱(https://reurl.cc/Krl7Rj ,第10頁)來細究它是怎麼說的:中學的程式設計:包含程式設計的概念、實作及應用。「可」採用視覺化程式設計工具,並搭配演算法進行教學。
就字面上來說,「可」採不需等於「必」採,也就是說視覺工具是個建議值罷了。就教學面向來說,很難有一套學習法就能適用於所有的學生。畢竟教學實施的對象是「人」,而鍾鼎山林各有所好啊!
- 編程共創:網路是一個便於分享與交流的平台,利用它的分散多工的環境洽好適合異地協作編程來共同創作專案。
- Python體驗:在我們備完翰林版國九資訊科技第2章的從Scratch到Python後寫下《從軟體工具提升到資訊系統觀的12堂Python專題製作之旅:以1A2B為例》(https://reurl.cc/L7n0ax) 一文,接著就有同行前輩問道:上完這套Python課程模組後,能保證學生們都一定會寫程式嗎?這一問,勾起我們最深的信念:學習編程 ≠ 程式設計(精準來說是邏輯思考訓練),也不意味著人人將來都要成為程式設計師。所以,就如同芬蘭的孩童游泳課(https://reurl.cc/NZxoDn)一樣,設計各種遊戲來誘發小朋友不怕水,並能在水中潛水遊玩。因此,這短短的12節課並不是要教出未來的程式設計師,而是希望學生游藝於文字式編程之中。
- 雲端工具運用:共用、自動儲存、免安裝的輕量客戶端(thin client)操作,把所有非敏感性資料存在雲端上以便於隨時隨地(anytime anywhere)取用的概念對現行的學生是陌生而不熟悉的(就筆者近十年的教學經驗觀察)。雲端工具與平台的學習和程式專案的儲存,也是資訊科技的核心能力之一,尤其對於成長在這個網路世代的莘莘學子而言,這樣的雲端環境很可能就是他們畢業後的工作生態,尤其處在在世紀大疫情傳播感染的浩劫威脅之下。
編程基礎
縱觀各類程式語言(programming languages)的基礎結構,不外乎是循序(sequential)、選擇(selective)與重複(repititive)。然後才是模組化(modularized)程式,再結合陣列(array)資料結構(data structure)往下延伸。而Python亦然。換言之,初學程式設計要學的就是這些程式語言共通的原理、原則。
Python教學信念
筆者在某私立貴族私校任職期間,曾經教授過小六Scratch動畫設計(因為私校的勤管嚴教校風,資深資訊老師共商不宜教授遊戲設計)一年。上完一學期後,就有學生聽聞要續上Scratch而顯無奈。而翰林版教材中,七、八年級已上了整整兩年的Scratch了,學生們的倦怠感已然叢生,編程工具是該進化了~。
此外,當代能真正拿來開發應用軟體的程式語言仍以文字語法式為主。要嘛就升上10年級再接觸,要嘛就早早接受這必要之惡。
其實,程式語言也好,程式設計也罷,編程教育真正要訓練的是邏輯思維,程式只是表現想法的一個載體(carrier)──工具各有巧妙不同,教學存乎一心而已!
IDE(Integrated Development Environment)工具
編寫Python程式的免費Windows IDE甚多,在表1中我們將就幾個面向來分類它們的選用考量,並詳細說明我們最終採用Replit的演進過程。- 編我共創 → Colab、Replit
- Python體驗 → Colab、Replit、IDLE、Spyder、MS Visual Studio 2019、VS Code、Thonny
- 雲端工具運用 → Colab、Replit、VS Code
最後,我們選用Replit這套老牌IDE工具。截至目前為止,至少在筆者教授的9個班約2xx人次中操作都很穩定。
學習路徑(learning routes)
- JS積木(圖2) → Python:從JavaScript(JS)積木入門(https://makecode.microbit.org/#editor)可先不管文字式語法(syntax)的繁瑣規範。待有編程基礎後再進入Python的高階程式語言。
- JS積木 → mP積木(圖3) → Python:在JS積木和Python中插人micro Python(官方的正式名稱叫static python,https://makecode.com/language。它是Pyhon語法的簡化版加上micro:bit開發版硬體控制程式的綜合體)為了方便起見,本文皆用mP來稱呼)做為中介的過渡站。在MakeCode平台上,mP的操作是拖曳出積木就會產生對應的語法程式,讓Python的初學者可以在進入純文字程式撰寫前有一稍稍的緩衝銜接。
- mP積木 → Python:由mP積木自動產生語法程式的輔助開始熟悉mP的語法規則後,再進入Python的編程世界。
- Blockly積木 → Python:此類較著名的Blockly積木工具有 Edu Blocks(https://app.edublocks.org/ )和Blockpy(https://think.cs.vt.edu/blockpy/blockpy/load )。其中,只有後者具積木和語法同時互轉的功能。
- Python:純文字語法的編程學習。
- 流程圖 → Python:國內已出版百餘本各類程式語言專書的陳會安老師(https://tinyurl.com/yfk6ym82)所撰寫的「看流程圖寫Python」工具fChart(http://hueyanchen.byethost10.com/?i=1),是著眼於本國教育的地域性設計而成的「編程邏輯」訓練工具。筆者曾向大師請益,陳老師是這樣語重心長的說道:
教學法(teaching methods)
筆者以為,中學編程教學最大的挑戰是:由資訊專業走入通識教育。本來文法商…等等資訊非相關科系是一輩子也碰不到編程的。然而,自從科技以日進千里的躍進之後,編程思維竟儼然演進成未來公民必備的素養之一。因此,編程教學法就變成格外的重要了。本節將討論下列兩種常見的編程教學方式:
- 拆解法:教學者事先將程式做細部拆解。每次示範一小塊子功能。最後再組成完整的程式。
- 範例式(learning by examples):以小範例練習積累為主,不介紹深入的程式語法細節。強調從做中學習。
文字形語法常見錯誤類型
筆者就目前正在教授九年級Python程式設計12堂課的經驗,整理出下列幾種學生常見的語法錯誤類型:註:除了上述各類的程式錯誤外,現今國內資訊教育最大的困境在「打字」。筆者目前這批授課學生已九年級了,'、%、[ ]、數字鎖定鍵NumLock、倒退鍵、Del鍵、小寫i和小寫l不分、Ctrl+c、Ctrl+v…仍有不少學生很不熟悉,甚至找不到位於鍵盤何處而要舉手尋求協助。更嚴重的是,中/英打混合輸入時,全/半形不會控制。
英文菜菜子
就編程英文而言,從圖8可以歸納出四個發生點:
- 英文UI(User Interface,使用者界面)。
- 程式語言的英文語法。
- 程式行間的語法錯誤提示。
- 編譯錯誤訊息(error message)。
沒有留言:
張貼留言