中圖分類號:G434文獻標識碼:A論文編號:1674—2117(2025)19—0048-05
引言
當今時代,計算思維已成為高中生核心素養的核心要素,且對其學業發展有著深遠的影響。然而,計算思維的培養困難重重,面臨著諸多挑戰: ① 對計算思維的本質理解不足。多數學生對計算思維的認知停留在算法概念、程序結構等知識層面,缺乏抽象建模解析復雜問題的高階思維活動。 ② 學習與實踐動能不足。計算思維的內化與提升,依賴學生的主動學習與實踐探索,多數學生將學習活動局限于課堂,缺乏自主學習的積極性和實踐探索的創新意識。 ③ 計算思維培養體系薄弱。課堂教學缺乏結構化指導,更缺乏小組協作建模、算法優化論證以及跨學科項目式學習等實踐探究活動,學生難以在真實問題情境中完成從知識應用到能力建構的轉化,嚴重制約了其解決復雜問題的實踐能力發展。鑒于上述現狀,筆者認為,強化計算思維的培養體系,是破解現存難題的關鍵。因此,在教學中應錨定“算法設計”與“計算思維能力提升”的耦合關系,在結構化課程指導下,依托小組合作開展項目式學習,探究算法多樣性與算法優化對計算思維培養的賦能機制,并以此為突破口,逐步完善計算思維的培養體系。
概念界定
1.算法設計
圖靈獎得主D.E.Knuth將“算法”定義為有窮規則的集合,這些規則構成了解決某一特定類型問題的操作序列。算法設計是指對解決問題的“算法”進行設計與分析的過程,包括選擇合適的算法、驗證算法的正確性與有效性,以及優化算法性能等多個方面。算法設計的目的是找到一種有效且高效的方法來解決特定問題,這一過程通常涉及問題理解、數據分析、數學原理及計算機科學理論知識的綜合運用。
2.計算思維
“計算思維”由周以真教授于2006年首次提出,其定義為:運用計算機科學的基礎概念去求解問題設計系統,以及理解人類行為等涵蓋計算機科學本質特征的一系列思維活動。換言之,計算思維就是通過約簡、嵌入、轉化和仿真等方法,將復雜問題重構為可解問題的認知過程,其本質是一種具有普適性的問題解決范式與思維技能。[2]
《普通高中信息技術課程標準(2017年版2020年修訂)》(以下簡稱“新課標”)將計算思維納入到學科核心素養體系,標志著計算思維的培養已成為基礎教育階段的重要任務。新課標中提到,計算思維是指個體運用計算機科學領域的思想方法,在形成問題解決方案的過程中產生的一系列思維活動。還提到,具備計算思維的學生,能夠采用計算機處理問題的方式在信息活動中形成問題的解決方案,能夠總結利用計算機解決問題的過程與方法,遷移到其他問題的解決中。正如相關研究指出,計算思維本質上是“運用知識遷移,將信息化手段與方法融人問題解決的思維能力”。
算法設計與計算思維的關系
2011年,國際教育技術協會(ISTE)與美國計算機科學教師協會(CSTA)聯合制訂了計算思維解決問題的流程框架(如圖1)。其中,“算法設計”是計算思維解決問題的核心環節,涉及問題解決的具體步驟和方法,是連接思維過程與計算機實現的橋梁。
法多樣性”和“引導算法優化”等策略,促進能力的提升。
以計算思維培養為導向的教學探索
在教學中,筆者以浙教版選擇性必修1《數據與數據結構》第5章為例進行探索,前兩節的主要知識點及對應的計算思維能力培養內容如表2所示。該教學活動采用項目式學習法,以小組協作形式驅動學生在真實問題情境中開展探究式學習。基于學生實踐,分析算法多樣性與算法優化如何通過思維解構、邏輯推演、動態調試等關鍵環節,逐步推動學生從知識遷移到能力建構的轉變,并探討如何實現計算思維的內化,從而增強學生解決復雜問題的能力。
圖1計算思維解決問題的流程框架

