【摘" 要】本文探討了指向計算思維培養(yǎng)的高中信息技術(shù)實驗教學(xué)實踐,以“計算機擲骰子是否公平?”為例,闡述了課堂教學(xué)的各個環(huán)節(jié),包括通過情境導(dǎo)入提出問題,基于計算思維描述問題、分解問題、解決問題、評估效果,過程中涉及算法設(shè)計、優(yōu)化程序和數(shù)據(jù)分析等。在本次教學(xué)實踐中,學(xué)生體驗了運用計算思維進(jìn)行實驗探究的全過程,對計算思維有了更深刻的認(rèn)識。
【關(guān)鍵詞】計算思維;實驗教學(xué);項目教學(xué)
計算思維是指個體運用計算機科學(xué)領(lǐng)域的思想方法,在問題解決過程中涉及的抽象、分解、建模、算法設(shè)計等思維活動?!镀胀ǜ咧行畔⒓夹g(shù)課程標(biāo)準(zhǔn)(2017 年版2020年修訂)》(以下簡稱“新課標(biāo)”)將“計算思維”列為四大核心素養(yǎng)之中樞。新課標(biāo)倡導(dǎo)基于“項目”的學(xué)習(xí)方式,將知識建構(gòu)、技能培養(yǎng)與思維發(fā)展融入運用數(shù)字化工具解決問題和完成任務(wù)的過程中,全面提升信息素養(yǎng)。同時,在課程目標(biāo)和內(nèi)容上,新課標(biāo)強調(diào)實踐和實驗性內(nèi)容的設(shè)計。實驗探究中,學(xué)生通過實操和切身感受,深入理解信息技術(shù)原理及應(yīng)用。因此,筆者在日常教學(xué)中不斷探索,嘗試對知識內(nèi)容進(jìn)行重構(gòu),融入實驗性內(nèi)容,以項目形式組織教學(xué),開展了實驗教學(xué)實踐。下面,筆者以“計算機擲骰子是公平的嗎?”實驗探究項目為例進(jìn)行說明。
一、情境導(dǎo)入,提出問題
通過微信擲骰子小游戲?qū)耄故炯彝ノ⑿湃褐型鏀S骰子游戲的場景,與學(xué)生交流具有類似功能的抽獎、搖號程序在生活中的實際應(yīng)用。繼而,教師提出“計算機是如何擲骰子的呢?”有學(xué)生脫口而出“隨機”。教師繼續(xù)追問“計算機擲骰子是公平的嗎?”學(xué)生出現(xiàn)兩種看法,有的學(xué)生認(rèn)為“比較公平”,有的認(rèn)為“不好說”。學(xué)生帶著疑問,開始了本次實驗探究之旅。
二、項目實施,解決問題
(一)界定問題,明確目標(biāo)
“計算機是如何擲骰子的呢?”通常情況下,計算機使用隨機數(shù)生成器來模擬擲骰子的過程。那么,具體到已經(jīng)學(xué)習(xí)過的 Python 編程語言,它能否生成隨機數(shù)呢?在 Python 中,有個“random”隨機庫,它的“randint(1,6)”函數(shù)可以生成 1 到 6 之間的隨機整數(shù),從而模擬擲骰子過程。但這個函數(shù)模擬擲骰是否公平呢?本項目將通過實驗來檢測“用 randint(1,6)函數(shù)模擬‘?dāng)S骰子’”是否公平。
(二)基于計算思維,解決問題
1.描述問題
教師引導(dǎo)學(xué)生描述問題中的關(guān)鍵字“公平”,學(xué)生認(rèn)為“各種點數(shù)出現(xiàn)的概率相同”即為公平,教師對學(xué)生的思考給予充分肯定,概率是一個理論值即各種點數(shù)出現(xiàn)的可能性是1/6。實際投擲骰子過程中各種點數(shù)出現(xiàn)的次數(shù)/總次數(shù)得到的是頻率,頻率是在多次實驗中觀察到的結(jié)果,它會隨著實驗次數(shù)的增加而趨近于概率。因此,實驗需要統(tǒng)計的是各種點數(shù)出現(xiàn)的次數(shù)或頻率,觀察在次數(shù)足夠多的情況下是否接近或者頻率是否趨近于,這是本次實驗要探究的關(guān)鍵問題——均勻性。
在這里學(xué)生容易忽略一個問題,即每次生成的隨機數(shù)是否“不可預(yù)知”,也就是隨機性。教師打開“希沃隨機抽號”功能,先讓學(xué)生預(yù)測誰是幸運兒,在抽取幸運兒的游戲活動中,學(xué)生加深體會隨機抽號應(yīng)該做到“不可預(yù)知”才是公平的。同樣,如果用“randint(1,6)”函數(shù)模擬“擲骰子”是公平的,那么每次它的運行結(jié)果也應(yīng)該是“不可預(yù)知”的——隨機性,在運行次數(shù)足夠多的情況下實現(xiàn)隨機性與均勻性的辯證統(tǒng)一。
2.分解問題
通過上述問題描述,學(xué)生明確了實驗需要達(dá)成的兩個小目標(biāo):驗證擲骰子結(jié)果的均勻性和隨機性。其中,隨機性可以通過觀察直接判斷,相對容易解決。然而,當(dāng)投擲總次數(shù)較多時,僅通過觀察難以快速統(tǒng)計各種點數(shù)出現(xiàn)的次數(shù)或頻率。因此,需要借助編程來進(jìn)行統(tǒng)計,以驗證均勻性。
由此,實驗探究問題分解為以下兩個問題。問題一是驗證隨機性:投擲多次骰子,觀察結(jié)果是否不可預(yù)知。問題二是驗證均勻性:投擲多次骰子,編程實現(xiàn)統(tǒng)計各種點數(shù)出現(xiàn)的次數(shù)或頻率。
3.解決問題、評估效果
要解決這兩個問題,都要先用代碼實現(xiàn)“投擲多次骰子”。投擲多次骰子,具體是多少次呢?學(xué)生想到投擲總次數(shù)應(yīng)該是6的倍數(shù),這樣各種點數(shù)出現(xiàn)的次數(shù)才可能相同,并且投擲總次數(shù)越多頻率越近。
那么,如何編寫投擲多次骰子的代碼?學(xué)生討論并嘗試,一些學(xué)生想到用 for 循環(huán)語句,一些學(xué)生在教師引導(dǎo)下,先用順序結(jié)構(gòu)寫出投擲三次的語句,觀察重復(fù)部分,再用循環(huán)結(jié)構(gòu)設(shè)計算法并用 for 語句實現(xiàn)。調(diào)試程序后,學(xué)生看到不斷刷屏出現(xiàn)的隨機數(shù)字,內(nèi)心充滿成就感。興奮之余,學(xué)生很自然地開始觀察生成的隨機數(shù)。這些數(shù)字的呈現(xiàn)是隨機的嗎?各種點數(shù)出現(xiàn)的次數(shù)是否差不多呢?若要解答這些疑惑,學(xué)生需根據(jù)實際數(shù)據(jù)來探尋答案。
探究1:隨機性——投擲多次骰子,觀察結(jié)果是否不可預(yù)知。
學(xué)生觀察擲骰子的結(jié)果,在擲骰子次數(shù)固定的前提下,將多次運行程序產(chǎn)生的隨機數(shù)序列保存到實驗記錄單中,進(jìn)行橫向?qū)Ρ确治?,具體重復(fù)運行的次數(shù)由學(xué)生自行設(shè)計。
學(xué)生通過對比運行結(jié)果,發(fā)現(xiàn)每次生成的隨機數(shù)序列都各不相同,從而判斷其隨機性。更有學(xué)生將自己的程序運行結(jié)果與其他同學(xué)的進(jìn)行對比,也都不盡相同,這進(jìn)一步激發(fā)了學(xué)生對計算機生成隨機數(shù)的好奇心。學(xué)生初步感受了利用編程工具進(jìn)行實驗探究的過程,體驗了用數(shù)據(jù)驗證觀點的方法,對后續(xù)的實驗也增添了信心。
探究2:均勻性——投擲多次骰子,編程實現(xiàn)統(tǒng)計各種點數(shù)出現(xiàn)的次數(shù)或頻率。
初時多數(shù)學(xué)生思路不清晰,教師引導(dǎo)學(xué)生簡化問題,先統(tǒng)計點數(shù) 1,簡化后學(xué)生嘗試用“if point==1:”篩選出數(shù)字 1,再用計數(shù)變量 a 保存 1 出現(xiàn)的次數(shù)。雖然只統(tǒng)計了點數(shù) 1,但學(xué)生看到統(tǒng)計結(jié)果很開心。部分學(xué)生的統(tǒng)計結(jié)果異常,如0,經(jīng)查是條件語句塊未在循環(huán)內(nèi),這是算法邏輯順序錯誤。教師可引導(dǎo)學(xué)生畫出算法流程圖,幫助學(xué)生發(fā)現(xiàn)錯誤、厘清算法的邏輯順序。
完成對點數(shù)1 的統(tǒng)計后,學(xué)生以同樣方式統(tǒng)計其他點數(shù)。學(xué)生設(shè)置不同數(shù)量級的投擲次數(shù),觀察并保存結(jié)果到實驗記錄單,進(jìn)行橫縱對比分析。通過分析,學(xué)生發(fā)現(xiàn)“如之前預(yù)測,隨著投擲次數(shù)增加,各種點數(shù)出現(xiàn)的頻率趨近于”。教師建議增加實驗次數(shù)來提高可靠性。
實驗結(jié)論:在實驗前,學(xué)生對擲骰子結(jié)果的公平性存在疑慮。然而,學(xué)生通過編程實驗的探究,發(fā)現(xiàn)隨著擲骰子次數(shù)的增加,各種點數(shù)出現(xiàn)的頻率逐漸趨近于■。這一現(xiàn)象直觀地展示了隨機性和概率的規(guī)律,使學(xué)生對公平性有了更深刻的認(rèn)識。實驗表明,盡管單次擲骰子的結(jié)果具有不確定性,但在大量重復(fù)實驗中,概率的力量會顯現(xiàn)出來,從而打消了學(xué)生的保留意見,增強了學(xué)生對概率理論的信心。
(三)審視代碼,優(yōu)化程序
完成了前面的實驗,教師引導(dǎo)學(xué)生對程序進(jìn)行優(yōu)化。學(xué)生重新審視代碼,仔細(xì)檢查代碼的可讀性,尋找可以優(yōu)化的空間;深入分析算法,思考是否存在更高效的算法來替代當(dāng)前的實現(xiàn)方法等。
學(xué)生提出,用六個獨立變量保存各種點數(shù)出現(xiàn)次數(shù),代碼煩瑣且重復(fù),能否更簡潔表達(dá)。為此,教師與學(xué)生共同回顧可用于存儲一系列數(shù)據(jù)元素的列表數(shù)據(jù)結(jié)構(gòu)。
優(yōu)化1:利用列表來保存各種點數(shù)出現(xiàn)的次數(shù)。
學(xué)生對列表的應(yīng)用不太熟練,需要教師給予幫助。教師可通過示例和教程讓學(xué)生直觀了解列表的使用方法,指導(dǎo)學(xué)生修改代碼。通過對比修改前的代碼,學(xué)生直觀感受到了使用列表進(jìn)行批量數(shù)據(jù)處理的優(yōu)勢。這不僅加深了學(xué)生對列表數(shù)據(jù)組織方式的理解,更讓學(xué)生真切地認(rèn)識到,選擇合適的數(shù)據(jù)結(jié)構(gòu)對于數(shù)據(jù)處理和算法設(shè)計至關(guān)重要。
教師鼓勵學(xué)生進(jìn)一步優(yōu)化程序,比如能否將實驗統(tǒng)計結(jié)果用可視化的方式直觀地展示出來。學(xué)生想到可以用柱形圖、餅圖等圖表來呈現(xiàn)統(tǒng)計結(jié)果。
優(yōu)化2:用第三方庫Matploylib繪制圖表,直觀呈現(xiàn)統(tǒng)計結(jié)果。
用圖表呈現(xiàn)擲骰子統(tǒng)計結(jié)果是一種直觀而有效的方式。但Matploylib 庫對于學(xué)生來說是新知,學(xué)生通過在線教程和示例代碼,與同學(xué)互助,成功應(yīng)用matploylib庫創(chuàng)建圖表。高度相似的柱形圖和近乎六等分的餅圖更直觀反映結(jié)果??吹綀D表,學(xué)生很興奮,迫不及待地與同學(xué)分享自己繪制的圖表。
三、項目總結(jié),提升思維
臨近項目尾聲,教師和學(xué)生共同回顧擲骰子實驗的整個過程。實驗中,學(xué)生運用計算思維開展活動:先對問題進(jìn)行描述,明確關(guān)鍵字“公平”,深入理解問題;再將問題分解為更小、更易于解決的子問題;接著設(shè)計算法、編寫程序解決問題;然后調(diào)試程序,檢查分析實驗數(shù)據(jù),得出結(jié)論;并對實驗方法進(jìn)行評估改進(jìn)。這是運用計算思維解決問題的過程,計算思維能夠幫助學(xué)生更高效地處理問題,尤其是復(fù)雜問題。教師鼓勵學(xué)生在日后的學(xué)習(xí)與生活中,主動運用計算思維攻克各類實際難題。
項目總結(jié)是項目教學(xué)法中的重要環(huán)節(jié),通過回顧、分析和總結(jié),學(xué)生可以提升思維能力,更好地掌握計算思維,并將其應(yīng)用到實際問題的解決中。教師可組織學(xué)生討論或展示,促進(jìn)交流合作,加深對計算思維的理解。
四、結(jié)束語
高中信息技術(shù)實驗教學(xué)可以采用項目式來開展教學(xué)活動?;顒舆^程中,學(xué)生體驗用計算思維解決問題,同時總結(jié)問題解決過程和方法,以便有效遷移至其他問題的解決。學(xué)生通過實驗觀察現(xiàn)象、收集數(shù)據(jù),經(jīng)過分析和推理得出結(jié)論,從而培養(yǎng)批判性思維和問題解決能力。此外,實驗探究能激發(fā)學(xué)生的好奇心和探索精神,培養(yǎng)其創(chuàng)新思維和創(chuàng)造力。實驗過程中,學(xué)生需要不斷嘗試和改進(jìn),從而鍛煉堅韌精神和應(yīng)對挫折的能力??傊?,實驗教學(xué)是培養(yǎng)學(xué)生計算思維的有效方式,有助于學(xué)生更好地理解和運用計算思維,提升問題解決和創(chuàng)新能力。
【參考文獻(xiàn)】
[1]中華人民共和國教育部.義務(wù)教育信息科技
課程標(biāo)準(zhǔn):2022年版[S].北京:北京師范大學(xué)出版社,
2022.
[2]中華人民共和國教育部.普通高中信息技術(shù)課程標(biāo)準(zhǔn):2017年版2020年修訂[S].北京:人民教育出版社,2020.
[3]鐘柏昌.高中信息技術(shù)必修課實驗與實驗室建設(shè)探索[J].中國電化教育, 2019(3): 16-21.