于紀明,李冠瓊,朱 坤
(1.哈爾濱師范大學附屬中學 電教中心,黑龍江 哈爾濱 150000;2.哈爾濱師范大學 教育科學學院,黑龍江 哈爾濱 150000;3.哈爾濱市第三中學 電教中心,黑龍江 哈爾濱 150000)
隨著新興技術的興起,云計算、大數據、量化學習、人工智能等新興詞匯已成為現代化的標簽。百年大計教育為本,教育要順應現代化的發展,必然要順應時代需求,因此,人才的培養是重中之重。在人才培養實施階段中,人類的思維方式和實用工具決定行動方案,所以,培養人才還需從根本出發,調整思維方式,改變行動方案,提升問題解決的效率與質量。這就需要教育者關注對學習者計算思維的培養,改變學習者的思維模式,使問題解決得更高效快捷。
2006 年,周以真[1]發表論文《Computational Thinking》,自此,“計算思維”這一名詞便進入人們的視野。在此定義中可以看到,計算思維并不屬于某一具體學科,也并非完全屬于某一領域,而是作為一種抽象化的思維方式存在,其中將運用計算機科學的理念作為支撐,并最終在問題解決過程中作為一種工具呈現。另外,周以真[1]教授還指出,計算思維應當作為一種普適性思維為眾所用。周以真教授對計算思維提出的定義,雖然具有時代意義和開創性,但這個定義依舊是強調其工具特征,忽略了對計算思維本身的闡述,也就是內在的結構、框架、組成元素。2010 年美國師生創新技術體驗機構對計算思維進行了定義,較2006 年周以真教授提出的定義,對計算思維的應用層面進行了進一步的補充,說明:在運用計算思維進行問題解決中,應當做什么,怎樣做。2011 年,計算機科學教師協會(CSTA)與美國教育技術協會(ISTE)共同提出關于計算思維的認識,明確說明了運用計算思維進行問題解決的具體過程,充分體現了計算思維抽象與自動化的特征,也體現了計算思維、數學思維、工程思維之間的思維融合。2017 年,我國高中信息技術課程標準起草組說明了計算思維解決問題的一般過程,在這個過程中,計算機學科知識始終作為支撐貫穿整個環節,強調了計算思維與計算機學科的重要聯系,說明了其實踐操作的主要內容。
根據以上對不同國家、不同學者關于計算思維的定義分析可以發現,目前,人們對計算思維的統一認識存在學科基礎和功能屬性兩個方面。在學科基礎層面,學者們普遍將計算思維作為計算科學領域內的一項內容,認為其相關思想理念均與計算科學有著不可分割的聯系;在功能屬性中,學者們普遍認為,計算思維培養的主要目的是更好地進行問題解決。以上是關于學者們所提定義的統一認識,但就計算思維的其他內容要素、操作過程等方面,學者們均有不同的認識,而產生不同認識的原因就是由于計算思維本身內涵的豐富性和所處環境的多樣性,一個定義難以對計算思維進行不同背景下的全方位的解釋[2]。
在編程解決問題背景下的計算思維,通過人與計算機的有效溝通來體現計算思維的主要內涵,主要面向青少年學習群體所接受的K12(Kindergarten through twelfth grade,指從幼兒園到十二年級)階段的編程教學,NRC 指出將計算思維傳遞給學生的最有效手段是將其融于K12 階段的教學中。因此,通過K12 階段的編程教學,一方面培養學習者在計算科學方面的知識,另一方面提升學習者在利用編程進行問題解決的高效性和全面性,提升學生的計算思維能力,進而發展核心素養[3],最終目的是培養學生能夠在不插電活動中通過計算思維進行問題解決。作為與計算機學科有密切聯系的計算思維,從編程教學的視角下對計算思維進行培養能夠很好地提升學習者在問題解決方面的方法和手段[4]。
計算思維的運用充斥在生活中的每一件小事,在遇到問題時,如何運用計算思維解決問題?根據對近年來不同學者[5]對計算思維的不同理解以及與黑龍江省內多年從事計算思維培養的專家進行討論,共總結出3 種計算思維體現在求解問題過程中的步驟。
第1 種步驟:通過收集數據、分析數據理解和思考問題;去除問題的冗余部分,抽象定義問題,將問題化簡分解為小問題,分解與轉化的過程如圖1 所示。自上而下表示了問題的抽象程度的變化,自下而上體現了問題解決順序。接下來,對具有相同數據特征的所有問題進行模式化;定義解決問題的步驟,建立求解模型;不斷調試和驗證解決方案。

