秦琦

信息技術學科核心素養包含了信息意識、計算思維、數字化學習與創新和信息社會責任四個方面的內容。其中,計算思維是指計算機科學領域內關于形式化問題解決的一種思想方法,包含了問題界定、抽象特征、建立模型和設計算法等方面的內容,它是信息技術學科核心素養的重要內涵之一,是信息技術學科思維的精髓所在,是信息技術學科能力的主要體現。而程序設計課程是培養學生“怎么像計算機科學家們一樣去思維”的課程,《設計無人駕駛小車》是程序設計課程中的重要一課,其教學目標、教學指向均體現了計算思維的重要性。下面,筆者以此課為例展示計算思維在可視化程序設計教學過程中的應用思路和過程。
● 提出大任務,分解任務
課堂大任務:在可視化程序中實現無人駕駛小車功能。
教師設置生活問題情境,提出探究性問題“你想設計無人駕駛小車哪些功能”,以此調動學生的學習積極性,激發其學習動機。面對這樣的任務,學生可能從操控性、安全性、智能化等方面進行發散性思考,如汽車感知到沒油后會自動去尋找加油站或者汽車會自行規劃路線導航……課堂在中師生共同理解和分析任務后,教師引導學生將大任務拆分出可管理、可實行的小任務。這就是計算思維中解決問題的思維,將復雜問題化繁為簡,由外到內逐層分解,通過篩選、識別,進而保留可執行的小任務。最終,學生在課堂中分解出小任務:小車在馬路上行駛、小車遇到行人或者其他障礙物會自動避障、小車遇到紅綠燈會自主識別判斷……在這一環節中學生充分體驗、經歷了問題的分解過程,學習目標更加明確,構建出無人駕駛小車功能的框架結構,教師可以在接下來的課堂中引導學生完成一個個小任務。
● 歸納梳理,建立模型
“感知小車在馬路上行駛”是作為復習內容,再次鞏固思維過程,并且挖掘深層信息,為本節課的思維展開進行鋪墊。因此,如何引導學生抽象出解決問題的關鍵點,是課堂教學中的難點也是核心。為解決“感知小車在馬路上行駛”這一任務,筆者構建了“生活語言描述—提煉關鍵詞—轉化—搭建控件”的學習流程,目的是讓學生能將對現實生活場景的描述在可視化編程場景用腳本實現,初步建立抽象能力和構造能力。
學生最開始借助生活經驗,用自然語言描述“小車行駛到馬路邊緣,會轉彎”,但這樣的語句計算機是不能理解、不能識別的,那怎樣轉化成形式化描述,讓計算機識別并計算呢?筆者引導學生根據語句描述的信息來剔除不必要信息,提煉重要信息,找到了“紅色‘虛擬傳感器、碰到、左側白色、右轉”等關鍵詞,但學生發現,這些關鍵詞還是屬于現實生活中的表達,仍然無法連接可視化編程場景中的控件。于是,筆者再引導學生對關鍵詞進行歸納、分析,發現“紅色‘虛擬傳感器、碰到、左側白色”這三個關鍵詞表達了“探測、感知”的作用,而“右轉”則表達了“決定、決策”的作用。
通過厘清關鍵詞的過程,建立了有效的操作步驟:先探測再決策,也符合可視化編程場景中“先偵測再決策”的編程思想。這一過程將現實世界的問題進行抽象,成為計算機能夠理解或實現的表達形式,也構造出了解決問題的框架,得到了解決問題的模型。
● 整理關鍵詞,抽象事物關系
得到了方法模型,但表示探測作用的三個關鍵詞“紅色‘虛擬傳感器、碰到、左側白色”,還是不能直接在可視化編程場景中找到控件。計算思維中的抽象是省略不必要的細節,留下需要強調的環節的過程。所以,還需要引導學生進行“轉化”,這時的關鍵點轉為:在事物與事物的本質中找到可聯系的相通點,因為事物的本質是事物本身固有的,決定事物性質、面貌和發展的根本屬性。學生通過討論,發現關鍵詞中有“紅色”“白色”這兩個表現顏色的詞語,挖掘到顏色這一本質屬性,自然就和可視化編程中的“偵測顏色”控件聯系上了。關鍵點解決了,再進行腳本搭建,實現自動化。
● 化歸思想,尋求最優化方案
“感知行人”解決問題的方法模型是參考“感知小車在馬路上”的模型:先探測后決策,用化歸思想解決問題(如下頁圖1)。當學生掌握這一思想方法后,教師再啟發學生運用所學方法自主探究解決更深層次的問題,分別用三種方法來實現無人駕駛小車感知行人后避障的功能,并比較三種方法的可行性,通過小組合作的方式運用計算思維達到知識鞏固和遷移的目的。
學生在分析“感知行人”的問題時,會運用之前的模型來解決,即從“探測顏色”考慮,如小車紅色傳感器碰到男孩的上衣的顏色、小車的顏色碰到男孩頭發的顏色、小車的顏色碰到男孩褲子的顏色、小車角色碰到男孩上衣的顏色……學生在運用“偵測顏色”控件搭建腳本進行調試的過程中,在使用“小車角色碰到男孩上衣顏色”腳本時,并不能實現無人駕駛小車感知行人后避障的功能。學生自主發現,要考慮碰到男孩多種顏色的可能性,用原有“探測顏色”思路來解決問題出現了不確定性。
接著,學生利用已有的知識和經驗,提出用“碰到男孩角色”的方法來實現。在筆者的追問中學生能明確:顏色是男孩角色本身顯示出來的特征屬性,碰到男孩角色了,男孩顯示出來的各種顏色也就考慮進去了。通過這樣的分析,學生利用“偵測角色”控件,快速搭建腳本,經過調試實現了小車感知行人后避障的功能。隨后,對“偵測顏色”腳本和“偵測角色”腳本進行對比,學生能說出使用“偵測角色”腳本的方案更加簡潔、明了,考慮問題更加全面的優點,這體現了對學生算法思維的培養。
問題解決了,但通過觀看視頻,回到現實生活,學生發現,從安全性考慮,小車和男孩之間不能碰到,從而再次分析明確:小車和男孩之間要有一段距離,從兩個角色的關系中又抽象出“可以探測距離”。距離是一個抽象的概念,還要進行具體化,用具體的數值來表示。課堂中,學生對距離值應該采用“大于、等于、小于”不明確,調試中出現了錯誤。當搭建的腳本出錯時,調試中出現的問題是生成性的,調試也需要更多的思維能力,學生在這一過程中嘗試診斷和修正,查找出錯的緣由,設計調試腳本的“解決方案”,直到腳本能正常運行,從而理解了計算的過程,發展了計算思維。
隨后,學生對“偵測角色”腳本和“偵測距離”腳本進行了對比,認為使用“偵測距離”腳本的方案更加合理。在這個過程中,學生將抽象方法搭建的腳本放到生活實際認知狀態中檢測是否與原來的設想一致,發現腳本匹配現實生活場景,從而得出正確的答案。
本環節,筆者通過三種實現方法,帶動學生去發掘,去探索、對各種解決方案比較選優,去尋求更好的解決途徑,這樣不但可以提高學生分析和解決問題的能力,還可以盡可能逼近解決實際問題的模式。
● 構建知識體系,遷移應用
1.知識建構
結合本節課所學,談談如何將生活中的實際問題通過可視化程序設計來實現(如圖2)。
筆者通過以上知識結構圖的回顧,引導學生梳理本節課的主要內容,運用計算思維來解決問題,總結出解決問題的一般方法,從而建構出知識的方法模型,并引導出具體的學習方法(如圖3)。通過這一流程,發現并確定了問題,分析了問題的構成要素,對問題進行了分析、分解,為問題的解決提供了相對有效的途徑和方法,滲透了算法思維。
2.遷移應用
本節課構建出的知識體系和方法模型,同樣適用下節課無人駕駛小車“感知紅綠燈”的情境。教師可引導學生通過“先探測后決策”的模型以及“探測事物的哪個屬性”來展開教學。而“探測事物的哪個屬性”體現了計算思維的抽象,促使學生透過現象繼續挖掘本質,抽象出事物的共同特征和屬性,也就是下節課的難點和關鍵點,相信通過本節課的學習鋪墊,下節課的解決問題會水到渠成。
總之,體現程序設計的“思想”和“方法”,實現學習程序設計的目的就是讓學生學會解決問題,而計算思維提供了解決問題的思維,能拓寬學生的思路,因此在教學中有必要讓計算思維成為學生應具備的基本能力。
基金項目:本文系江蘇省教育科學“十三五”規劃立項課題“指向計算思維的‘程序設計初步教學實踐研究”(課題批準號:B-b/2020/02/159)研究成果。