項目1:斐波那契數列求值
在計算機科學教育領域,眾多研究者認為程序設計是培養計算思維最有效的方法,因為程序設計過程涵蓋了從問題提出到計算機解決問題的所有步驟,包括問題分解、抽象建模、算法設計、迭代優化、歸納驗證等多個認知環節,這些認知環節構成了計算思維技能的核心要素。其中,算法設計作為將問題分解抽象后形成解決方案的符號化過程,要求學生不僅能夠對問題進行結構化拆解與模型建構,還需要通過邏輯建模實現問題分解的形式化表達。這一過程能夠鍛煉學生的理性思維和邏輯分析能力,有助于計算思維的養成。
表1計算思維能力量化指標[]

學生分別采用迭代與遞歸兩種算法求解斐波那契數列,經教師歸納整理的算法以Python程序語言呈現(如下頁表3)。在程序執行過程中學生發現,在用兩種算法計算同一項數值時,隨著n值的增大,遞歸算法的耗時顯著增長,甚至在短時間內無法返回計算結果。針對這一現象,學生以小組為單位展開探究。
表2 主要知識點及計算思維能力培養點

計算思維能力的養成可通過量化指標進行評估,具體評價標準如表1所示。其中,“分析問題的能力”與“知識應用的能力”可依據其評價標準,在算法與程序設計解決問題的過程中,通過“提倡算
在小組合作探究的過程中,教師以fibo(5)為例引導學生分析并繪制了遞歸算法的求值路徑,如下頁圖2所示。
學生基于圖2中的分析發現,在計算fibo(5)的過程中,fibo(4)被調用執行了1次,fibo(3)執行了2次,fibo(2)執行了3次,fibo(1)執行了5次,fibo(O)執行了3次。由于同一函數fibo(i)在求值過程中被多次重復調用,且每次調用都需要重新進行計算,這導致遞歸算法的耗時隨著n值的增大而呈指數級增長。通過梳理,學生歸納出迭代與遞歸算法在求解斐波那契數列問題時的算法復雜度對比,如表4所示。
針對上述問題,學生對遞歸算法進行了優化,優化后的遞歸算法及其算法復雜度如下頁表5所示。通過使用數組fb[來存儲斐波那契數列中每一項初次求值后的結果(將dgy_fibo(i)函數的計算值存入fb[il),使得后續同一項函數的調用無需重復計算。該優化策略以空間置換時間,顯著降低了遞歸算法的時間復雜度。測試數據表明,當n值相同時,優化后的遞歸算法與迭代算法的運行時間趨近一致。
通過迭代與遞歸算法求斐波那契數列的實踐活動,學生深刻認識到:在解決同一問題時,不應局限于單一算法,而應挖掘不同算法之間的關聯,從而構建完整的知識體系。同時,關注算法性能的優劣,探求如何降低算法復雜度來提高算法的性能,使之更加有效地解決問題。基于此,逐步建立起不同算法間的有機聯系,形成更具系統性的問題解決策略。
項目2:冪運算求a”(a為正整數)學生分別采用迭代與遞歸算法求解a,經教師歸納整理的算法以Python程序語言呈現(如下頁表6)。在執行程序計算相同n值的a\"時,學生發現兩者耗時相近。經過梳理,學生歸納出迭代與遞歸算法在求解冪運算問題時的算法復雜度。
在經歷了項目1的探究學習后,學生基于已有的經驗展開思考:能否降低迭代與遞歸算法求解a\"的時間復雜度?通過小組合作探究,學生發現用遞歸算法求解a時,可利用“奇偶性”進行分治處理:若n為奇數, an=an//2*an//2*a 若n為偶數,(2 an=an//2*an//2 。綜上所述,可統一表示為 qn=qn//2*an//2*an%2, 該分治策略可顯著減少遞歸過程中的乘法運算次數,從而降低時間復雜度。
圖2遞歸算法求斐波那契數列求值路徑

表3

表4
迭代與遞歸算法求斐波那契數列算法復雜度對比

優化后的遞歸算法及其算法復雜度如表7所示。
在探究迭代算法求解a\"的算法優化過程中,學生對“能否降低時間復雜度”以及“如何優化算法實現”這兩個問題產生了困惑。針對這一問題,教師借助 *a11=a8*a2*a1, 的表達式對學生進行思維引導,啟發學生將指數“11\"分解為8+2+1,對應二進制表示為 (1011)20 學生發現在教師給出的引導表達式中,二進制數中的“0”對應的權值(a)不參與乘法運算,僅對“1”對應的權值進行累乘。
表5 遞歸算法優化求斐波那契數列

表6 迭代與遞歸算法求a”

表7 遞歸算法優化求a”

表8 冪運算求a的指數分解

該策略將a\"的指數n轉換成二進制數,并將二進制數中值為“1”的對應權值base累乘至結果變量res中。其中,base中的a的指數以20,21,22,23. …的冪次序列遞增,具體操作過程如表8所示。
通過對指數進行“二進制”分解,減少了乘法運算次數,降低了時間復雜度,實現了迭代算法的優化,基于此優化策略設計的迭代算法及其算法復雜度如下頁表9所示。
在運用迭代與遞歸算法求a\"的實踐過程中,學生不僅成功地將項目1中解決問題的過程與方法遷移過來,還深度剖析了項目2中的問題特征,通過融人分治策略與二進制分解等優化手段,設計出了更契合問題本質的高效算法,提升了問題解決的效率,實現了知識遷移與實踐創新的有機結合。
總結與展望
項目1與項目2從簡單、典型案例入手,借助自主探究與實踐活動推動了學生對迭代算法、遞歸算法、算法復雜度等核心知識點的結構化建構與學習,提升了學生運用信息化手段解決問題的能力,還讓學生深入領悟了算法設計的核心思想,即在問題求解過程中,先找到解決問題的方法,再尋求優化策略以提升效率。此外,教學實踐表明,教師需精準把握學生的最近發展區,靈活選用適配的教學模式與方法,引導學生完成從具體問題到抽象模型、從特殊案例到一般規律的思維拓展,逐步培養學生的計算思維能力。[7]
表9 迭代算法優化求冪運算a\"

以培養計算思維為核心的教學改革并非單一課程的變革,而是一項可持續性的系統工程,需要在整個課程領域中聯動實施,對此,筆者提出以下幾點建議: ① 構建結構化教學體系。圍繞學科核心素養和學科大概念,合理組織課程內容與教學模塊,構建具有時代特征的學習內容,設計從基礎到進階的教學體系,引導學生主動學習與探索。 ?② 強化協作學習機制。教學過程中重視學生在群體互動中的認知建構作用。通過小組合作、跨學科研討等多元協作學習形式,充分發揮學生的主體能動性,利用組內和組間的交流,有效促進計算思維的動態形成。 ⑨③ 培育創新型人才。以學生需求為導向,在問題解決過程中提供結構化的指導與支持,注重學生自主學習能力的培養,助力其成為兼具專業深度與綜合素養的創新型人才。[10]
參考文獻:
[1]WingJM.ComputationalThinking[J].Communicationsof the ACM.20o6,49(O3).33—35.
2楊梅,王楊.以計算思維為導向的程序設計基礎課程教學研究[J.計算機教育,2015(16).94-97.
[3]中華人民共和國教育部.普通高中信息技術課程標準 (2017版2020年修訂)[S].北京:人民教育出版社,2020.
[4I][10劉國偉,任美睿,靳雨欣,等.以培養計算思維能力為導向的算法設計與分析教學方法探索[J]計算機教育,2022(05):189-195.
[5]孫俊梅,賀琳,馬紅亮,等.哪類教學支架對提升初中生計算思維更有效?——基于算法支架、程序支架和有限性型支架的比較[J.現代教育技術,2024,34(06):100—111.
[]賴錦輝.以計算思維能力產出為導向的程序設計類課程教學改革[J.工業控制計算機,2022,35(07).167-168.
[8]胡楊.高中信息技術教材落實學科核心素養培養的路徑探析[J].上海課程教學研究,2020(11).32-35.
[9]張文蘭,閆怡,劉盼盼.教育者計算思維教學能力及其發展路徑:美國STE《教育者標準:計算思維能力》解讀與啟示[J].中國遠程教育,2020,41(07).60-68.
作者簡介:周朝陽,男,碩士,高中信息技術教師。