李強 張超



[摘? ?要]計算思維素養的提出,為整個中小學信息技術課程構建了一個自己的靈魂。義務教育階段的信息技術課程也應圍繞高中階段新課標提出的計算思維這一學科核心素養重新構建。為此,義務教育階段的教師和教材都要做出適當改變。教師要深入理解計算機科學領域中一些重要的思想和方法,包括在解決問題的各個環節進行形式化思考,將解決方案算法化,通過解決問題的過程形成可遷移的經驗等,這也是計算思維素養下圖形化編程教育的基礎。
[關鍵詞]計算思維;中小學;信息技術;圖形化編程;學科核心素養
“計算思維”已被列為高中信息技術課程的核心素養,未來也必將成為義務教育階段信息技術課程的核心,相應教材也應有所變化。因此,2018年底,河北省教科所(現河北省教科院)開始組織對河北人民版義務教育階段《信息技術》教材進行修訂。其中,推動圖形化編程進教材以及嘗試通過圖形化編程落實計算思維的培養是本次修訂的重要內容。2021年9月,修訂后的教材投入使用,其后繼教研工作是一個對計算思維素養以及圖形化編程教育不斷認識、理解和總結的過程。在此,就一些思考和實踐所得進行整理和分享。
《普通高中信息技術課程標準(2017年版2020年修訂)》(以下簡稱新課標)提出:“計算思維是指個體運用計算機科學領域的思想方法,在形成問題解決方案的過程中產生的一系列思維活動。具備計算思維的學生,在信息活動中能夠采用計算機可以處理的方式界定問題、抽象特征、建立結構模型、合理組織數據;通過判斷、分析與綜合各種信息資源,運用合理的算法形成解決問題的方案;總結利用計算機解決問題的過程與方法,并遷移到與之相關的其他問題解決中。”[1]在此,將結合眾多研究成果從不同角度提出的對計算思維的理解,聯系教學實踐,對其中一些重要概念進行闡釋,以使其更明確具體。
一、計算機科學領域的思想方法
這里的思想方法指的是在計算機科學領域中被鮮明體現、對解決問題至關重要且具有普遍遷移意義的方法概念。例如,周以真教授提出的計算思維的18個基礎概念:約簡、嵌入、轉化、仿真、遞歸、并行、抽象、分解、建模、預防、恢復、冗余、容錯、糾錯、啟發式推理、規劃、學習、調度等。[2]又如,美國計算機科學教師協會發布的《CSTA K-12 計算機科學課程標準(2017年修訂版)》中分別從計算機系統、網絡和互聯網、數據與分析、算法與編程、計算機的影響5個方面提出了設備、硬件和軟件、故障排除、網絡通信與組織、信息安全、數據的收集、數據的存儲、數據的可視化與轉化、推理與模型、算法、變量、控制、模塊化、程序開發、計算機文化、基于計算機的交往、計算機涉及的安全法律和道德17個核心概念。[3]新課標在學科核心素養水平劃分與描述中涉及的基礎概念包括:數據、編碼、特征識別、分解、狀態機、可行性、抽象、形式化、一般算法(解析、窮舉、遞歸等)、數據結構、模塊化、系統化、評估、優化、迭代、遷移等。[4]
“計算機科學領域的思想方法”是整個信息技術教育的靈魂所在。但是,不管是周以真提出的“基礎概念”,還是美國計算機科學教師協會提出的“核心概念”,或者我國高中新課標提出的“水平劃分與描述”,都是框架性的,且并不完全適合義務教育階段的信息技術課程。
計算機科學領域是一個包含眾多一級學科和二級學科并且還在飛速發展和擴張的龐大的專業學科群,具有高度精細化和專業化的特征。而義務教育階段的信息技術課程只是一門以建立興趣、初步實踐和增進了解為目的的、普及常識性知識的課程。這就要求信息技術教育既要體現一定的學科特質,防止教學流于膚淺和表面;又要體現普及和實踐的特點,防止其演變成專業課程的理論集合或縮小版。
解決問題的過程通常會存在一個或若干個關鍵環節,這些關鍵環節體現了解決某一問題最重要的思想,也往往最具普遍遷移的意義。所以,在“計算思維框架”的基礎上,計算思維的落實首先要確定一些在學習實踐過程中較為核心、較為具體、又具有一定學科特質的關鍵問題,即兼具典型意義和普遍意義的“元問題”。從義務教育階段信息技術課程的目的出發,這些“元問題”要能夠通過生活實際獲得聯系和體會,不能過于抽象和窄化。
總體上,解決問題的基本步驟都是相似的,但只了解基本步驟并不足以支持學生解決問題,還需要針對具體問題思考具體的尤其是關鍵環節的解決方法。以“元問題”為核心構建問題情境和解決方案范例,可以在引導學生解決問題的過程中突出關鍵思維環節,使課程重點緊緊圍繞“解決關鍵問題”這一核心,保證相關知識和概念的學習都為這個核心服務,并且在解決問題的過程中“自然發生”。
以河北人民版《信息技術》教材(以下簡稱教材)8年級第13課“電子相冊”為例。這是對圖形化編程軟件KITTEN初步了解后第一次接觸一個較為完整的有實際意義的項目。其第1課時的“元問題”是結合流程圖了解照片展示的步驟(分支結構),即照片被點擊時,如果是小照片,就放大并居中;如果是大照片,就縮小并回到原位置。第2課時的“元問題”是解決照片展示位置的獨占問題,即一次只能有一張照片被放大顯示在中間位置。第3課時的“元問題”是對電子相冊項目進一步優化,即增加自動化水平、增加媒體展示效果和增加項目功能。
以上3個“元問題”都是具體問題,都具有鮮明的計算機領域特質,同時又都可以與生活實際緊密聯系,可以應用遷移到其他類似情境甚至信息技術領域以外。
二、采用計算機可以處理的方式
采用計算機可以處理的方式,是要求學生思考的結果要符合計算機處理的形式化要求。對于“界定問題、抽象特征、建立結構模型、合理組織數據”以及形成“問題解決方案”等思考結果的描述,有必要讓學生學會借助思維導圖、流程圖等,進行初步的形式化思考,以便梳理事物屬性、步驟、環節或相互關系,進行思想實驗和推演及學習交流;初步掌握一種編程語言以便進行更規范的形式化,通過執行結果分析思考的過程環節進行驗證,并最終實際形成問題解決的展示成果。
將計算思維與教育實踐有效聯系起來的關鍵是思想實驗。[5]學生借助思維輔助工具建立初步的形式化描述后,要能根據這些描述進行符合要求的推演,這個過程就是思想實驗的過程。在思想實驗結果的基礎上再對比計算機實際運行結果,可以尋找思考過程中的問題,不斷優化,進而學習和理解用到的思想和方法。因為思想實驗的兩端都可以是外顯的,并且思想實驗的過程可長可短,不一定局限于編程內容,所以實際上是為計算思維提供了一個不依賴計算機的可量化評價的手段。同時,思想實驗不只包含重復,也包含反省(或審視),這在任何教育中都具有積極意義。
將基本方法和思想通過形象化、實例化、實驗化的方式在大腦中加以理解和記憶,也是思想實驗的一種重要形式,在實際教學內容的組織及教學實踐中,都可以加以運用。
以教材第17課“我的貪吃蛇”為例。其第2課時,通過克隆方式實現“一直移動的貪吃蛇(紅球組成)的身體為指定長度”,即利用克隆積木實現紅球不斷增加,然后讓克隆出來的紅球利用“當作為克隆體積木啟動時”積木擇機刪除自己,兩者配合實現運動過程中紅球的數量不變。這實際是兩個腳本的同步執行問題。教材中首先提出的方案是分別利用“等待~秒”積木來實現同步(見圖1)。如果每0.2秒克隆一個,這樣每次為首紅球移動時,后面第一個球就是剛克隆出來的,第二個球的年齡就是0.2秒,第三個球的年齡就是0.4秒,以此類推。如果設定克隆出來的球每0.4秒就刪掉自己,則為首紅球后面就不會有超過年齡0.4秒的球,即只有兩個克隆紅球跟在為首紅球后面。
以上是一個較抽象的思考過程,為使學生更深刻地理解,可以讓學生通過思想實驗在腦海中先推演這一方案的整個過程,理解其原理,然后再讓學生用實際腳本測試這一思想,就會發現其中的問題,即在兩個腳本中分別使用“等待~秒”積木并沒有真正實現同步,其本質問題是計時開始和結束沒有使用共同參照基準。盡管這不是最終的方案,但通過思想實驗推演和實際腳本測試,對于了解正確的同步機制非常重要。
第二個方案在上一方案的基礎上提出使用一個變量作為參照基準來進行同步(見圖2)。即只在克隆腳本中進行計時,同時在計時開始前和結束后分別用一個變量進行標注,而克隆出來的球不用計時,只需要知道計時開始和結束了幾次即可,這是一個簡化的單向“信使”同步機制。盡管確實可以實現問題解決,但如果學生認真思考并推演,還會發現可能存在的問題。這樣,在教師的引導下,結合本課最后“巡線小車”項目用到的第三方“信號”同步機制,學生可以進一步掌握同步機制的關鍵,從而在更多類似情況下知道如何處理。
三、運用合理算法形成解決問題的方案
義務教育階段的信息技術教學要求回歸算法的本質,而非嚴謹地討論各種算法的思想或特點。算法是問題解決方案在滿足一定規范下的形式化描述。算法描述的問題解決方案包括步驟分離(細分)、機械執行(自動化)和路徑確定(無歧義)等。因此,對學生而言,算法的思維方式需要有一個逐步接受、建立和發展的過程。具體而言,在義務教育階段,學生首先需要理解和熟悉的是算法思維方式的特點,然后才是初步掌握在較為直觀具體的情形下建立有效和正確算法的方法,形成一定的算法思維水平。
學生在學習利用合理算法形成問題解決方案時,會經歷三個相互交叉的發展階段:一是可以一般形式(非算法形式)進行思考并提出問題解決方案;二是可將一般形式下的思考過程和問題解決方案向算法形式轉化;三是可直接利用算法知識進行思考并直接提出算法形式的問題解決方案。第一階段中的能力取決于學生在問題涉及領域的知識掌握程度,第三階段中的能力已經需要學生具備較為深入的算法知識、思維能力和熟練程度,所以義務教育階段學生對算法的學習重點應該是解決第二階段的能力問題。基于這一認識,模仿思想恰好非常符合要求,即按照現成的樣子或者步驟環節去形成算法形式的解決方案。
以教材第14課“讓我們一起打地鼠”為例,這是教材的圖形化編程學習中接觸的第一個較為完整的游戲作品。學生普遍對這個游戲有一定了解。其第2課時,通過鼠標單擊實現模仿開槍效果。首先要做的是在腦海中將開槍的效果具體化,進而找到開槍效果的特征:火光、槍聲。然后尋找與之對應的知識和技術,火光可以用角色“圓形爆炸”的造型輪換模仿,聲音可以用播放聲音片段“炸彈爆炸”模仿(見圖3)。
接下來,在模仿地鼠被擊中的反應時,開始的需求是“地鼠變成被擊中的樣子”,技術上使用適合的造型替換當前造型即可,但因為角色庫中沒有現成造型,自己制作的難度又較大,所以可以換個思路,直接用對話代替。如果角色被擊中中心點位置附近(可設定),就發出對話“啊!”,如果角色被擊中位置偏離中心點較遠,則發出對話“差一點”。這樣就與需求的預期達成了一致。
模仿思想很“原始”,但其運用并非輕而易舉。讓學生實際運用模仿思想解決問題,依然可能存在困難。
在以KITTEN為代表的圖形化編程平臺中,項目的完成是作品的具體化過程。這個過程包括對作品具體特征的確定和對腳本的思考兩個互相交織的核心環節。當面對一個待完成的作品時,學生首先要做的是分析作品需求,進行需求的具體化,再抽象化。同時,學生還要針對作品需求思考具體的知識和技術訣竅,并對它們所能實現的效果進行抽象化。將需求的抽象化和技術的抽象化達成一致,最后完成作品的具體化。總體上,這一過程就是“具體—抽象—具體”的過程,關鍵是洞察兩個環節思考時抽象特征的相似性,只有充分具體化,然后充分抽象化,才會達成需求與技術在抽象化特征上的一致,即達成問題的解決[6]。
以教材第15課“二進制轉換小能手”為例。其第2課時,利用字符串操作實現非負整數范圍內十進制到二進制的轉換。教材中給出的基本過程是“除2取余,逆序排列”,按照這個過程編寫腳本即可完成轉換目的。但是學生因為對于二進制了解不深入,也不熟悉,進而對于“除2取余,逆序排列”的方法本身可能存在理解上的障礙,存在照貓畫虎的情況,需要進一步具體化。
如果進一步理解,十進制到二進制的轉換可以看作一個十進制數逐漸向二進制左側相鄰較高數位不斷歸并的過程。例如,一個十進制數17可以理解為17個1,可以歸并為8個2和1個1,然后可以歸并為4個4、0個2和1個1,依次類推,最后可以得到1個16、0個8、0個4、0個2和1個1,即得到二進制數10001。總結這個過程,可以將每次歸并抽象為對偶數的判斷過程,即每次歸并后的結果如果是偶數就留下1個0;如果不是偶數,就留下1個1,然后繼續歸并,直到歸并后的數為0,歸并過程結束。讓學生通過模仿歸并的過程實現算法,可以更好地理解二進制,然后再去思考“除2取余,逆序排列”,也可以加深理解。
四、總結利用計算機解決問題的過程與方法
這里需要特別強調的是那些對計算機解決問題的過程具有普遍指導意義的關鍵思想。對于計算機解決問題的一般過程,已有比較成熟的研究。例如,2011年,美國國際教育技術協會與計算機科學教師協會聯合提出了計算思維的操作性定義,將運用計算思維進行問題解決的過程進行了表述。[7]此定義將計算思維界定為問題解決的過程,并提出了六個要素,即明確問題(形成一個能夠用計算機工具解決的問題)、分析數據(在明確問題的基礎上邏輯化組織和分析數據)、抽象(使用模型和仿真對數據進行抽象表示)、設計算法(通過算法設計實現自動化解決方案)、評估方案(以優化整合步驟、資源為目標,分析和實施方案)、遷移解決方法(將解決方案進行總結,遷移到其他問題的解決中)。[8][9]新課標中也對利用計算機解決問題的過程進行了類似的描述。
在解決問題的過程中,分解和化歸的思想對于確定解決問題的方向有重要意義,是兩種解決問題的基本策略,同時也可用于知識和技能的構建。
分解的思想就是將一個較為復雜難以整體理解和解決的問題或者過程分解為若干個足夠簡單明了的子問題或者步驟。分解是計算思維的特征之一。[10]將計算機解決問題的一般過程分為幾個環節本身就是分解思想的體現。分解思想還可以體現到計算機解決問題的每個環節。在界定問題過程中,可以利用分解思想化整體為局部,便于“各個擊破”;在抽象和構建模型的過程中,可以利用分解思想對各個功能進行分離,進而實現單一功能化和模塊化;在設計算法的過程中,算法的“步驟分離”特點就包含了分解思想,分治、遞歸等算法思想的本質也都是分解思想。
以教材第16課“貪吃蛇與圖形繪制”為例。本課的主要目的是利用畫筆工具在舞臺內繪制貪吃蛇游戲的網格和邊界線。其第1課時主要了解畫筆工具的使用。作為整個貪吃蛇游戲項目的開始,在介紹畫筆之前,先對貪吃蛇游戲進行了功能分解:一是開始時網格圖及邊界的繪制;二是“貪吃蛇”在網格中的移動和方向控制;三是“食物”位置的變化;四是“貪吃蛇”吃“食物”后變長;五是判斷游戲結束。[11]
對于畫筆工具的使用,類比真實情景中用筆畫線的步驟,將畫筆繪制的過程分解為三個基本步驟:一是在開始位置落筆,二是從開始位置到結束位置移動一段距離,三是在結束位置抬筆。
本課時分別舉例說明了直線的繪制、彩虹線的繪制、圓弧的繪制和彩虹的繪制,但總體上是在熟悉畫筆繪制的基本步驟,從而為第2課時做準備。而第2課時主要是利用畫筆工具繪制貪吃蛇游戲的網格和邊界線。
首先可以將繪制分解為兩個部分,即網格的繪制和邊界線的繪制。網格的繪制可以分解為豎線的繪制和橫線的繪制。在分別實現了22條豎線和22條橫線的繪制后,學生自然會發現兩個繪制過程可以合并在一個循環結構中。而這時再看邊界線的繪制,就是最低難度的網格繪制。本課分解的運用可以讓學生明顯感覺到思路更加清晰并且思考難度降低,同時獲得了一種構建秩序的體驗。
化歸的思想就是將復雜問題向簡單問題轉化,將陌生問題向熟悉問題轉化,將未知問題向已知問題轉化。總之,就是將不能解決的問題轉化為能解決的問題。化歸的本質是盡可能地利用已有經驗解決新問題。這需要先存有模式經驗,在遇到待解決問題時,可將其分解為能與模式經驗匹配的舊部分和無法匹配的新部分,這樣就將關注點從解決整個問題轉化為解決其中新的那一部分。這一過程會遇到兩種情況:一是問題中的新部分還可以匹配模式經驗,這就是已有經驗的深化;二是新部分的問題不能轉化為模式經驗,這就是新經驗了。
以教材第15課“二進制轉換小能手”為例。其第3課時主要是利用函數實現任意兩個二進制數的加法運算。在KITTEN中沒有二進制數的數據類型,所以二進制數加法沒有現成的運算積木支持。盡管其原理和筆算過程都很簡單,但如果像本課第1課時和第2課時那樣也利用字符串對二進制運算進行模擬,即可發現其過程相對繁瑣。如果只是想求兩個二進制數的和,那么利用化歸的思想,完全可以將二進制數轉換成十進制數,從而將二進制數加法轉化為十進制數加法,這樣在加法環節就可以直接利用已有的運算積木,再將十進制結果轉化為二進制數即可。在這個思路中,二進制數和十進制數的相互轉化正是第1課時和第2課時學到的內容,只需要利用函數積木將相關腳本封裝起來即可直接利用。這一過程不僅可以幫助學生練習函數的使用,還可以培養學生化歸的意識。
參考文獻
[1][4]中華人民共和國教育部. 普通高中信息技術課程標準 (2017年版2020年修訂)[S].北京: 人民教育出版社,2020:6,68.
[2]唐培合,秦福利,唐新來.論計算思維及其教育[M]北京:科學技術文獻出版社,2018.
[3]王學男,林眾.美國《CSTA K-12 計算機科學課程標準(2017年修訂版)》的解讀與啟示[J].課程·教材·教法,2021(4):138-143.
[5]王榮良.中小學計算思維教育實踐[M].上海:上海科技教育出版社,2019: 160.
[6][日]細谷功.高維度思考法[M].程亮,譯.北京:中國華僑出版社,2018.
[7][8]陳鵬,黃榮懷,梁躍,張進寶. 如何培養計算思維——基于2006-2016年研究文獻及最新國際會議論文[J].現代遠程教育研究,2018(1):98-112.
[9][10]任友群,隋豐蔚,李鋒. 數字土著何以可能——也談計算思維進入中小學信息技術教育的必要性和可能性[J].中國電化教育,2016(1):2-8.
[11]河北省教育科學研究所.信息技術(八年級)[M].石家莊:河北人民出版社,2021:117.
(責任編輯 郭向和? ?校對 姚力寧)