趙劍曉
摘要:2022年4月《義務(wù)教育信息科技課程標(biāo)準(zhǔn)(2022年版)》發(fā)布,提出將“算法”作為信息科技課程的六條邏輯主線之一。所謂算法本質(zhì)上是一種問題解決的思維模式。本文以算法思維解決問題的思維模式為基礎(chǔ),建構(gòu)出基于算法思維的初中Python教學(xué)模式,并以“猜數(shù)游戲”為例展開具體教學(xué)實踐,得出了在初中Python教學(xué)中要關(guān)注思維過程而非知識技能,要關(guān)注問題解決方法而非結(jié)果。
關(guān)鍵詞:信息科技課程標(biāo)準(zhǔn);計算思維;算法思維;Python教學(xué)
中圖分類號:G434? 文獻(xiàn)標(biāo)識碼:A? 論文編號:1674-2117(2023)11-0044-04
《義務(wù)教育信息科技課程標(biāo)準(zhǔn)(2022年版)》(以下簡稱“新課標(biāo)”)明確了義務(wù)教育階段信息科技課程的六條邏輯主線,分別是數(shù)據(jù)、算法、網(wǎng)絡(luò)、信息處理、信息安全以及人工智能。新課標(biāo)同時提出信息科技課程的四大核心素養(yǎng),其中,培養(yǎng)計算思維的本質(zhì)是培養(yǎng)學(xué)生抽象、分解、建模以及算法等一系列思維活動。[1]可以說,“算法”是新版義務(wù)教育課程標(biāo)準(zhǔn)中的一個關(guān)鍵詞。王榮良教授認(rèn)為,算法本質(zhì)上是能將一個問題分解成小問題并簡化解決問題的一種思維方式。[2]所以,在一定程度上可以認(rèn)為算法思維是一種問題求解思維,而對序列、分解、轉(zhuǎn)換、條件、循環(huán)等計算機(jī)基本概念的學(xué)習(xí)是算法思維以及問題解決能力培養(yǎng)的基礎(chǔ)環(huán)節(jié)。[3]因此,算法思維是值得教師在教學(xué)中借鑒的一種思維模式,通過對情境的創(chuàng)建,使學(xué)生能從全局上對問題情境進(jìn)行預(yù)設(shè),挖掘問題的本質(zhì)和邏輯,分解算法從而分步解決問題,以此來提高學(xué)生的思維能力和問題解決能力,最終促進(jìn)學(xué)生計算思維等核心素養(yǎng)的培養(yǎng)。
模式構(gòu)建
新課標(biāo)提出讓學(xué)生初步具備解決問題的能力,發(fā)展計算思維??梢?,在目前的信息科技教學(xué)中,讓學(xué)生學(xué)習(xí)程序設(shè)計的主要目的是培養(yǎng)其思維。算法思維是計算思維的一個重要組成部分,其本質(zhì)上是一個分步求解問題的思維。因此,結(jié)合算法思維的思維模式,綜合本節(jié)課教學(xué)特點,筆者構(gòu)建了適合初中Python教學(xué)的教學(xué)模式(如下頁圖1)。此模式從教師活動、教學(xué)流程以及學(xué)生活動三個維度互相對照展示了基于算法思維的初中Python教學(xué)模式。通過“創(chuàng)設(shè)情境、提出問題;分解問題、逐一突破;可視化表征、梳理問題;自主學(xué)習(xí)、解決問題”這一系列環(huán)節(jié),最終指向?qū)W生的思維培養(yǎng)與問題解決能力的提升。
教學(xué)實踐
本次教學(xué)實踐以“猜數(shù)游戲”為總?cè)蝿?wù),讓學(xué)生通過編寫“猜數(shù)游戲”的程序代碼,掌握while循環(huán)的使用,同時掌握while循環(huán)嵌套選擇結(jié)構(gòu)。借助算法思維解決問題的相關(guān)思維模式,引導(dǎo)學(xué)生循序漸進(jìn)地解決每一個小任務(wù),最終完成達(dá)成目標(biāo)。通過這些環(huán)節(jié),培養(yǎng)學(xué)生的信息科技核心素養(yǎng),讓學(xué)生自主探究學(xué)習(xí),運(yùn)用合理的編程算法編寫程序,體驗程序設(shè)計流程,感受算法的效率,掌握程序調(diào)試和運(yùn)行的方法,提升計算思維水平。同時,善于借助學(xué)習(xí)平臺完成探究,體驗數(shù)字化學(xué)習(xí)過程,適應(yīng)數(shù)字化學(xué)習(xí)環(huán)境,養(yǎng)成數(shù)字化學(xué)習(xí)能力。
1.創(chuàng)設(shè)真實情境,體驗問題
教學(xué)中的情境往往是由教師依據(jù)具體的教學(xué)內(nèi)容,結(jié)合具體的現(xiàn)實教學(xué)條件設(shè)計的,具有真實性。創(chuàng)設(shè)情境往往伴隨問題,教師從具體情境出發(fā),以教學(xué)內(nèi)容為基礎(chǔ),讓學(xué)生根據(jù)具體情境來解決某些問題。[4]
課堂伊始,筆者選擇一位學(xué)生作為游戲主持人,主持人心里想1~20之間的一個數(shù)(整數(shù)),玩家(學(xué)生)猜測主持人心里想的數(shù)字,主持人只需要回答比心里想的數(shù)大了還是小了(讓學(xué)生沉浸游戲,真實體驗猜數(shù)游戲)。學(xué)生猜測幾輪,猜中正確答案的得到獎勵。在游戲結(jié)束后,教師引導(dǎo)學(xué)生嘗試用5句話來總結(jié)猜數(shù)游戲步驟并精煉語句(如圖2),同時引出課題:用Python來玩猜數(shù)游戲。
利用真實游戲場景讓學(xué)生有興趣地進(jìn)入教學(xué)主題“猜數(shù)游戲”,并且引導(dǎo)學(xué)生分解“猜數(shù)游戲”,使學(xué)生建立分解意識與思維,讓學(xué)生在接下來的環(huán)節(jié)中可以自主自覺使用分解思維來分析問題與解決問題。
2.結(jié)構(gòu)化分解,簡化問題
算法是Python教學(xué)中必不可少的內(nèi)容,但在Python教學(xué)中,大多數(shù)教師更加關(guān)注學(xué)生對不同算法的知識技能的掌握,而對算法思維的培養(yǎng)有所欠缺。[5]利用算法思維解決問題,第一步是分解問題,即將問題按算法進(jìn)行結(jié)構(gòu)化分解,具體來說就是面對一個復(fù)雜問題,將其分解為可以逐個解決的子問題,這些子問題互相具有一定的聯(lián)系,解決上一個子問題是下一個子問題解決的必要條件,但是它們又彼此獨立。分解問題使得問題簡單化。
學(xué)生通過體驗猜數(shù)游戲各環(huán)節(jié),基本都可以用5個步驟總結(jié)猜數(shù)游戲的具體過程。要將現(xiàn)實中猜數(shù)游戲與Python編程進(jìn)行聯(lián)結(jié),還需要指導(dǎo)學(xué)生完成與5個步驟對應(yīng)的Python編程步驟,實現(xiàn)從現(xiàn)實游戲向Python編程的過渡,并且將利用Python編寫猜數(shù)游戲這一個問題分解成5個編程子問題,逐一解決。在具體教學(xué)實踐過程中,筆者要求學(xué)生登錄易加學(xué)院自主學(xué)習(xí)平臺,完成兩個猜數(shù)游戲的對照填空,總結(jié)出Python編寫猜數(shù)游戲的5個步驟。
讓學(xué)生將“1.玩家猜數(shù)”
“2.if…else選擇結(jié)構(gòu)判斷大小”
“3.Python隨機(jī)產(chǎn)生一個數(shù)”
“4.若不一致,則重復(fù)B和C兩個步驟”
“5.while循環(huán)語句”這五句話序號對應(yīng)填寫在上表中。
通過平臺的數(shù)據(jù)反饋,筆者發(fā)現(xiàn)大部分學(xué)生的答題正確率僅為60%(如圖3),大部分學(xué)生對Python猜數(shù)游戲編寫過程中是先用while循環(huán)還是先用if…else選擇結(jié)構(gòu)不清楚。針對此問題,如果用上表來講解,可能大部分學(xué)生能理解,但這其實是教師在解決問題。而信息技術(shù)課堂要體現(xiàn)學(xué)生的主體地位,教師只應(yīng)是主導(dǎo)者,負(fù)責(zé)給學(xué)生提供問題解決的腳手架。所以,筆者沒有給學(xué)生講解錯誤的問題,而是讓學(xué)生帶著錯誤問題完成下面一個任務(wù):繪制猜數(shù)游戲的流程圖。這樣做旨在讓學(xué)生通過對流程圖的繪制來完成邏輯梳理,從而理解到底是先用while循環(huán),還是先用if選擇結(jié)構(gòu)。
3.可視化表征,梳理問題
知識可視化就是用圖解手段來構(gòu)建和傳遞復(fù)雜知識??梢暬碚靼ɡ昧鞒虉D、思維導(dǎo)圖等輔助手段,幫助學(xué)生將Python編程過程中隱形的思維過程呈現(xiàn)出來,對思維加工過程進(jìn)行理解和認(rèn)知。[3]Python編程教學(xué)的大部分內(nèi)容可以借助流程圖的繪制來幫助學(xué)生梳理邏輯。但如果讓學(xué)生從無到有繪制流程圖一方面會浪費大量的教學(xué)時間,另一方面可能會讓學(xué)生無從下手從而產(chǎn)生畏難情緒。對Python猜數(shù)游戲的流程圖繪制,可給學(xué)生提供繪制了一半流程圖的學(xué)案(如圖4),讓學(xué)生將合適的語句填寫到流程圖中對應(yīng)的空格內(nèi),從而幫助學(xué)生梳理邏輯。
在學(xué)生梳理邏輯后,教師引導(dǎo)其回到上一個結(jié)構(gòu)分解環(huán)節(jié),解決while循環(huán)和if選擇結(jié)構(gòu)的前后問題,并對本次教學(xué)內(nèi)容的難點以及while循環(huán)的重點進(jìn)行突破,為接下來的Python編程做鋪墊。在突破教學(xué)重難點的過程中,在學(xué)生思考m和n相等還是不等這一循環(huán)問題時,筆者借助圖4所示的循環(huán)圖讓學(xué)生直觀感受。在可視化狀態(tài)下,學(xué)生可以理解圖4右邊的部分循環(huán),就此可以引導(dǎo)學(xué)生理解循環(huán)是在m和n不相等的時候才發(fā)生的,因為while循環(huán)是滿足條件時才執(zhí)行循環(huán)的。至此,上一個環(huán)節(jié)中未解決的問題——到底是先用while循環(huán)還是先用if選擇結(jié)構(gòu),得以解決。
4.自主探究,解決問題
在前兩個環(huán)節(jié)中,學(xué)生將猜數(shù)游戲的大任務(wù)已經(jīng)分解成一個個的小任務(wù)并且利用流程圖進(jìn)行了邏輯梳理。在具體的編程實踐中,筆者在易加學(xué)院自主學(xué)習(xí)平臺中準(zhǔn)備random模塊導(dǎo)入的資料和半成品程序以及注釋學(xué)案,供學(xué)生自主學(xué)習(xí),幫助學(xué)生完成程序的編寫。學(xué)生自主探究random模塊的導(dǎo)入,并展示與講解自己的導(dǎo)入結(jié)果,同時根據(jù)教師提供的學(xué)案,完成Python猜數(shù)游戲的程序代碼編寫。最后,讓進(jìn)度快的學(xué)生展示自己的程序代碼,并測試與講解,教師根據(jù)學(xué)生的編程結(jié)果進(jìn)行總結(jié)與錯誤反饋。
5.完善算法,拓展問題
算法思維雖然具有一定的程序性,但卻不是單一的思維,而是具有創(chuàng)造性的。因此,筆者采用了分層教學(xué),要求學(xué)生思考兩個問題:
①在猜數(shù)游戲中為何要用while循環(huán)不用for循環(huán);②在導(dǎo)入環(huán)節(jié)的游戲中猜了幾輪猜到了正確答案?如果想讓Python輸出猜中了幾次,應(yīng)該如何操作?第一個問題幾乎所有學(xué)生都可以思考得出答案,因為猜數(shù)游戲并不能提前知道具體可以猜中幾次,因此選擇while循環(huán),而不是for(計數(shù))循環(huán)。第二個問題則是讓部分完成度較快較好的學(xué)生能進(jìn)一步思考與完善算法。
實踐反思
1.關(guān)注思維過程,而非知識技能
新課標(biāo)提出需要學(xué)生了解算法在問題解決過程中的作用,領(lǐng)會算法價值。何為算法的價值?在大部分Python教學(xué)常態(tài)化課堂上,多數(shù)教師對于if選擇結(jié)構(gòu)、while循環(huán)的教學(xué)是先講解這些算法是什么,然后利用習(xí)題幫助學(xué)生理解。因此,這些算法的學(xué)習(xí)對于學(xué)生而言并不是一種思維模式的訓(xùn)練,而是一種知識技能學(xué)習(xí)。而新課標(biāo)關(guān)注的是對學(xué)生思維的培養(yǎng),因此,教師應(yīng)通過對各種算法的講授,將算法知識與其他知識體系進(jìn)行聯(lián)結(jié),讓學(xué)生可以根據(jù)實際情況選擇算法、描述算法、執(zhí)行算法,從而最終獲得解決問題的策略或方法。
2.關(guān)注問題解決方法,而非結(jié)果
熊璋教授說,信息科技課程不應(yīng)該局限于讓學(xué)生對現(xiàn)有程序設(shè)計語言的掌握,而應(yīng)讓學(xué)生學(xué)習(xí)使用計算機(jī)解決問題的思維和實踐方法。[6]因此,對于程序設(shè)計語言課程的教學(xué),更應(yīng)該關(guān)注在教學(xué)過程中學(xué)生是否掌握了具體的問題解決方法。在教學(xué)設(shè)計過程中,教師應(yīng)將課堂交給學(xué)生,借助各類腳手架,如現(xiàn)實問題與計算機(jī)問題對照、問題分解、可視化表征問題等,幫助學(xué)生解決問題,教師更多的是教授學(xué)生解決問題的方法,而不是關(guān)注學(xué)生是否掌握了該語言的某些語法規(guī)則等。
參考文獻(xiàn):
[1]中華人民共和國教育部.義務(wù)教育信息科技課程標(biāo)準(zhǔn)(2022年版)[S].北京:北京師范大學(xué)出版社,2022.
[2]王榮良.信息技術(shù)課程中算法學(xué)習(xí)的價值探索[J].中國電化教育,2008(08):79-86.
[3]孫立會.聚焦思維素養(yǎng)的兒童編程教育:概念、理路與目標(biāo)[J].中國電化教育,2019,390(07):22-30.
[4]黃淑燕.指向信息技術(shù)學(xué)科核心素養(yǎng)的情境題設(shè)計[J].中小學(xué)數(shù)字化教學(xué),2021,39(03):58-61.
[5]李曉曉,謝忠新.指向算法思維培養(yǎng)的學(xué)習(xí)支架設(shè)計策略[J].中國信息技術(shù)教育,2022,384(09):33-36.
[6]熊璋,趙健,陸海豐,等.義務(wù)教育階段信息科技課程的時代性與科學(xué)性——《義務(wù)教育信息科技課程標(biāo)準(zhǔn)(2022年版)》解讀[J].教師教育學(xué)報,2022,52(04):63-69.