王蕾
編程學習在全球范圍內掀起一陣又一陣熱潮,已經走進信息技術教材。游戲任務驅動是編程學習的有效的教學方法,但學生和教師往往只看到“游戲”,并沒有看到編程教學的本質。
學生喜歡“好玩”的編程
如果你走進學生中間,詢問他們對編程的看法,你可能會得到五花八門的答案。有人覺得編程很難,很枯燥,有人覺得編程很有趣……但面對“好玩”的編程軟件或平臺,大家都愿意試一試。
筆者聯系自己的教學實踐,發現學生這種主觀感受與學習經歷相關聯。他們在小學習慣了圖形化編程和塊語言,到了初中一下子接觸行命令語言,自然是不適應并且覺得有些無趣。
編程的核心不是玩
興趣是學習的重要前提,但學習不能僅靠興趣,任何一門語言深究起來都是復雜且枯燥的。在編程教學中,要關注學生的體驗感和成就感,但如果學生只抱著“玩”的心態去學,沒有思考和總結,結果肯定不會好。那學習編程的核心是什么呢?筆者認為,編程的核心是算法,即解決問題的思路。它是一個從宏觀到微觀再到宏觀的過程。在編程中弄清解決問題的辦法,才能保證學習的結果,也就是培養了常說的“計算思維”。
如何借助游戲學好編程
在2017年修訂的《江蘇省義務教育信息技術課程綱要》中,關于“算法與程序設計”模塊的教學要求是:通過本模塊的學習,了解算法設計的一般方法,了解一種程序設計語言,嘗試利用一種程序設計語言實現簡單的算法;了解利用計算機進行問題求解的基本思想、方法和過程。基于此,很多教師都選擇簡單易用的軟件,降低語言實現的難度,如有的教師以編寫小游戲為任務驅動,在提高學習興趣的同時,激勵學生進行算法的思考,最后讓學生充分體驗編程的愉悅感和成就感。但也有的教師過分糾結課程的趣味性、學生的體驗感以及軟件操作的難易程度。筆者認為,編程教學可以分為三個層次。游戲任務驅動只能作為最低的層次,透過“游戲教學”激發學習興趣,明確學習任務和目標。編程的核心是算法分析,也就是第二層,通過相應的訓練將復雜的大問題分解成更能解決的小問題,并且逐個擊破,同時能厘清問題之間的邏輯關系。編程學習的最高層次是思維和素養的培養。
需要說明的是,算法最終還是要通過腳本實現,將人類語言轉化成程序語言,因此適當地記憶語言命令和熟悉軟件操作也是必不可少的。
基于扣噠世界平臺的編程教學
2020年,筆者了解到一個學習Python的平臺——Code Combact扣噠世界。說起扣噠世界,學生會說它是一款,學習編程的角色扮演游戲。玩家扮演一個英雄,通過輸入代碼控制英雄角色通過游戲中的關卡冒險。但是很少有人能說出,扣噠世界支持多種編程語言——JavaScript、C++和Python,游戲涵蓋了編程基本語法、循環、字符串、變量、方法調用、矢量繪圖等主題。因為看到了這些特點,于是筆者借助它開展了Python語言的大班化教學。
一開始,學生們熱情高漲,每節課一進機房就開始登錄闖關,學習能力強的學生一節課能闖10關,學習能力稍弱的學生一節課也能闖3關,筆者大都是扮演答疑的角色,也會適當提醒他們做一些筆記并且小組互助。有一天,筆者沒有讓學生繼續闖關,而是找出一個中等難度的關卡(學生基本都已經通過),讓他們說說闖關的思路或畫下流程圖,但只有個別學生舉了手,筆者又問幾個經典語句怎么寫,全班學生幾乎都沒有舉手,再看學生的課本上也沒有做多少筆記。原來,學生平時只記首字母,因為輸入首字母后,有很多語句可選擇,不需要一個個字母輸入。這樣,雖然學生看似闖關通過了,也嘗到了成功的體驗,實則并沒有真正學會知識。闖關過程中,學生沒有注重算法分析,只看重游戲化的編程環境,抱著“玩”的心態學編程,卻忽略了虛擬環境與真實世界的聯系,計算思維未得到有效培養。
游戲平臺本身沒有問題,問題出在教師的引導和學生的學習習慣上。那具體該怎么做呢?筆者采取了如下做法:
第一,教學目標明確,闖關任務分層。針對明確的教學目標劃分關卡,如“計算機入門(一)”共有19關,可以分為“基本語法”“循環”“判斷”“變量”四個大的單元和最后的綜合練習。雖然很多關卡都圍繞一個知識點展開,而且很多關卡都是對前一個關卡重點內容的鞏固練習,但是大班課建議每節課只闖2~3關。將其中的概念性挑戰作為學有余力學生可以嘗試的拓展題,不做硬性要求。放慢教學進度,吃透重難點,告別盲目闖關。
第二,授課收放自如,營造濃厚氛圍。既然是授課,就要有導入、新授、鞏固和總結分享等完整的教學環節。每個環節的時間也要充分保障,又要詳略得當,有放有收,有任務有總結。時間從哪里來?就是在控制闖關數量之后多出來的時間。教師可以花時間引導學生對算法進行分析,在分析的過程中要提醒學生把自己想象成“英雄”,結合生活實際考慮問題及解決的方法。學生可以花時間獨立思考和小組討論,畫流程圖記錄算法,用筆記的方式記錄下新學的語句、單詞和自己的心得體會。教師還要選學生代表,上臺演示、講解、分享,營造編程學習的氛圍。
第三,填寫通關日志,及時發現問題。很多學生并沒有養成記筆記的良好習慣,扣噠世界的開發者們曾推薦教師使用“通關日志”。它是參照“PPCA原則”設計的:首先明確目標(Project),知道我要解決什么問題;其次設計算法(Plan),做出計劃;再次編寫代碼(Code),用語法規則寫出對應的代碼;最后優化代碼(Adjust),發現疏漏,尋找更好的計劃,或用更好的代碼實現。筆者認為,學生在學習編程的過程中之所以健忘是因為沒有及時留下學習痕跡,思考和歸納總結的能力也亟待提升。如何直觀地體現這些能力,通關日志不失為一個好做法。筆者在每一關都會下發一張日志,學生把相應的內容記在上面,包括自己遇到的問題或心得體會。下課時所有學生的日志都上交,教師批閱后下節課點評下發。這樣一學期下來,每個學生的日志都能整理成冊。
游戲教學的本質是編程教學,編程的靈魂是算法,信息技術課應加強編程教學,真正鍛煉學生思維和解決問題的能力。游戲任務或平臺只是支架,選擇什么平臺和編程語言也是次要的,最重要的是放眼未來,讓學生所得真正能遷移到未來的生活和工作中。