摘要:本文以解決“計算問題”作為計算思維的核心,結(jié)合計算機(jī)科學(xué)等相關(guān)學(xué)科的教學(xué)實踐,提出了一個解決計算問題的過程框架,總結(jié)了人們在解決計算問題的過程中經(jīng)歷的重要思維階段和行動環(huán)節(jié)。該過程框架有助于推動對計算思維內(nèi)涵的深入研究,并可以成為教師開展計算思維教學(xué)的教學(xué)模型。
關(guān)鍵詞:計算思維;問題解決;計算問題
中圖分類號:G434 文獻(xiàn)標(biāo)識碼:A 論文編號:1674-2117(2024)18-0090-05
計算機(jī)科學(xué)和信息技術(shù)的發(fā)展影響了人們對計算思維的理解,以及對計算思維的教育理念和教學(xué)方式的理解。本文基于“計算思維的核心是解決計算問題”這一本質(zhì)性認(rèn)識,從計算理論和思維理論出發(fā),在對與計算思維緊密相關(guān)的若干概念的辨析的基礎(chǔ)上,結(jié)合相關(guān)教學(xué)實踐,提出了計算問題解決的過程模型,討論了該過程中影響實踐的重要因素,以期為計算思維教育實踐者和課程設(shè)計者提供實踐思路。
計算思維概念提出的意義和價值
盡管計算思維的概念是由周以真(Jeannette Wing)教授于2006年正式提出,但是周教授也指出這個概念的首創(chuàng)者是MIT的認(rèn)知科學(xué)家西摩爾·派普特(Seymour Papert)[1],西摩爾·派普特于20世紀(jì)60年代發(fā)現(xiàn)LOGO語言編程中的問題解決思維對中小學(xué)生認(rèn)知發(fā)展的影響。周教授的貢獻(xiàn)在于用“計算思維”概念標(biāo)識出計算機(jī)時代一種獨(dú)特的思維過程,闡述了這種思維過程的普遍存在性,論證了在計算機(jī)無處不在的時代各行各業(yè)與計算機(jī)打交道的人都需要具備這種思維。
1.計算機(jī)學(xué)科的教育歷程回顧
早期,學(xué)生對計算機(jī)學(xué)科的學(xué)習(xí)是從接受各種“計算知識”開始的[2],其中編程語言作為人與計算機(jī)“交流”的工具,順理成章地占據(jù)了主要地位。由于算法設(shè)計是編程的核心,所以算法研究一直是計算機(jī)科學(xué)領(lǐng)域的重中之重,有關(guān)算法的知識也自然而然成為教學(xué)的重點(diǎn)。將學(xué)習(xí)計算思維等同為掌握“算法思維”,這種認(rèn)識對現(xiàn)在的計算思維培養(yǎng)和計算機(jī)科學(xué)教學(xué)仍存在深刻的影響。[3]
自20世紀(jì)80年代起,隨著計算機(jī)軟件的崛起和普及,人們關(guān)注的焦點(diǎn)轉(zhuǎn)向了計算機(jī)軟件的應(yīng)用領(lǐng)域,對信息時代人才的計算機(jī)素養(yǎng)的教育轉(zhuǎn)變?yōu)閷τ嬎愎ぞ哂绕涫怯嬎銠C(jī)軟件的學(xué)習(xí)。受此影響,我國的中小學(xué)計算機(jī)教育的主體內(nèi)容也由編程語言學(xué)習(xí)(指揮計算機(jī))轉(zhuǎn)向了應(yīng)用軟件(以計算機(jī)為工具)的學(xué)習(xí),典型的學(xué)習(xí)內(nèi)容包括文字處理軟件、幻燈片制作軟件、畫圖修圖軟件等。[4]英、澳等國也將“運(yùn)用技術(shù)工具處理信息資源”等內(nèi)容寫入信息與通信技術(shù)的課程標(biāo)準(zhǔn)。[5]然而這一“唯工具論”的教學(xué)理念很快就遇到了問題。由于計算機(jī)軟件的飛速發(fā)展和頻繁更新,教學(xué)內(nèi)容迭代的速度明顯跟不上軟件產(chǎn)品更新?lián)Q代的速度,這種“職業(yè)技能培訓(xùn)”式的教學(xué)目標(biāo)設(shè)定,非但不能增進(jìn)學(xué)生對計算機(jī)技術(shù)發(fā)展的認(rèn)識,反而會讓學(xué)生陷入“為學(xué)工具而學(xué)工具”的誤區(qū)。[6]但是從計算機(jī)科學(xué)的角度講,正是由于計算機(jī)軟件的大力發(fā)展,系統(tǒng)化思維才逐漸受到重視,系統(tǒng)、模型、架構(gòu)等概念成了學(xué)科發(fā)展的基石,這對此后計算機(jī)科學(xué)的發(fā)展產(chǎn)生了深遠(yuǎn)的影響,也為人們對計算思維的理解帶來了新的啟發(fā)。
2.計算思維的“問題解決”特性
在歷經(jīng)了“計算知識接受”和“認(rèn)知工具應(yīng)用”兩個階段后[7],人們逐漸發(fā)現(xiàn)計算思維的本質(zhì)是利用計算機(jī)這個工具最大化地解決問題。從思維理論上看,這一趨勢也逐漸與思維的“解決問題”這一根本特性相吻合。[8]因此,了解與掌握計算機(jī)系統(tǒng)的工作原理,并利用計算機(jī)科學(xué)和信息技術(shù)領(lǐng)域的思想方法解決問題,成為計算思維教育的重要特征和價值導(dǎo)向[9],計算思維的教育也步入了“普世價值推廣”階段。[10]2011年,美國國際教育技術(shù)協(xié)會(ISTE)和計算機(jī)科學(xué)教師協(xié)會(CSTA)將計算思維定義為借助計算機(jī)或相關(guān)工具解決問題的過程,并強(qiáng)調(diào)要將這種思維方式應(yīng)用于寬泛的問題解決中。[11]在我國《普通高中信息技術(shù)課程標(biāo)準(zhǔn)(2017年版)》中,計算思維被定義為:個體在運(yùn)用計算機(jī)科學(xué)領(lǐng)域的思想方法形成問題解決方案的過程中產(chǎn)生的一系列思維活動。
問題解決能力與計算思維的掛鉤,已成為研究領(lǐng)域和教學(xué)實踐領(lǐng)域的共識,圍繞“如何培養(yǎng)問題解決能力”的新一輪探索已然展開。計算機(jī)科學(xué)家威廉·沃爾夫(William Allan Wulf)認(rèn)為利用計算思維解決問題主要依賴于過程的處理[12],因此算法的學(xué)習(xí)是培養(yǎng)計算思維的關(guān)鍵途徑。美國數(shù)學(xué)家、計算機(jī)科學(xué)家和教育家戴維·穆爾桑德(David Moursund)等人談到程序思維和計算思維密切相關(guān),因此開發(fā)、表征、測試、調(diào)試,以及各自程序性的指令都是問題解決的重要方法。[13]哥倫比亞大學(xué)教授阿霍提出,構(gòu)造問題解決方案的關(guān)鍵在于其所依賴的計算模型,因此尋找適當(dāng)?shù)挠嬎隳P陀靡越缍▎栴}并得出解決方案是培養(yǎng)計算思維的重要途徑之一。[14]計算思維的提出者周以真指出“抽象與自動化”是計算思維的核心,并建議在計算思維的培養(yǎng)過程中應(yīng)注重與工程學(xué)之間的聯(lián)系。[15-16]計算機(jī)科學(xué)家羅伯特·康斯特勃(Robert Constable)則認(rèn)為,計算思維不是一套靜態(tài)的、有限的技能和思維過程,而是一個開放的、不斷增長的“概念清單(Growing List of Concepts)”[17],這也說明了計算思維的內(nèi)涵以及培養(yǎng)方式會隨著科學(xué)技術(shù)的發(fā)展而不斷地更新。
從上面的綜述中可以看出,人們對計算思維以及利用計算思維解決問題的方式有著各種各樣的理解,計算思維的培養(yǎng)理念和方式也不盡相同。本文嘗試將相關(guān)的零散觀點(diǎn)進(jìn)行組織整合,形成一個相對完整的計算問題解決過程框架,以便更好地理解和進(jìn)一步研究計算思維及其內(nèi)涵。
計算問題解決過程
在計算理論中,“計算問題”指的是能夠在計算機(jī)上以合適的數(shù)學(xué)表達(dá)方式表示,并存在有效的解決算法的問題。[18]因此,從問題解決的角度來看,具備計算思維的學(xué)生,在遇到生活實際問題時,首先要基于對問題的理解與分析,判斷其是不是一個計算問題,或者能否轉(zhuǎn)化為一個計算問題。在解決計算問題時,學(xué)生會經(jīng)歷生成計算策略、構(gòu)建計算模型、設(shè)計算法,以及借助相應(yīng)計算系統(tǒng)實現(xiàn)計算作品等過程。
當(dāng)學(xué)生對計算問題有了充分的理解后,就需要先概括描述問題解決的思路和步驟,包括嘗試將其分解為易于控制和實現(xiàn)的子問題,這種有一定的抽象度的解題步驟稱之為“計算策略”。[19]計算策略是學(xué)生面對計算問題時產(chǎn)生的初步解決思路,有時還需要借助其他學(xué)科理論知識、生活常識或經(jīng)驗,以及相關(guān)數(shù)據(jù)分析結(jié)果,為問題的定義和分解提供思路。計算策略的選擇反映了學(xué)生對計算問題的認(rèn)識與理解程度,更影響著后續(xù)計算模型的構(gòu)建與算法的設(shè)計。
抽象是計算思維的本質(zhì)之一,形式化又是計算思維的重要表達(dá)方式[20],而“模型”正是對某一類別問題特定的形式化表達(dá)。因此,在確定了問題解決目標(biāo)并形成了初步的計算策略后,學(xué)生就應(yīng)當(dāng)基于對問題的理解構(gòu)建相應(yīng)的計算模型。“計算模型”指的是能夠?qū)λ惴ɑ虺绦蜻M(jìn)行規(guī)約和分析的框架,包含四個功能,即描述各功能模塊如何相互連接、判定有效的算法和程序、定義給定輸入的有效執(zhí)行序列,以及能夠計算每一模塊的執(zhí)行成本。[21]
概括能力是學(xué)科能力和思維能力的基礎(chǔ)。[22]構(gòu)建計算模型的過程正是學(xué)生抽象與概括計算問題特征的必要過程,也是對計算策略實施的模塊化、形式化表達(dá)的過程。由于計算模型是一個由相互聯(lián)系、相互作用的元素組成的集合,學(xué)生在抽象建模的過程中應(yīng)以系統(tǒng)化的方式對其進(jìn)行思考和設(shè)計。按照從整體到局部的邏輯,學(xué)生應(yīng)先忽略底層交互細(xì)節(jié),從整體上理解模型的行為和特征,識別模型的構(gòu)成元素、行為、層次關(guān)系等,而后進(jìn)行模塊化或?qū)哟位O(shè)計。按照從內(nèi)到外的角度,在計算模型的構(gòu)建過程中,應(yīng)先定義其邊界、范圍和大小,并控制復(fù)雜度,然后理解模型與外部環(huán)境的相互作用,識別模型外的關(guān)鍵影響因素,調(diào)整和優(yōu)化模型的設(shè)計。[23]
自動化是計算思維的另一個本質(zhì)。自動化是計算機(jī)最根本的特性,它離不開算法的支持。因此,在完成模型的建構(gòu)之后,學(xué)生就要針對模型中的每個模塊進(jìn)行算法設(shè)計,而計算概念是算法設(shè)計的基礎(chǔ),在Brennan和Resnick提出的計算思維三維框架中,列舉了七個廣泛使用的計算概念,即序列、循環(huán)、事件、并行、條件、運(yùn)算和數(shù)據(jù)。[24]在學(xué)習(xí)和實踐的過程中,學(xué)生還會遇到更多專業(yè)、復(fù)雜的計算概念。學(xué)生在充分理解了算法的應(yīng)用情境后,便可結(jié)合適用的計算概念,使用合適的方式(如流程圖、偽代碼等)對算法進(jìn)行設(shè)計和表達(dá),并且能夠基于經(jīng)驗或數(shù)學(xué)理論分析效率,對算法本身及計算模型進(jìn)行優(yōu)化。
思維具有生產(chǎn)性,人們會為解決問題制作思想產(chǎn)品。[25]學(xué)生在完成算法設(shè)計后,就需要借助計算系統(tǒng)加以驗證,以迭代的方式實現(xiàn)并完善解決方案,創(chuàng)造計算作品。計算系統(tǒng)在廣義上指的是任何可以進(jìn)行計算和信息處理的設(shè)備,在這里筆者將計算系統(tǒng)定義為解決計算問題所需要的平臺,它可以是某種編程環(huán)境,也可以是某個應(yīng)用程序,甚至可以是一臺具體的計算機(jī)。而在創(chuàng)造計算作品的過程中,學(xué)生還需從功能性、可靠性、易用性等角度對計算作品進(jìn)行分析和評估,并歷經(jīng)多次的測試調(diào)試和性能優(yōu)化,甚至還需收集他人(用戶)對作品的評價與反饋,才能保證計算問題被全面、有效地解決。[26]
圖1所示反映了計算問題解決過程中學(xué)生可能經(jīng)歷的重要實踐活動。[27]如果說在生成計算策略時需要的是問題界定與問題分解能力,那么在構(gòu)建計算模型的過程中,需要的則是抽象、概括和系統(tǒng)化思維能力。在算法設(shè)計與實現(xiàn)階段需要對計算概念有充分的了解以便規(guī)劃自動化過程。軟件的調(diào)試、測試、迭代開發(fā)則體現(xiàn)了工程思維和系統(tǒng)化思維。
案例分析
下面,筆者結(jié)合實際的教學(xué)案例,詳細(xì)描述如何引導(dǎo)學(xué)生在遇到具體問題時,有意識地思考與實施上述計算問題解決過程框架的每一步驟,在最終完成問題解決的同時,習(xí)得并強(qiáng)化相關(guān)的計算思維能力。本課使用某圖形化編程平臺作為教學(xué)工具,面向?qū)ο鬄樾W(xué)三至四年級的學(xué)生。
在本課中,學(xué)生的任務(wù)是制作一個抽獎大轉(zhuǎn)盤程序。在觀看教師對已完成轉(zhuǎn)盤游戲的效果演示后,學(xué)生很容易發(fā)現(xiàn)該程序的大致運(yùn)行機(jī)制,即在有抽獎權(quán)限的玩家點(diǎn)擊按鈕后,轉(zhuǎn)盤開始轉(zhuǎn)動,一段時間后轉(zhuǎn)盤停下,根據(jù)指針位置提示所得獎勵。這樣,學(xué)生在腦海中便可產(chǎn)生初步的計算策略,這時教師要求學(xué)生把初步的計算策略畫在紙上,幫助學(xué)生明確任務(wù)完成步驟的第一級抽象,如圖2(a)所示。
然后教師引導(dǎo)學(xué)生依序?qū)Τ绦蛑械拿恳粋€角色的行為進(jìn)行完整分析?!鞍粹o”是啟動轉(zhuǎn)盤的開關(guān),當(dāng)它被點(diǎn)擊后,便會有一個被按下的動畫效果,之后觸發(fā)“轉(zhuǎn)盤”轉(zhuǎn)動,“轉(zhuǎn)盤”在持續(xù)轉(zhuǎn)動一段時間后,會在隨機(jī)位置停下,最后根據(jù)“指針”所指位置,提示玩家所中獎品。根據(jù)上面對“按鈕”“轉(zhuǎn)盤”和“指針”三個角色功能和交互關(guān)系的梳理,學(xué)生便可構(gòu)建出如圖2(b)所示的計算模型。
接著,教師便可引導(dǎo)學(xué)生圍繞計算模型涉及的相關(guān)計算概念,復(fù)習(xí)已知計算概念,學(xué)習(xí)新的計算概念。在掌握了必要的計算概念后,學(xué)生就能以角色為對象,在編程平臺上進(jìn)行編程,進(jìn)行細(xì)節(jié)化的算法設(shè)計和實現(xiàn),具體如圖2(c)和圖2(d)所示。
總結(jié)
本文圍繞“計算思維的核心是解決計算問題”這一中心思想,并使用計算理論中的部分概念,構(gòu)建了“界定計算問題—形成計算策略—構(gòu)建計算模型—設(shè)計算法—借助計算系統(tǒng)實現(xiàn)計算作品—解決計算問題”的計算問題解決過程框架。
對于該框架在教學(xué)實踐中的落地,教師和學(xué)者可以從單元設(shè)計、教學(xué)設(shè)計和教學(xué)評價方面深入探索。在單元設(shè)計方面,教師可以設(shè)置各單元的重點(diǎn)計算思維實踐,梳理實踐能力之間的進(jìn)階關(guān)聯(lián),并將它與計算思維概念結(jié)合編寫進(jìn)階的能力目標(biāo)。在教學(xué)設(shè)計方面,教師可以圍繞圖1中不同階段可能經(jīng)歷的重要計算實踐設(shè)計教學(xué)活動,構(gòu)建思維發(fā)生發(fā)展的空間。在教學(xué)評價方面,該框架可以作為計算思維表現(xiàn)性評價的參考依據(jù)。但該框架目前僅圍繞計算理論及計算機(jī)科學(xué)等方面展開,如何將其應(yīng)用于數(shù)學(xué)、物理等自然科學(xué)的教學(xué)與研究,甚至向社會科學(xué)方向推廣,仍有待進(jìn)一步研究。
參考文獻(xiàn):
[1]Wing,J.Computational Thinking[J].Communications of the ACM.2006,49(03):33-36.
[2][6][7][10]李鋒,王吉慶.計算思維教育:從“為計算”到“用計算”[J].中國電化教育,2015(10):6-10+21.
[3]張進(jìn)寶.計算思維教育:概念演變與面臨的挑戰(zhàn)[J].現(xiàn)代遠(yuǎn)程教育研究,2019,31(06):89-101.
[4][20]王榮良.中小學(xué)計算思維教育實踐[M].上海:上海科技教育出版社,2019.
[5]劉敏娜,張倩葦.國外計算思維教育研究進(jìn)展[J].開放教育研究,2018,24(01):41-53.
[8][25]林崇德.我的心理學(xué)觀——聚焦思維結(jié)構(gòu)的智力理論[M].北京:商務(wù)印書館,2008.
[9]李鋒.中小學(xué)計算思維教育:STEM課程的視角[J].中國遠(yuǎn)程教育,2018(02):44-49.
[11]ISTE,CSTA.Operational Definition of Computational Thinking for K-12 Education[DB/OL].[2012-04-15].https://cdn.iste.org/www-root/Computational_Thinking_Operational_Definition_ISTE.pdf.
[12][13][15][17]National Research Council.Report of a Workshop on the Scope and Nature of Computational Thinking[R].Washing(D.C.):The National Academies Press,2010.
[14]Aho,V.Computation and Computational Thinking[J].The Computer Journal,2012,55(07):832-835.
[16]Wing,J.Computational Thinking and Thinking about Computing [J].Philosophical Transactions of the Royal Society,2008,366(1881):3717-3725.
[18]Sipser,M. Introduction to the Theory of Computation (3rd ed.)[M].Boston, MA: Cengage Learning,2013.
[19][21]Bilardi,G., & Pietracaprina,A. Models of Computation, Theoretical[M].Boston, MA: Springer,2011.
[22]林崇德.從智力到學(xué)科能力[J].課程·教材·教法,2015,35(01):9-20.
[23][26][27]李澤,李偉,毛頓,等.計算思維實踐框架研究[J].中小學(xué)信息技術(shù)教育,2021(09):7-10.
[24]Brennan K.,Resnick M.New frameworks for studying and assessing the development of computational thinking[J].American educational research association,2012(01):25.
作者簡介:李澤,深圳點(diǎn)貓科技有限公司高級工程師;毛頓,深圳點(diǎn)貓科技有限公司高級工程師;夏立,深圳職業(yè)技術(shù)大學(xué)商務(wù)外語學(xué)院講師。
本文為廣東省教育教學(xué)成果特等獎“八微驅(qū)動、集群推進(jìn):愛加(AI+)篤行創(chuàng)客教育探索與實踐”的階段性研究成果;受深圳職業(yè)技術(shù)學(xué)院校級科研啟動項目(6022312003S)資助。