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