圖1 問題分解與解決過程
在此步驟中,需要將問題中存在的數據提取出來,判斷并觀察數據之間的聯系與規律,將問題抽象并重新定義為具有該數據特征的“問題母版”。接下來,根據所建立的“問題母版”研究解決問題的步驟,一般由淺至深、由易至難,從低級到高級。遞歸思想是在這個過程中常用到的思想,指遞進并回歸,從大問題分解至小問題,再從小問題進行解決,依次攻破,層級不斷上升,最終回歸所要解決的根本問題。確定問題解決步驟之后,將步驟模型化,模型的建立有利于在大腦中建立相對完整的問題解決系統,將其納入認知網絡之中,也有利于在今后將知識內化為能力,并進行能力的遷移。最后一個步驟是在不斷檢驗的過程中進行調試,相當于迭代過程,多次的試誤可以觀察方案中的不足之處,計算機會在學習者進行嘗試后予以反饋,幫助學習者發現問題,及時修改,不斷逼近目標,最終得到最優解。第1 種步驟的具體過程如圖2 所示。

圖2 第一種一般步驟的實現過程
第2 種步驟:在計算機特性的基礎之上,將問題進行抽象,使其轉化為計算機可以解決的計算問題,最終,通過程序設計語言實現問題的自動求解。當選擇第二種方法進行問題解決時,問題類型通常為比較復雜的計算問題。首先,需要理解問題的特性,在此過程中,會對問題進行關鍵詞的提取,過濾掉冗余信息,并對其重新排列組合成一道計算問題,過程中要考慮數據或者變量之間存在的規律,以便進行下一步的解決。
為了對第2 個步驟進行更好的說明,選取K12 階段編程課中的經典題:細胞分裂器。計算要求是算出第5 次分裂共產生多少細胞。
進一步將其轉化為計算問題:第1 次分裂后的細胞數為1×2,第2 次為2×2,第3 次為2×2×2......求問第5 次分裂后,最終的細胞總數為多少。以上是對問題特性的理解以及轉化。接下來,通過程序語言實現問題的自動求解。自動化建立在“有效溝通”之后,有效溝通需要運用計算機知識,結合現實問題,設計算法實現,利用程序設計語言對計算機發出指令,使其按照指令進行自動化求解。因此,還需對題目進行算法設計,在題目中,根據數據特征及題目分析,可以知道其中運用到的算法為乘法與加法,乘法用于表示每次分裂的細胞數,加法用來進行5 次細胞的總數運算。根據以上分析,可以確定變量數量與類型并進行代碼編寫,最終進行自動化的過程。
第3 種步驟:問題抽象,符號化表示,算法求解,算法實現,代碼編寫與調試。第3 種一般步驟是建立在算法思維的基礎上提出的。算法思維屬于過程性思維方式,在運用其進行問題解決時,首先對問題進行理解,并將問題進行分解降級,大問題分解轉換為小問題,并利用抽象思維將問題進行抽象。接下來,通過符號對抽象后的問題重新表示以此清楚地看到各變量之間存在的關系,根據題目,考慮需要用到的算法。算法設計完成后,確定過程中的每一步計算結構,并運用計算機對算法思維結果進行自動化呈現。代碼編寫完成后,在調試中,計算機能夠及時予以反饋,通過反饋內容,可以看到代碼中存在的計算機語言規則方面的錯誤,或函數調用過程中所出現的錯誤。這時,可以根據提示進行定位并進行修改。最終得到最優的問題解決方案。
以上3 種步驟都是基于青少年通過編程解決問題的計算思維體現,從步驟的解釋說明可以看出,3 種步驟的不同之處在于操作方法以及順序差異,但3 種步驟雖然表現形式不同,本質卻是相同的。面對問題的解決,從操作對象的角度進行劃分,可以總結為一種一般步驟:分析問題、找尋算法、自動化實現、調試。這4 個操作步驟可以涵蓋前文中所提出的3 種步驟,按照問題、方案、迭代的順序進行問題解決。
2010 年,周以真教授對計算思維的本質給出了框架圖,在該框架中,周以真教授將主要過程分為自上而下和自下而上。自上而下進行自動化的實現,自下而上進行抽象過程。需要將應用語言最終轉化為機器指令進行計算機處理,而機器指令又可以抽象為應用語言。
另外,通過本質框架圖,可以了解到該框架圖的基本原理是建立在計算科學的基礎之上,這是計算思維的學科基礎,但是計算思維作為一項能力,其本質框架圖只能讓人們了解到計算思維中問題解決過程間的固態關系,無法指導教學者進行計算思維培養教育。目前關于計算思維的三維框架和八概念框架[6]也都是僅描述了計算思維的下位概念之間的關系。結合周以真教授提出的計算思維的框架,在皮亞杰發生認識論的理論指導下,在編程環境下青少年計算思維的培養框架構建如下。
計算思維培養框架主要用來指導計算思維培養活動,教師可以依據此內容對課程進行教學設計或者維度設計,也可以依據本框架對計算思維活動進行模塊化評價,具體框架內容如圖3 所示。

