1.2 計算思維
1.2.1 問題的提出
2005年6月,美國總統信息技術咨詢委員會(PITAC)給美國總統提交了名為《計算科學:確保美國競爭力》的報告,報告建議將計算科學長期置于國家科學與技術領域中心的領導地位。美國NSF的CPATH(CISE Pathways to Revitalized Undergraduate Computing Education)計劃的目標之一是將計算思維學習機會融入計算機、信息科學、工程技術和其他領域的本科教育中,以增強開發具有計算思維能力的學生的人數。2011年,NSF啟動了CE21計劃,此計劃建立在CPATH計劃成功的基礎上,其目的是提高K-14(中小學和大學一、二年級)老師與學生的計算思維能力。
美國為什么會關注計算思維的問題呢?
美國卡內基·梅隆大學周以真(Jeannette M.Wing)教授認為,計算思維是運用計算機科學的基礎概念去求解問題、設計系統和理解人類的行為;計算思維最根本的內容,即其本質(Essence)是抽象(Abstraction)和自動化(Automation)。計算思維(Computational Thinking,CT)是運用計算的基礎概念(Fundamental Concept)去求解問題、設計系統和理解人類行為的一種方法。計算思維的本質是抽象(Abstract)和自動化(Automation)。它是如同所有人都具備“讀、寫、算”(簡稱3R)能力一樣,都可以具備的思維能力。計算思維不是程序化、流程化的,它是以計算機科學為代表的、以設計和構造為特征的一種抽象化、概念化的能力表現形式,與理論思維能力、實證思維能力一樣,是人類用來問題求解、日常生活的管理,以及與他人進行交流和互動的必須要具有的思維能力。
計算思維并不是非要使人類像計算機那樣思考問題,而是解決社會復雜問題的有效途徑,是技能、方法的升華,它始終貫穿于科學研究和技術發展的全過程,是創新的靈魂。它是觀念化的,通過分析、抽象、綜合、概括等方法對計算科學的概括、加工是其本質特征表現。計算思維是思維過程或功能的計算模擬方法,其研究的目的是提供適當的方法,使人們能借助現代和將來的計算機逐步實現人工智能的較高目標。
在我國,關于計算思維的問題也引起了學者的關注,關于計算思維本質、定義和應用的大量討論推動了計算思維在社會的普及和發展,但到目前為止,還沒有一個統一的、獲得廣泛認可的關于計算思維的定義。“大學計算機基礎教育改革理論研究與課程方案項目課題組”在著名的計算機教育專家吳文虎教授和高林教授領導的專家團隊經歷兩年多的研究,對計算機思維給出了一個完整定義,從理論層面和操作性層面上對計算思維的本質、內涵及能力培養提出了一個新的定義,并結合大學計算機基礎教育的改革,設計了基于計算思維的大學課程方案,本書就是課題的研究成果之一。
1.2.2 計算思維能力培養
人都是有思維的,但對一個問題的思維能力是不同的,因而解決問題的方法也會不同,自然會產生不同的后果。計算思維作為抽象的思維形式,不能像知識一樣通過教學進行傳遞。而計算思維的操作性定義,正是對計算思維在解決問題的過程中的分析和闡釋,將“計算思維”分解為易于理解的過程、方法、行動、品質等,從而使學習者將計算思維與自身能力、生活、學習有所聯系,建立直觀的參考,并且方便教育者據此建立評價標準,使抽象的計算思維概念可視化、可量化。操作性能夠實際指導并提升學習者計算思維能力,對學習者計算思維能力的培養、提升思考和行動能力都具有現實意義。思維能力雖然屬于程序性知識,不容易描述,但容易呈現并被識別,并且可以通過示范、練習和輔導的方式得到強化和修正。根據國內外專家學者的研究結果,思維是可以教的,是可以訓練的。計算思維能力的培養,需要在掌握陳述性知識的基礎上,有一個科學的訓練方法,一個可行的訓練載體,一個循環的訓練過程。
1.要有一個科學的訓練方法
思維訓練是一項幫助人們形成高效思維模式,并在必要的時候打破已有模式形成新的思維模式的技術。要培養學生按計算思維模式來思考問題,就需要進行科學的思維訓練。
程序設計課程的特點決定了其在學生計算思維能力培養中的重要地位。問題盡管千差萬別,但是可以采用一種方法引導學生解決不同的問題,大家可以通過不同的求解過程,深入思考理解計算思維的內涵和特征。所以,應用“目的—輸入—解答—決定—實施”這一教學過程進行問題求解和計算思維能力訓練。
(1)目標:思考要解決的問題。把注意力集中在一件事上,它將作為思考的主題。盡可能明確地選擇“思考目標”的重要性。
(2)擴展:對問題在深度、廣度和多樣性方面進行擴展。這是開放性思考,可以有不同的解決方案。
(3)濃縮:指把擴展思考濃縮成更切實、有用的東西,包括要點、摘要、結論、選擇。
(4)TEC(Target-Expand-Contract,目標—擴展—濃縮):按次序使用上面3個工具。訓練確定目標,思考主題并提取出可行的結論。
(5)目的:搞清楚思考的確切目的。到什么時候為止:做出決定,得到行動計劃或者觀點;明確思考的一般目標和特定目的。
(6)輸入:要考慮的情況、情景、框架、可用信息、因素和人,所有應該考慮的因素。
(7)解答:各種備選的解決方案,包括最明顯的、傳統的和最新的,產生解決方案和補救缺陷的方法。
(8)決定:指決定的過程,從備選方案中選擇最好的,包括選擇的優先權和標準,決定的結果和評價等。
(9)實施:就是執行,即得出思考的最后結果,制定實現最后選擇的步驟,把思考付諸實際行動。
(10)應用整個PISCO過程:目的—輸入—解答—決定—實施(Purpose-Input-Solutions-Choice-Operation)。
2.要有一個可行的訓練載體
在程序設計課程中要應用TEC-PISCO教學法進行思維訓練,需要有可行的訓練載體進行落實。本書的導例均分為“問題描述、問題分析、算法描述、程序實現、運行結果、程序分析”六部分,可以與PISCO的“目的、輸入、解答、決定、實施”進行對應。
3.要有一個循環的訓練過程
愛德華·德·博諾提出,人類大腦中的神經、神經元的突觸和反饋系統是一個能讓輸入的信息自己組織成模式的系統。換句話說,有一個自我教育系統,它是創造模式、運用模式的系統,模式產生于輸入信息的序列。思維如同運動,是一項可以通過不斷的學習而逐漸被掌握的技能。學生按照教材導例中的六部分學習,進行循環訓練,培養學生分析問題解決問題的方法,逐漸培養計算思維的能力。
1.2.3 程序設計能力與計算思維能力
程序設計能力和計算思維能力是什么關系?一個是計算機程序設計的能力,代表一個人的水平;一個是思維的能力,是處理問題的能力,是一個人的素養,這兩種能力既有聯系又有區別。程序設計能力屬于實踐能力,是可以體現、展示的;計算思維能力是解決問題的綜合素質,屬于內涵與素養。但是,程序設計能力可以逐步提升為計算思維的一個重要因素。程序設計能力的培養過程,也應該成為計算機思維形成的一個環節,在這一點兩者是完全相同的。程序設計的過程也是運用思維解決問題的過程,思維在程序設計的過程中是非常重要的。因此,計算機思維的研究要從實際出發,面向應用,在深入學習C語言程序設計的過程中,注重計算思維能力的培養,更加注重程序設計的總體設計能力,注重算法、數據結構在程序中的使用,把利用計算機解決問題的過程“公式化”,如此反復,程序設計的過程即程序設計的能力就會逐步升華為計算思維能力。
1.程序設計中的思維訓練過程
按照解決問題的過程進行思維訓練:
(1)提出問題:描述待解決的問題;對應PISCO過程的“目的”。
(2)問題分析:對具體問題進行分析,按照一定的算法找到解決問題的方法;對應PISCO過程的“輸入”,即包括需要考慮的所有因素和信息。
(3)算法描述:用流程圖將算法抽象出來進行表示;對應PISCO過程的“解答”,得出各種解決方案。
(4)算法分析:對算法進行分析,找到最佳解決方法;對應PISCO過程的“決定”,從備選方案中選擇最好的一種。
(5)程序實現和運行:將解決問題的方法用程序設計語言進行表示;對應PISCO過程的“實施”,即執行過程,把思考付諸實際行動。
2.具體實例
(1)提出問題:某廣告公司制作廣告板,現有長度為10m的邊框材料,希望制作一個面積為6m2的廣告板,請問該廣告板的長和寬分別為多少米?
(2)問題分析:廣告板需要滿足的條件為長度為10m,面積為6m2,確定長和寬時需要滿足這兩個條件。可以通過將長和寬每次取不同的值,判斷是否滿足這兩個條件,若滿足則為合適的長、寬。
算法1:對該問題假設長為length、寬為width,最簡單算法為length和width分別從1m開始,每次增長1m,判斷長度2*length+2*width是否等于10,面積length*width是否等于6,如果都滿足,則length和width的值為可以采用的長度。
算法2:根據length與width的關系:length+width=10,假設length從1m開始,那么width=(10-2*length)/2,再判斷length*width是否等于6。
對于這2種算法,分析其數據與控制結構。顯然,這2種算法都為循環結構,只是循環體和循環條件不完全相同。根據相應的算法,可以確定對應的循環條件和循環體。這個過程用二重循環來完成,length和width從1m變化到5m,最多需要比較10次。
(3)算法描述:將上述算法用流程圖表示。
(4)算法分析:分析以下2種算法的效率,即循環體執行的次數。判斷哪種方法最優。
算法1在這個過程用二重循環來完成,length和width從1m變化到5m,最多需要比較10次。
算法2在這個過程用單次循環來完成,其循環次數最多為5次。
由此可見算法2的方法較優。
(5)程序實現和運行:通過算法分析采用最優的算法2。用C語言實現,length數據運算范圍從1到5,用整型變量表示;循環則可以用for語句來實現:

上述算法其實就是窮舉法的思想,體現了計算思維中“窮舉”的思維要素。通過上述過程,進行了計算思維的訓練。
- VMware View Security Essentials
- 程序員面試白皮書
- 小程序實戰視頻課:微信小程序開發全案精講
- Learning Real-time Processing with Spark Streaming
- Visual C++應用開發
- 量化金融R語言高級教程
- Java面向對象程序設計
- 利用Python進行數據分析
- 區塊鏈技術與應用
- Visualforce Developer’s guide
- Unity&VR游戲美術設計實戰
- Mastering AWS Security
- jQuery Mobile Web Development Essentials(Second Edition)
- Java程序設計入門(第2版)
- Unity虛擬現實開發圣典