程建娜 天津市濱海新區(qū)塘沽教育中心
隨著信息技術學科核心素養(yǎng)的提出,“計算思維”就像一盞指路燈,定位了學科價值,也讓我們看到了學科發(fā)展的方向。但是在研讀《普通高中信息技術課程標準(2017年版)》(以下簡稱新課標)中,筆者發(fā)現其中對計算思維的概念描述還是比較抽象,雖然明確指出“計算思維是個體運用計算機科學領域的思想方法,在形成問題解決方案過程中產生的一系列思維活動”,但是,計算機科學領域中的思想方法有哪些、如何發(fā)展學生的計算思維等諸如此類的問題仍然困擾著許多一線教師。下面,筆者以最近兩年與多位一線教師一起設計的一節(jié)課——《基于枚舉算法的問題解決》為例,從“同課異構”的角度分析它的三個版本設計,并分享在開展計算思維教學過程中的一些理解和認識。
第一版的教學設計源自《窮舉法與問題解決》(舊版中國地圖版高中信息技術選修1算法與程序設計)一節(jié),由塘沽十三中蔣老師執(zhí)教。蔣老師在設計這節(jié)課時還沒有接觸新課標,所以教學思路仍沿用任務驅動式教學,通過完成“編程打印100以內的質數”任務,學習新知。具體的教學過程如表1所示。
表1
本課例依據“提出任務—分析任務—完成任務”的任務驅動思路組織教學,將枚舉算法的學習融入到任務實現中。但由于“打印100以內的質數”的問題求解比較復雜,需要經歷兩次枚舉,所以教師在分析任務時主要考慮該任務的算法設計過程,學生在編程時大部分精力也都耗費在循環(huán)嵌套代碼的書寫和調試上,很少再去思考任務與枚舉算法的關系。這樣,枚舉算法只在提出任務時被明確,隨后就“束之高閣”,其思想在問題解決中的實際價值在課堂中沒能得到足夠重視。
2018年11月,在天津市高中信息技術課改培訓的案例展示活動中,筆者結合新課標的學習,對這節(jié)課進行了第一次迭代處理,試圖反映一些計算思維培養(yǎng)的痕跡。迭代后的設計重點關注學生對枚舉算法思想的理解,因為筆者認為要培養(yǎng)學生用計算機科學領域的思想方法解決問題,首先要讓他們真正認識并理解這些思想方法的本質。修改后的教學過程如表2所示。
表2
第二版的教學設計是在原版基礎上進行的修改,課堂任務沒變,但教學思路突出了對枚舉算法思想、方法和本質的理解,并將其貫穿于分析問題、設計算法、編寫實現等問題解決全過程。同時,加入算法效率的學習,幫助學生理解優(yōu)化算法的必要性,整個學習相對比較系統(tǒng)。
在實際教學中,筆者和多位一線教師也感覺到上面兩個版本設計的任務較難,內容較多,符合舊教材選修1《算法與程序設計》的教學需求,但直接遷移到新教材必修1《數據與計算》的學習中,難度會較大。
2019年9月,南開中學濱海生態(tài)城學校的李敏老師參加全國高中信息技術優(yōu)質課展示交流活動,筆者和李老師借此機會對這節(jié)課進行了第二次迭代,聚焦如何設計問題解決活動,發(fā)展學生計算思維,落實學科核心素養(yǎng)培養(yǎng)。在擬定教學設計時,我們結合新課標的內容標準和學業(yè)要求,考慮活動當地學生的具體學情(學生沒有學習Python語言,不了解算法流程圖),降低了課堂中學生編程的難度,不強調學生編寫完整的程序,而是采用半成品的程序語句填空方式,重點突出對枚舉算法本質的學習,通過“解密唐朝詩人之間關系”的項目研究,掌握枚舉算法求解問題的思想和過程。再改后的教學過程如下頁表3所示。
這次迭代設計,我們在項目任務上做了重構,通過解密唐朝詩人關系,提供給學生一種基于數據研究唐詩或其他內容的視角,感受用計算機解決問題的特點和方法。本課在第六屆全國高中信息技術優(yōu)質課展示交流活動中被評為示范課,李敏老師也在閉幕式上受邀做說課展示。
《基于枚舉算法的問題解決》一課的三個版本設計(如下頁圖2),清晰地展示了筆者和多位一線教師對計算思維教育從初識到探索的過程,當然,第三個版本并不是終點,還有很多需要改進的地方。迭代的過程是不斷突破已有框架的定勢進行成長的過程,也是筆者用自己的方式探索計算思維教育、理解基于學科核心素養(yǎng)的信息技術教學的過程。
首先,筆者認為計算思維教育不是對過去信息技術教學的完全顛覆。例如,三個教學設計,都強調了讓學生經歷“人工枚舉→計算機枚舉”的過程,這不僅能夠加深對枚舉算法思想普適性以及模式的識別和歸納,還能幫助學生更好地理解計算機解決問題的優(yōu)勢。同時,三個設計都在用流程圖幫助學生梳理問題解決的過程,顯性化地呈現思維過程,加深學生對算法步驟的理解,并且都在課堂最后關注了知識的歸納與方法的遷移,引導學生舉一反三解決更多問題。因此,在探索指向計算思維的教學時,可以先反思以往教學中“成功”之處,對照計算思維的特點對其進行繼承和強化,挖掘其中深層價值并在教學中加以突破。
表3
圖2
其次,培養(yǎng)學生的計算思維不是簡單地回歸“編程教學”,而是讓學生經歷完整的問題解決過程,充分參與到分析問題、模式識別、數據抽象、算法設計等環(huán)節(jié)中,不能只關注編程代碼是否編寫運行成功。很多注重實踐的教師和學生會認為前者相對比較“枯燥”,沒有動手過程,不如后者有具體作品或程序的“成就感”,但對學生發(fā)展而言,設計出問題解決方案更具有長久價值,因為編程的平臺和軟件可以不斷替換,但其中問題解決的方法卻具有一定的“穩(wěn)定性”,能夠內化為思維幫助學生更好地發(fā)展、更有效地認識世界。新課標在必修1中加入了“算法與程序實現”內容,并不是要讓每位學生通過學習成為編程專家,而是讓學生通過經歷用計算機解決問題的過程,理解信息社會思考與問題解決的獨特方式,進而具備數字化勝任力,更自如自信地生活。
再次,教學中要結合具體學情,嘗試從信息技術專家解決問題的視域來設計教學任務或項目,關注數據驅動下的真實問題解決,讓學生在參與問題解決中,理解如何將現實問題轉化為計算模型加以解決,從中理解人與技術與社會的關系。學生參與解決問題的過程,就是其知識技能學習和思維發(fā)展的過程,在此過程中,需要注意的是,如果導入的問題情境比較大,可以先引導學生聚焦小范圍問題的求解,提供給學生一種分解或簡化問題的思路。當學生完成對指定的“某個問題”求解后,教師要順勢引導學生進行聚類處理,思考該方法可以解決的“某類問題”,再擴展到“可以解決的問題”,由此實現真正的方法內化,進而發(fā)展思維。
以上只是筆者與多位一線教師以枚舉算法作為切入點,對《基于枚舉算法的問題解決》一課進行兩次迭代設計的實踐體會,實際上,有關計算思維教育的認識仍在不斷發(fā)展中,計算思維的培養(yǎng)是一個長期的潛移默化的過程。作為信息技術教師,要將這種探索貫穿到整個教學過程中,在學習中實踐,在實踐中反思再改進,以實現自身和學科的迭代發(fā)展。