圖3 計算思維培養框架
該框架主要分為4 個部分:計算思維的問題解決步驟、能力培養、遵循原則和學科基礎。
(1)計算思維的問題解決步驟是內核部分。由于計算思維最核心的直觀體現即問題解決,因此,問題解決是計算思維能力發展框架中的核心關鍵層。本框架中,所包含的計算思維問題解決步驟分為4 個:分析問題、找到算法、自動化實現、調試。這4 個步驟是根據第二小結中所提到的3 類一般步驟中總結而來,盡管這3 個一般步驟不同,但操作意義具有同一性,因此,將其歸為4 個主要步驟。
(2)從問題解決的4 個步驟出發,每個步驟中都有發展或培養的主要能力,因此,能力培養在中間層,也是問題解決步驟的外圍層。由于內核部分中每一個步驟都是問題解決的重要組成,因此,在實現過程中,每一個步驟都能夠發展一種或多種能力。在分析問題過程中,可以發展學習者的分解與轉化能力以及抽象能力。其中,抽象能力作為計算思維能力培養的關鍵,將問題抽象為計算問題或者將大問題分解轉化為小問題;在找尋算法的過程中,將發展學習者模式識別、建模能力。
首先,通過找尋算法,培養學習者的模式識別能力,在這個過程中,學習者需要將算法對應為相應的問題,識別問題以及算法的主要類型。其次,在第2 個階段中,即在模式識別成功后,對解決方案進行建模,通過建模確定算法的主要實施階段;在自動化實現的過程中,可以發展學習者形式化的能力。最后,在調試步驟中,發展學生的糾錯能力以及調試代碼的能力。例如,計算機在實施命令的過程中,若代碼編寫不正確,則會向用戶反饋error 信息,學習者根據反饋信息在相應位置找到錯誤并進行改正。
(3)遵循原則是計算思維問題解決和能力實現的主要依據,因此,作為環狀最外層。在計算思維問題解決和能力培養過程中,應當始終遵循科學性、完整性、高效性和可操作性,科學性意指遵循認知科學、計算科學等;完整性意指在整個過程中應當具有全局思維,無論是進行問題分析還是算法解決都需要瞻前顧后,能力發展也需要具有完整性;高效性是指問題解決要達到最優效益,可操作性表示問題解決方案要切實可行。
(4)計算科學和數學科學作為計算思維發展框架中的學科基礎,位于底層支撐。計算科學是計算思維進行自動化實現的主要支撐,同時,計算思維也利用計算科學的方法進行問題解決[7]。例如,在問題解決前做準備工作,這相當于計算機中的緩存或者預置;當我們在問題解決過程中將其轉化為基礎問題,并從小問題開始自下而上解決,這相當于計算科學中的回推;當我們對問題進行分析后提出自己的想法并選擇解決方案時,這屬于計算機的在線算法;最后,在整個問題解決方案的設計過程中,需要考慮操作步驟的冗余性以及失敗結果中存在的無關性。
數學科學在計算思維問題解決過程中主要幫助學習者進行算法設計和問題模式化。首先,在算法設計的過程中需要運用數學知識進行分析推理,設計出合適的算法解決。在問題模式化過程中,需要將問題轉化為數學問題,便于進行下一步的算法設計。因此,計算思維解決問題的過程中,數學思維是十分重要的[8]。
對于編程環境下青少年計算思維的培養,目前處于研究的關鍵階段,主要問題和難點在于學者們對計算思維培養的維度和框架還沒有統一的劃分和設定,對計算思維的量化評價還需進一步探討。因此,在未來的研究中,我們將通過本文中所定義的框架,研究云平臺中計算思維的量化評價,并通過數據挖掘和聚類分析對學習者進行畫像,進而完善平臺中的個性化服務。