邵紅祥
計算思維是一種問題求解思維,其一般經(jīng)歷抽象—形式化表達(dá)—構(gòu)造—自動化的方法路徑,這也是具有計算思維特征的思維軌跡。同時,計算思維作為一種思維活動,不會憑空產(chǎn)生,需要遇到某種困惑、懷疑或問題等才會被激活,是在知識的加工過程中不斷發(fā)展的。因此,在培養(yǎng)計算思維的過程中,知識是計算思維的材料,對知識的不同處理關(guān)系到計算思維的發(fā)展。為此,信息技術(shù)教師可利用知識的問題化、條件化、能力化和結(jié)構(gòu)化的“四化”策略,提升學(xué)生抽象、認(rèn)知、構(gòu)造和遷移的能力,從而發(fā)展學(xué)生的計算思維。
● 知識問題化,提升抽象能力
知識本身并不是力量,靈活運(yùn)用知識解決問題更重要。將知識問題化,設(shè)計出好的問題,引導(dǎo)學(xué)生發(fā)現(xiàn)問題、分析問題和解決問題,促進(jìn)學(xué)生主動思維。針對信息技術(shù)學(xué)科的求解問題,人們需要基于計算機(jī)科學(xué)的知識采用數(shù)字化、離散化、符號化、序列化等方法實(shí)現(xiàn)自動化。利用計算機(jī)實(shí)現(xiàn)自動計算的前提是抽象,即對事物的性質(zhì)、狀態(tài)及其變化過程或規(guī)律進(jìn)行符號化描述,其通過化簡等方式,抓住問題的關(guān)鍵特征,厘清問題的本質(zhì),將問題轉(zhuǎn)換成計算機(jī)可以處理的模型。抽象的過程其實(shí)是對事務(wù)處理流程的重構(gòu),最終能實(shí)現(xiàn)自動化來提高生產(chǎn)、生活和學(xué)習(xí)的效率。為此,提升抽象能力是計算思維能力培養(yǎng)的關(guān)鍵。
在培養(yǎng)學(xué)生抽象能力的過程中,要盡可能提供復(fù)雜的、不確定的現(xiàn)實(shí),即通過知識情境化來實(shí)現(xiàn)知識問題化。例如,利用計算機(jī)編程實(shí)現(xiàn)“猜數(shù)游戲”,可以創(chuàng)設(shè)如下情境:在一次班級聯(lián)歡會上,同學(xué)們玩了一個猜商品價格的游戲。A同學(xué)出示一商品,價格在1~100元之間,要求B同學(xué)猜價格。每猜一個價格,A同學(xué)需要回答猜對了、猜大了或猜小了?,F(xiàn)在,請你編寫一段程序,讓計算機(jī)來完成A同學(xué)的工作。在利用原有的編程知識來解決該問題之前,首先要從所給的情境中“分離”出與本問題有關(guān)的研究對象——商品和B同學(xué),不考慮其他無關(guān)的對象;然后,“提純”這兩個對象的本質(zhì)屬性,即商品的價格和B同學(xué)所猜的價格,忽略非本質(zhì)屬性,如商品的名稱與形狀、同學(xué)的性別與年齡等;最后,在提純出問題本質(zhì)的基礎(chǔ)上,還可以進(jìn)一步簡略,排除掉一些多余的信息以降低解決問題時的復(fù)雜性。經(jīng)過分離、提純和簡略以后,抽象出該問題關(guān)鍵的要素為商品的價格和B同學(xué)所猜的價格。
● 知識條件化,提升認(rèn)知能力
面對龐雜的任務(wù)或者設(shè)計巨大復(fù)雜的系統(tǒng),計算思維采用抽象來明確求解問題中的關(guān)鍵要素。然后,為了有效解決問題,還需要將問題形式化表達(dá),即選擇合適的方式描述系統(tǒng)的因果關(guān)系、關(guān)鍵要素的相互關(guān)系,或不同狀態(tài)的轉(zhuǎn)換關(guān)系等,使得問題易于處理和可計算。例如,根據(jù)問題的特征,選擇相應(yīng)的問題求解策略,建立相應(yīng)的問題求解模型,考慮相應(yīng)的問題求解效率,權(quán)衡相應(yīng)的問題求解時空開銷,等等。在此過程中,需要學(xué)生能熟練提取與問題相關(guān)的知識,具備對信息進(jìn)行有效判斷和選擇的能力,而這和學(xué)生的前概念認(rèn)知體系、元認(rèn)知風(fēng)格以及思維習(xí)慣有關(guān)。教師如果能將知識進(jìn)行條件化處理,將極大地提升學(xué)生的認(rèn)知能力,進(jìn)而培養(yǎng)學(xué)生的計算思維能力。知識條件化是指在課堂教學(xué)中,教師根據(jù)知識的內(nèi)容、形式、旨趣,不斷地變更問題的情境或思維的角度,讓學(xué)生掌握知識的本質(zhì),弄清知識的內(nèi)涵、外延,扣準(zhǔn)實(shí)際應(yīng)用的條件、范圍,從不同角度、不同層次對概念、規(guī)律進(jìn)行推敲、驗(yàn)證。知識的產(chǎn)生和運(yùn)用需要情境,情境是知識產(chǎn)生和運(yùn)用的條件。在實(shí)際應(yīng)用中,教師要創(chuàng)設(shè)不同的情境,讓知識重新回歸其存在的土壤,讓知識的呈現(xiàn)不再只是孤立的命題和事實(shí),讓學(xué)生在學(xué)習(xí)知識內(nèi)容的同時,從不同的思維角度,掌握這些知識間的聯(lián)系、適用的條件和范圍,以及它們是如何解決該問題的等等。
例如,在上述“猜數(shù)游戲”問題中,在得出與問題相關(guān)的“商品的價格”和“B同學(xué)所猜的價格”兩個關(guān)鍵要素的基礎(chǔ)上,需要思考這兩個關(guān)鍵要素之間有怎樣的聯(lián)系、怎樣處理才能解決問題等,從而梳理出相應(yīng)的計算模型:反復(fù)猜數(shù),直到“B同學(xué)所猜的價格”與“商品的價格”相等為止,每猜一個價格,分別給出“猜大了!”“猜小了!”“猜對了!”的提示。此時,需要學(xué)生提取與該問題相關(guān)的知識,如重復(fù)讓計算機(jī)做某件事情,可以采用循環(huán)結(jié)構(gòu)來解決;根據(jù)條件判斷分別給出相應(yīng)結(jié)果,可以采用選擇結(jié)構(gòu)來實(shí)現(xiàn)。并要讓新知與舊知產(chǎn)生聯(lián)系,如先前所學(xué)的for循環(huán)語句是否適用、選用哪種選擇結(jié)構(gòu)語句來實(shí)現(xiàn)等,在此基礎(chǔ)上建立相應(yīng)的計算模型。
進(jìn)一步地,可以在以上情境的基礎(chǔ)上,增加如下條件:B同學(xué)先從1~100的中間數(shù)50開始猜,根據(jù)計算機(jī)的提示決定下一個猜的價格數(shù)。如果猜大了,則在1~49之間取中間數(shù)繼續(xù)猜;如果猜小了,則取51~100之間的中間數(shù)繼續(xù)猜……如此反復(fù),直到猜對為止。此時,與情境問題相關(guān)的知識,從原先的程序結(jié)構(gòu)轉(zhuǎn)換成了二分查找算法,需要讓學(xué)生思考是不是任意的一列數(shù)據(jù)都可采用二分查找算法?該情境中為什么能用二分查找算法?通過情境的變換、問題的思考,讓學(xué)生變更不同的思維角度,思考相關(guān)知識適用的條件、相關(guān)知識是如何解決該問題的等。因此,建立該問題的計算模型就需要具有跟前面問題不一樣的知識和思維角度。
● 知識能力化,提升構(gòu)造能力
運(yùn)用計算機(jī)對抽象出的計算模型進(jìn)行自動化求解,需要掌握一定的思維方式和解決方法,尤其需要具備構(gòu)造性的思維能力。計算思維給人類求解問題提供了一條途徑,自從有了計算設(shè)備,人類就需要具備“構(gòu)造虛擬世界自由”的能力,能夠超越物理世界去打造各種系統(tǒng)。因此,我們要通過知識能力化,將獲取知識的過程內(nèi)化成一種能力,將知識內(nèi)化成解決問題的能力,將獲取的知識轉(zhuǎn)化成用于指導(dǎo)生產(chǎn)生活實(shí)踐的能力,具體而言,需要掌握計算機(jī)科學(xué)領(lǐng)域的思想方法,提升構(gòu)造的能力。例如,在用計算機(jī)編程求解問題之前,需要掌握“抽象建模—設(shè)計算法—編寫程序—運(yùn)行調(diào)試”的一般方法,要明確每個步驟的本質(zhì)及它們之間的聯(lián)系,要能運(yùn)用相應(yīng)的思想構(gòu)造出合適高效的算法,要能用某種程序設(shè)計語言準(zhǔn)確描述解決問題的方法與步驟等。構(gòu)造的過程是一個計算的過程,也是一個算法設(shè)計與實(shí)施的過程。
在上述“猜數(shù)游戲”問題中,在計算模型建立后,需要構(gòu)造相應(yīng)的算法,然后將算法用編程語言進(jìn)行描述,直至運(yùn)行程序解決問題。在構(gòu)造算法時,可以采用模塊化的思想,將大問題分解和細(xì)化成若干個可解的小問題,再通過求解這些基本問題求得原問題的解。針對“猜數(shù)游戲”問題,可以先采用循環(huán)結(jié)構(gòu)描述整個問題的求解過程,循環(huán)體為“輸入B同學(xué)猜的數(shù)guess,兩數(shù)比較”,然后將“兩數(shù)比較”細(xì)化,采用分支結(jié)構(gòu)實(shí)現(xiàn)“根據(jù)兩數(shù)比較的結(jié)果,輸出相應(yīng)的提示信息,若相等,將running賦值為True”的功能。
自圖靈的計算理論提出以來,科學(xué)家們已經(jīng)研究了眾多應(yīng)用信息技術(shù)解決問題的概念與原理,形成了具有豐富知識內(nèi)容且行之有效的分析問題與解決問題的典型方法與思想。在計算思維培養(yǎng)過程中,要將這些方法與思想能力化,使學(xué)生具備面對復(fù)雜問題能構(gòu)造恰當(dāng)?shù)慕鉀Q方案,并通過計算解決問題的能力。
● 知識結(jié)構(gòu)化,提升遷移能力
計算思維是以解決計算問題為出發(fā)點(diǎn),具有獨(dú)特的采集數(shù)據(jù)、抽象特征、構(gòu)建模型、形成解決方案的思維框架,具備認(rèn)知世界和解決問題的能力,并能遷移到其他領(lǐng)域。從中可以看出,遷移是計算思維培養(yǎng)需要達(dá)到的目標(biāo)。為此,新課標(biāo)理念下的教學(xué)要從過去關(guān)注學(xué)科知識技能轉(zhuǎn)向關(guān)注培養(yǎng)學(xué)生的關(guān)鍵能力和必備品質(zhì),通過知識結(jié)構(gòu)化,分析其內(nèi)在關(guān)聯(lián),推斷其邏輯關(guān)系,將零散的知識整合處理,使其圍繞“主題意義”,形成結(jié)構(gòu)化知識,進(jìn)而內(nèi)化知識,遷移運(yùn)用知識,促進(jìn)知識向核心素養(yǎng)轉(zhuǎn)化。
知識不是信息的簡單羅列,而是相互之間有內(nèi)在的聯(lián)系和邏輯關(guān)系的。知識只有通過學(xué)生在某些特定情境下的主動參與、互動體驗(yàn)、分析評價、內(nèi)化遷移才能真正建構(gòu)起來,才能被納入到已有的認(rèn)知結(jié)構(gòu)中,真正在大腦中形成長時記憶,在學(xué)習(xí)活動中被隨時“調(diào)用”,在深層次的有意義的學(xué)習(xí)活動中發(fā)揮重要作用。所以,知識結(jié)構(gòu)化強(qiáng)調(diào)知識都是聯(lián)系的、建構(gòu)的、整合的。在學(xué)習(xí)過程中,教師創(chuàng)設(shè)真實(shí)情境,讓學(xué)生通過抽象,分析、提出、形成學(xué)科問題,運(yùn)用相關(guān)的知識和技能形成學(xué)科解決方案,在此基礎(chǔ)上,還需要?dú)w納、概括和提煉出解決該問題運(yùn)用了哪些方法與思想、該解決方案還能解決哪些同類問題,形成實(shí)際解決方案,這樣,“現(xiàn)實(shí)世界中的真實(shí)問題”“學(xué)科問題”“學(xué)科解決方案”“實(shí)際解決方案”就形成了一個循環(huán)。也就是說,實(shí)際解決方案更有利于解決現(xiàn)實(shí)世界中的真實(shí)問題。因此,在整個過程中尤其要關(guān)注從“學(xué)科解決方案”到“實(shí)際解決方案”的建構(gòu),讓學(xué)生歸納、構(gòu)建新知識,并能基于新知識,提出批判性問題,形成自己的觀點(diǎn),將解決這個問題的思想和方法進(jìn)行遷移應(yīng)用,解決同類問題,舉一反三,一通百通,進(jìn)而在教學(xué)中培養(yǎng)學(xué)生的高階認(rèn)知,提升學(xué)生的思維能力。
在上述“猜數(shù)游戲”問題中,可以根據(jù)設(shè)計的算法編寫出相應(yīng)的程序代碼。當(dāng)學(xué)生運(yùn)行調(diào)試成功后,這是否意味整個學(xué)習(xí)活動的結(jié)束?答案是否定的,編寫出相應(yīng)的程序代碼,只是解決了學(xué)科問題,得到了學(xué)科解決方案,而要讓學(xué)生具有較強(qiáng)的遷移能力,還需要將該學(xué)科解決方案建構(gòu)成實(shí)際解決方案,可通過循環(huán)結(jié)構(gòu)中的條件和循環(huán)體如何抽象與表示、如何根據(jù)問題特征來選用while或for循環(huán)語句、不同的程序代碼是如何來實(shí)現(xiàn)同一功能的、效率和編寫實(shí)現(xiàn)上有何區(qū)別?等問題來實(shí)現(xiàn)。
在對學(xué)科解決方案進(jìn)行反思、提煉與拓展的過程中,建構(gòu)結(jié)構(gòu)化知識,激發(fā)學(xué)生的思維,引導(dǎo)學(xué)生將零散的知識整合起來,將所學(xué)的“死知識”轉(zhuǎn)化成解決實(shí)際問題的“活知識”,促進(jìn)知識的內(nèi)化,達(dá)到遷移解決同類問題的目標(biāo)。
計算思維是人類科學(xué)思維活動的重要組成部分,編程只是實(shí)踐計算思維的重要手段。因此,教師在教學(xué)過程中,要深刻領(lǐng)會計算思維的概念,抓住計算思維的本質(zhì),從計算思維培養(yǎng)的角度開展教與學(xué)的活動。當(dāng)然這是一個長期的過程,需要不斷探索,努力實(shí)踐。