1982年諾貝爾物理獎得主肯尼斯·威爾遜在他的獲獎演講中提到計算在他的工作中扮演的重要角色,他認為計算是所有科學的研究範式之一,區別於理論和實驗,所有的學科都面臨算法化的「巨大挑戰」。所有涉及自然和社會現象的研究都需要藉助計算,使用計算模型做出新發現和推進學科發展。他的工作和對於計算方法的大力推薦,激發了人們對於計算科學的認識和重視。
Alfred Aho(2011): 計算思維是一個思想過程,涉及描述問題使得它們的解決能夠通過計算步驟和算法,能夠被信息處理裝置有效實現,計算模型是核心概念。
2015年,美國國際教育技術協會(ISTE,2015)解讀計算思維是創造力、算法思維、批判性思維、問題解決、合作思維和溝通技能的共同體現。
2017年,Peter J. Denning:計算思維是從不同的科學領域發育和成長的,並不只是從計算機科學中輸入的,事實上,計算機科學是逐步地參加到這個思維的變革中來。一場安靜但是深刻的已經在所有的科學領域發生,計算賦能的革命通過信息技術帶來了各種類型的新的發現。
2. 計算思維過程要素及運用計算思維求解步驟
2011年,美國國際教育技術協會(ISTE)與美國計算機科學教師協會(CSTA)聯合發布了計算思維是具有以下特徵的問題解決過程:以一種能夠使用計算機和其他工具幫助解決問題的方式制定規劃;合理組織和分析數據;通過模型和模擬等抽象的表示數據;通過算法思維(一系列有序步驟)實現解決方案自動化;確定、分析和實施可能的解決方案,以實現最有效的過程和資源組合;將問題解決過程推廣轉化到其它各種各樣的問題。規定了計算思維的六個過程要素( 提出問題、組織和分析問題、表徵數據、自動化解決方案、分析和實施解決方案、遷移) ,與九項核心概念和能力( 數據收集、數據分析、數據表徵、問題分解、抽象、算法和程序、自動化、模擬、並行化)。
計算思維的兩大核心特徵是抽象和自動化。運用計算思維進行問題求解一般要經過以下4個步驟:①把實際問題抽象為數學問題並建模,也就是將人對問題的理解用數學語言描述;②模型映射,將數學模型中的變量和規則用特定的符號表示;③用特定計算機語言把解決問題的邏輯分析過程用算法描述,即把解題思路變成計算機指令形式;④計算機根據指令,按順序自動執行,進行問題實現[5]。
目前被廣泛認可的計算思維的核心要素及促進計算機類學習和發展的課程基礎要素有:抽象和模式概括(包括模型和仿真模擬)、系統性信息處理、符號系統及其表示、控制流程的算法概念、結構化問題分解(模塊化)、迭代/遞歸/並行思維、條件邏輯、效率及性能限制、調試和系統錯誤監測[5]。
教育部高等學校計算機基礎課程教學指導委員會2010年5月在安徽合肥會議中要求將計算思維融入到計算機基礎課程中傳授,以此培養高素質的研究性人才。2010年7月西安會議發布了《九校聯盟( C9)計算機基礎教學發展戰略聯合聲明》,旗幟鮮明地把「計算思維能力的培養」作為計算機基礎教學的核心任務,明確「大學計算機基礎教學的核心任務是培養學生計算思維能力」,標誌著計算思維教學面向所有大學生全面展開。2012 年,教育部教高司函〔2012〕188號文件正式公布,批准「以計算思維為導向的大學計算機基礎課程研究」等22個大學計算機課程改革項目,以培養計算思維為重點,推動大學計算機課程改革。
2013年,教育部高等學校大學計算機課程教學指導委員會正式發布了《計算思維教學改革宣言》,進一步明確了計算思維培養在大學計算機基礎課程教學中的中心地位,並把計算思維的培養提升到了創新人才培養和國家發展的高度。2013年,英國教育部將原有的國家課程「信息通用技術」( ICT) 更名為「計算」(Computing),並於2014年9月正式實施。2013年12月11日,美國非盈利性組織Code. org為配合國家計算機科學教育周( National Computer Science Education Week) 發起了「編程一小時( The Hour of Code) 」倡議和活動,旨在通過採用趣味教學的方式讓中小學生了解基本的電腦程式編寫,並從小培養孩子們對計算機的興趣。2015年英國開放大學發布的《創新教學報告》將計算思維列為「十大創新教學法」之一,認為計算思維將在「教育實踐中,尤其是在學校後繼續教育中引發重大變革」。計算思維將在人們今後的工作、學習和生活中扮演越來越重要的角色。
2016年,美國計算機科學教師協會在《K-12計算機科學標準》(K-12 Computer Science Standards)中更新了對計算思維界定:計算思維是一種解決問題的方法論,這種方法可從計算機科學的領域擴展到所有學科,為分析和開發能夠通過計算方法解決的問題,提供一種獨特的方法。計算思維專注於抽象、自動化和分析,是計算機科學更廣泛學科的核心元素。
2017新版《普通高中信息技術課程標準》中指出:信息技術學科核心素養由信息意識、計算思維、數位化學習與創新、信息社會責任四個核心要素組成。 2018 年美國國際教育技術協會(ISTE)發布的《教育者計算思維能力標準》針對教育者如何培養計算思維能力提出了具體的標準和指導意見,該標準突出計算思維在信息知識和技能建構中的不可替代性,更強調教育者以「學習者」(Learner)、「領導者」(Leader)、「合作者」(Collaborator)、「設計者」(Designer)和「促進者」(Facilitator)的角色去培養自己和所教學生的計算思維能力,體現教師與學生作為學習共同體的教育理念,強調計算思維對於教師專業發展和學生成長成才的重要性,並為指導、幫助教師和學生如何在跨學科中整合運用計算思維能力提供了參考指南。當然,對於計算思維這一概念也有人提出不同的見解。其中Enrico Nardelli[4]說:將計算思維視為一種新的和不同的東西是有誤導性的:從長遠來看,它對信息學的弊大於利。畢竟,他們不在學校教授「語言思維」或「數學思維」,也不具備這些科目的「知識體系」或「評估方法」。他們只是教授(和評估)英語和數學能力,然後是通過學習英語(或數學)獲得各種語言(或數學)的能力,他們除了用於自身之外,還可以在其他學科中找到其他用途。在計算思維和計算之間存在著相同的關係。因此,我們應該探討中小學信息學的教學內容和能力評價,而忽略計算思維的教學和能力評價。美國科羅拉多大學博爾德分校2019年春季學期CU-Boulder開設的「computer science I -starting computing」 (計算機科學I—計算初步,下面將課程簡稱CSIsc)課程是面向所有學生(包括非計算機專業學生)的計算機類導引課程,學習內容C++。CSIsc課程在開學第一周布置第一次作業,此時,還沒有正式進入C++的學習,這次作業的目標就是初步認識計算思維。對此次作業案例進行分析有助於我們學習如何選擇和設計作業案例,對學生進行計算思維基本思想的灌輸,為學生構建較為完備的計算思維概念體系。
該作業題目是探索機器人Picobot,任務是完全遍歷有邊界和障礙的房間,起始位置隨機。在作業中為學生提供了一個完成Picobot功能的模擬環境,網址是https://www.cs.hmc.edu/picobot/,學生可以在這個編程環境中進行Picobot的模擬演練、運行程序和查找bug並修改,直到完成任務為止。這是一個完整的、綜合性強的計算思維培養作業案例,其中涉及多項計算思維核心要素的培養。
機器人Picobot在現實中類比掃地機器人。作業描述首先將機器人Picobot和房間抽象表示,並可視化如圖1所示,其中(a)(b)(c)(d)表示4種不同類型的房間。在每個房間中,小方塊代表Picobot的隨機起始位置,實體部分表示障礙物和邊界,空白部分表示要清掃的地面。
抽象思維是人類認識世界的最基本思維。作業示範了如何對實際系統原型進行模型抽象的方法,即保留實際系統原型的本質特徵,同時通過抽象和約簡,對系統進行準確、簡潔的理解和描述。這是計算思維進行問題求解的第一步,經過這一步,原問題演變成「點」在不規則圖形的遍歷問題。現實中除了掃地機器人外,還有許多問題可用此模型表達,如機器繡花等。
(2) 符號系統和表示思維
為了使問題最終能被計算機自動化完成,需對模型中的相關信息採用計算機能處理的符號表達,如在作業中對周圍環境有如下符號約定。
①Picobot只能感知到它緊鄰的周圍環境。如果不碰到邊界或障礙,可由當前位置向4個方向行走:北東西南(NEWS)。②周圍環境用相應方向的大寫字母表示牆,用「x」表示沒牆;如 NxWx表示在北面、西面各有一堵牆,可向東面和南面行走。③除此之外,通配符「*」可以用來表示「Picobot不關心那個位置是否有牆」,如,xE**的意思是「北面沒有牆,東面有牆,西面或南面可能有牆,也可能沒有牆」。
這一步將抽象模型中的變量/規則用虛擬的符號表示,這是計算思維問題求解的第2個步驟:模型映射。通過作業範例,讓學生理解採用符號系統表示的簡潔性、嚴謹性,以及方便計算機進行處理的特性。這部分概念和思維對於初學者很難理解,採用這樣的方式引入,簡單直觀。
(3) 控制流程的程序思維
作業中制定了Picobot行為規則,讓學生初步認識程序設計語言,理解程序思維。Picobot行為規則描述如下:
(1)Picobot擁有狀態,用數字表示。
(2)狀態和周圍環境是Picobot做出決策所需要的所有信息。
(3)Picobot根據一組規則移動:當前狀態 環境 -> 移動方向 新的狀態。
其中移動方向為N、E、W、S,或X,分別表示向北、東、西、南、完全不動。
如,0 x*** -> N 0 #當前狀態0,如果北面沒牆,則向北走 m,,++ ,狀態不變
0 N*** -> X 1 #當前狀態0,如果北面有牆保持不動,然後轉到狀態1
(4)Picobot總是從狀態0開始,並且從上到下查詢規則,直到找到第一個適用的規則,運行該規則。然後再從頭開始,查看規則並從頂部找到第一個適用的規則。
Picobot行為規則構成一種最簡單的程序語言,規則描述了程序可分解成基本動作及基本動作的各種組合。如本例中基本動作就是Picobot向某個方向行走一步或保持不動,而基本動作的各種組合及其排序可以最終實現對整個房間的掃描,從而構成完整程序。
通過學習Picobot行為規則,讓學生認識到程序是對計算機下達的指令序列,計算機是能夠執行各種程序的機器或系統,計算機按照程序控制的基本動作順序執行,實現複雜的功能。這種基本的指令和程序的思維灌輸對學生非常重要。
遞歸是計算思維的重要特徵,其本質是用有限的步驟實現近於無限功能的方法,是問題求解的一種重要思維,使程序簡潔和清晰。
在上節Picobot語言規則中有這樣的舉例:0 x*** -> N 0,初始狀態和動作後到達的狀態都是0。這條規則可以讓Picobot在北面沒牆的情況下一直向北走,直到北面碰到邊界或障礙為止。這條規則實例對計算思維中非常重要的遞歸思維進行了非常好的詮釋,讓學生初步學習並運用這種典型的構造程序的手段,為其今後進一步學習打下良好的基礎。
完成數據建模、模型映射及定義好程序規則後,接下來的任務就交由學生實現Picobot對房間的遍歷。為了引導學生進行實際問題的求解,此次作業為其設定了作業目標和程序實踐方法,學生可依據目標和實踐方法的提示很好地完成任務。
作業目標:①把大的問題拆分成子問題處理;②編寫一個算法來解決特定的問題,然後將該算法轉換成特定程式語言的程序(在本例中是Picobot行為規則);③為算法的每一步編寫清晰、簡潔的文檔;④運行並查找程序中的bug,修復bug,然後再次測試。
程序實踐方法:①從制訂策略開始,用簡明扼要的敘述總結採用的方法。例如,要遍歷房間(a)可採用的方法描述:「先將Picobot發送到北牆,然後發送到西北角,然後Picobot由西向東掃描……直到完成對房間的遍歷」。②為算法的每個步驟/規則寫注釋。
其中,作業目標的設定引導學生學習程序設計問題求解的基本步驟和方法;程序實踐方法教會學生怎樣對實際問題進行具體的分析和制定策略。這次作業還引導學生將一個大的、難解決的問題重新闡釋成簡單的、已有解決方案的小的問題,這種問題結構化分解的方法是處理龐雜任務或設計巨大複雜系統時採用的核心方法和思維,對學生今後處理實際問題至關重要。我們要求學生在編寫算法的同時,為算法撰寫清晰、簡潔的文檔和注釋,為日後養成良好的編程習慣打下基礎。
這次作業還讓學生初步理解算法效率的概念,為學生設定了算法效率要求。效率要求如下:從狀態數量和規則數量考慮解決方案的效率。認可的解決方案是遍歷(a,b)房間,每個遍歷不能超過16條規則。如果超過,找重疊代碼,將重疊代碼去除。
效率要求中引導學生從狀態數量和規則數量考慮算法效率,使學生初步學習如何進行算法效率的衡量,並通過限定規則的數量指導學生對算法進行簡單優化。
此次作業的完成須在模擬環境中運行通過,因此學生必須經過編寫Picobot程序、運行、查找錯誤、修改等一系列程序調試環節。這是一個不斷試錯的過程,通過分析和查找問題的根源,確定代碼錯誤位置,不斷修改,直到成功為止。在這個過程中,學生分析問題和解決問題的能力得到極大訓練。
作業要求遍歷房間(a,b)是必選題目,遍歷房間(c,d)可額外加分,供學有餘力的學生完成。除此之外,作業還提供了更為複雜的房間,如圖2所示,為高水平同學提供拓展訓練,目的是培養學生在解決複雜問題時規律探尋的方法,激發學生的創造性思維。
註:特別說明:【5. 計算思維培養案例】內容全部來自文獻5,希望感興趣的同學閱讀原文併到網站https://www.cs.hmc.edu/picobot/一試。
參考文獻:
[1] 朱亞宗. 論計算思維——計算思維的科學定位、基本原理及創新路徑[J].計算機科學,2009(04):53-55+93.
[2] Jeannette J M.Computational Thinking[J].Communications of the ACM,2006(3):33-35.
[3] 範文翔,張一春,李 藝. 國內外計算思維研究與發展綜述[J]. 遠程教育雜誌, 2018.
[4] Nardelli, Enrico (February 2019). "Do we really need Computational Thinking?". Communications of the ACM. 62 (2): 32–35. doi:10.1145/3231587.
[5] 師智斌, 王保民. 美國高校計算思維培養作業案例分析及啟示. 計算機教育,2020-03-11.