梅松珂 顧美俊
摘? 要 概括國內外關于計算思維的定義及內涵,并對計算思維教育以及基于計算思維培養的編程教育進行綜述,為在編程教育中培養學生計算思維提供依據。
關鍵詞 計算思維;計算思維教育;編程教育;計算機科學
中圖分類號:G427? ? 文獻標識碼:B
文章編號:1671-489X(2021)07-0069-03
0 引言
計算機科學的發展給經濟和社會生活帶來深遠的影響,無論年齡大小,幾乎每個人都有望在技術發展的同時掌握一些基本的計算技能。應該讓學生為未來做好準備,他們有能力使用目前尚未發展的技術來解決問題。在這種情況下,人們對個人的能力和期望自然會有所不同。除了當下這些技術的飛速發展之外,更著重強調的是人人都應該具備一些基本的計算技能。在此基礎上,每個人必須通過批判性思維來使用數字技術,以獲得知識和技能,并解決在學習和日常生活中面臨的問題。正如Wing在與計算思維技能相關的筆記中指出的:“無處不在的計算是昨天的夢想,后來變成了今天的現實,計算思維是明天的現實。”[1]
1 計算思維
計算思維不是新概念,這是自20世紀60年代以來在計算機科學背景下被強調的一項重要技能[2]。在早期,計算思維被認為是計算機科學家需要獲得的一種能力,這在計算機科學的歷史上被認為是非常重要的。然而在21世紀,這種認識已經被改變了,尤其是在Wing確定計算思維是每個人都應該獲得的基本能力之一后。Wing的決定在短時間內得到人們的廣泛回應,同時還有一批在教育領域制定國際標準的機構,如國際教育技術學會(ISTE)、計算機科學教師協會(CSTA)、國家研究委員會(NRC)。政策制定者和大型公司(谷歌、微軟等)都非常支持這一想法,并為將計算思維視為每個人都應該獲得的能力作出巨大貢獻,這對個人為未來世界做準備非常重要[3]。
在21世紀,人們期望通過使用現有的技術來發揮生產作用,而不是成為消費技術的人。在這個框架下,應該提高個人創造力和解決問題技能。為了培養具有創造力和結合技術解決問題的技能的下一代,發展計算思維對年輕人來說至關重要。在這種背景下,ISTE強調,年輕人應該準備成為計算思想家,理解如何通過使用當今的技術來解決明天的問題。因此,一方面可以說計算思維相關技能可以通過受益于信息處理的能力來提高問題解決和批判性思維能力;另一方面,計算思維能力對日常活動的執行有顯著影響——信息技術可以被用來更為有效地執行。
計算思維的觀點是由Wing于2006年提出的,即“計算思維代表適用于每個人的態度和技能,而不僅僅只是計算機科學家”。但是對于計算思維的概念的定義,目前還沒有共識,關于這個定義過程的討論還在進行中。Wing將計算思維的概念定義為面對問題時像計算機科學家一樣思考。在這種背景下,Wing在2006年首次將計算思維確定為一種思維方式,包括以適當的呈現方式理解問題,通過抽象使這些問題合理化,并為它們開發自動化的解決方案。后來,Wing在2014年又重新發展了這一定義,并將計算思維表示為一種思維過程,包括問題的表述,因為計算機可以有效地執行和表達解決方案。在計算思維的技能上,包括通過使用心理能力、個人根據信息處理過程將問題解決過程推廣到其他問題的能力、通過算法思維自動化解決過程的能力、通過組織和分析轉換信息的能力、通過計算機應用程序抽象信息的能力以及連續使用抽象和建模技能的能力。
ISTE和CSTA將計算思維技能定義為算法思維、創造性、邏輯思維和解決問題技能的反映。NRC建議數學和計算思維是中小學科學教育的主要實踐。考慮到這些定義,計算思維技能與眾多變量之間的關系是可交流的。盡管對該術語有不同的定義,也沒有就不同的定義達成共識,但人們普遍認為計算思維技能涵蓋了抽象、算法思維、問題解決、分解、概括和調試的概念[4]。為了支持這一想法,Kukul等人于2016年在工作中形成一個與計算思維解釋相關的詞語,并發現文獻中最常用于定義計算思維過程的數據詞是抽象、問題、解決、算法和思維[5]。
2 計算思維教育
計算思維屬于科學方法論的領域,它從思維的角度解釋了人、計算和計算機之間的關系。根據計算思維的應用范圍,可分為計算機科學中的計算思維、計算科學中的計算思維和所有學科中的計算思維三個層次[6]。計算機科學中的計算思維教學主要運用計算機的原理和方法解決實際問題,這是計算思維教學最基本也是最本質的內容。計算科學中的計算思維是一種基于計算機自動計算將實際問題轉化為有限計算過程的思維方式。所有學科的計算思維側重于如何應用計算機科學知識和計算理論解決其他學科、生產活動和人類社會的問題,具有普遍性和多樣性的特點。
基于這一觀點,計算機被認為是一種思維的實現方式,而不是一種工具,計算機科學被認為是一門發展學習者思維能力的學科,而不是教他們使用軟件。每個學科都有自己的思維方式。首先,計算思維是一種學術思維方式,由于它是從計算科學中抽象出來的,所以它具有一些明顯的計算特征。其次,計算思維把計算當作一種思維方式,使得計算具有思維的屬性。所以計算思維教育可以從兩個方面來分析,即具有計算特征的思維教育和具有思維屬性的計算教育。
一方面,具有計算特征的思維教育。學生使用計算機解決問題時,思維方式必須滿足計算機計算的條件,這表明學生應該按照計算機的計算方法、計算規則和計算過程來思考問題。在計算思維教育中,思維的主體是人,計算的主體是計算機,教學的關鍵是將實際問題轉化為有限的計算過程。在實際教學中的轉換過程:首先,教師引導學生使用代數語言或其他規范語言將實際問題抽象成一個格式化的表達式;然后,計算機根據預定的規則通過字符轉換方法將格式表達式轉換成一些字符串;最后,依靠計算機強大的計算能力來計算結果。在這個教學過程中,學生的思維表現出計算的特點,思路也必須是清晰的。
另一方面,具有思維屬性的計算教育。計算機是人類發明的,其強大的計算能力只有在執行算法時才有價值,而算法本身也是一種表達思想的方式。計算是思維的實現,思維是計算的實現,所有的計算教育活動都是在人類思維的指導下完成的,計算機通過間接地、近似地、有限地模擬人類的思維來解決問題。
3 基于計算思維培養的編程教育
通過計算思維,人類可以更有效地使用計算機解決問題,因此,計算思維能力的培養在教學中尤為重要。但是計算思維的教學離不開載體,作為與之密切相關的編程教育,在計算思維的培養上發揮了舉足輕重的作用。
編程類課程主要是為了培養學生的歸納推理能力,主要采用啟發式推理、關注點分離、簡化等歸納推理方法,涵蓋抽象問題、創建模型、設計算法、驗證結果等內容。編程課程的目標是讓學習者理解如何用計算機解決實際問題,這是培養計算思維能力的體現。
在傳統的編程類課程中,由于缺乏具體有效的思維指導,講授的內容局限于編程語言本身,解決的問題是事先抽象處理的理想模型,應用的方法缺乏通用性、工程性和實用性,導致教學效果與教育目標相差甚遠。雖然現階段常用的編程語言各不相同,但解決問題和思考問題的方法是相同或相似的。
計算思維的引入使該課程更加注重運用問題驅動的教學模式來教授思維的思想和方法,即按照發現真實問題、聯想問題的解決方法,并將其映射到計算機模型和設計算法的過程來教授計算機知識。基于計算思維的教學模式不僅能幫助學習者理解人類思維與計算機計算的協同關系,還能使他們掌握計算思維總結的一般思維方法。計算思維能夠有效地將實際問題與計算機模型聯系起來。基于計算思維的編程課程可以明確地教授思維過程,而在此之前只能是學習者自己理解的。在這種基于計算思維培養的課程中,學習者只需學習一門編程課程就可以解決各種實際問題。
編程是表達計算思維最合適的方式。計算思維要通過一些語言或者文字來描述,沒有明確的表達是沒有意義的。進一步說,計算思維的表達一定要遵循一些嚴格的規則和特定的語言格式,否則無法理解。編程語言本身是一種形式表達,具有確定性、有限性和機械化的特點。編程語言能夠準確地表達計算思維,表達方式也易于理解。
編程課程是培養計算思維的有效載體。計算思維是一種思維形式,主要表現在解決問題的過程中。基于計算思維的編程教學是以解決問題為目的,通過自動的、機械的計算來實現的。計算機知識是計算機表達和計算機能力培養的基礎。具有數字化、計算機化和程序化特點的編程課程是培養計算思維應用能力的有效載體。通過講授計算機的具體方法和原理,培養學習者發現問題、分析問題、設計算法、比較性能和解決問題的能力。
編程課程的實踐是培養計算思維能力的重要途徑。計算思維能力的培養需要經歷真實的案例,所獲得的能力也必須在實踐中得到檢驗。實踐教學可以讓學習者體驗到編寫程序、形成計算思維的過程。編程課程通過大量的思維訓練和實踐,使表面的、抽象的思維和知識深入學習者的內在思維系統,學習者可以主動或不自覺地運用合適的計算思維方法和有效的計算機知識來解決問題。編程課程的實踐可以將知識內化為能力,將編程與計算思維培養融為一體。
而編程過程中通過使用歸約、變換、模擬等方法,應用結構編程和函數將復雜的未知問題轉化為簡單的問題時所涉及的抽象、概括、評估等正是計算思維教學的核心內容。所以,編程課程是最能體現計算思維思考過程的課程。
4 結語
總之,在以計算思維為培養目標的編程課程中,編程知識貫穿解決問題的整個過程,最終形成一個以知識為節點、計算思維為連接體的復雜思維網絡。計算思維的融入使編程課程的內容盡可能接近實際問題,它打破了人、現實世界和計算機科學之間的界限,將人類的思維和計算機知識從計算機擴展到現實世界。計算思維教育與編程教育有著天然的聯系,計算思維能力的培養需要編程教育的支持,編程教學需要計算思維的指導,因此在編程教育中融入計算思維是有意義的,在傳授知識的同時也有必要傳授其蘊含的思想。這樣可以通過思維強化知識,又可以通過思維鞏固知識,從而形成思維透徹的知識。最終,它既能幫助學習者學習編程語言,又能培養他們的計算思維能力。■
參考文獻
[1]WING J M. Computational thinking and thinking about computing[J/OL].Philosophical Transactions of the Royal Society A,2008,366:3717-3725.
[2]Cuny J, Snyder L, Wing J M. Demystifying computa-tional thinking for noncomputer scientists[EB/OL].
(2013-10-05)[2020-10-03].http:l/www.cs.cmu.edu/~Comp
Think/resources/TheLinkWing.pdf.
[3]Bower M, Wood L, Lai J, et al. Improving the computational thinking pedagogical capabilities of school teachers[J].Australian Journal of Teacher Education,2017(3):53-72.
[4]Selby C, Woollard J. Computational Thinking: The Developing Definition[R].ITiCSE Conference,2013.
[5]Grover S, Pea R. Computational Thinking in K-12: A Review of the State of the Field[J].Educational Researcher,2013(1):38-43.
[6]任友群,隋豐蔚,李峰.數字土著何以可能?:也談計算思維進入中小學信息技術教育的必要性和可能性[J].中國電化教育,2006(1):4-5.