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