劉 晶
(中南民族大學計算機科學學院 湖北·武漢 430074)
人工智能是引領未來的戰略性技術,也是全球經濟社會發展的重要驅動力。隨著人工智能技術在人類生產、生活、學習中的應用,其發展潛能得到世界各國的關注,世界主要發達國家紛紛制訂了人工智能戰略計劃。我國在2017年印發的《新一代人工智能發展規劃》指出,要搶抓人工智能發展的重大戰略機遇,完善人工智能教育體系,加強人才儲備。[1]
人工智能浪潮席卷之下,人類的思維方式和工作方式必將發生重大轉變,計算思維作為人工智能社會中個體必備的關鍵能力逐漸受到重視。我國教育部高等學校計算機基礎課程教學指導委員會、中國計算機學會等組織,均對計算思維展開了較為深入的探討。2010年7月,“九校聯盟(C9)計算機基礎課程研討會”上,正式發表了《九校聯盟(C9)計算機基礎教學發展戰略聯合聲明》,該聲明強調計算機基礎教學是培養大學生綜合素質和創新能力不可或缺的重要環節,其中,學生計算思維能力的培養是計算機基礎教學的核心任務。
周以真[2]教授指出,計算思維是“一個形成問題和制定問題解決方案的思考過程”。隨著計算思維研究的發展,對計算思維的討論從抽象和算法等源自計算機科學的主題延伸到實踐應用中,更關注與具體學科知識結合而產生的實踐要素。計算思維是數學思維與工程思維的互補和結合,有助于提高學生的創造力和創新力。[3]朱亞宗教授提出,計算思維與實驗思維、理論思維并列為人類三大科學思維方式之一。[4]
為了順應人工智能時代教育變革的主要發展方向,從實際教學情況出發,思考與分析計算思維能力的核心培養要素,提出了以流程圖為載體的計算思維能力培養方法。在教學實踐中強化了學生計算思維過程的培養,將生活算法實例與流程圖實踐相結合,呈現了學生抽象和解決問題的思維過程,形成了基于流程圖的面向計算思維能力培養的計算機基礎課程教學方法,取得了良好效果。
計算思維是要培養能夠綜合應用多種思維技能思考問題,并理解和使用計算機來解決復雜工程問題的能力。美國國際教育技術協會和計算機科學教師協會聯合規定了計算思維的九項核心概念和能力分別是:數據收集、數據分析、數據表征、問題分解、抽象、算法和程序、自動化、模擬和并行化。亞達夫等[5]將其簡化概括為問題分解、算法、抽象和自動化。
計算思維的核心內涵強調問題解決的過程更重于問題解決的結果。因此,從工程角度出發的計算思維教學過程應至少包括問題識別與分解、系統抽象、方案設計與優化、方案實現四個部分。其中,前三個部分體現了思維的加工過程,最后一個部分則呈現了思維發展的結果。計算思維過程應強調使用抽象、泛化的思維方式定義和分解問題,突出算法設計和優化的思考過程。其中,分解與抽象是培養計算思維過程的重要核心內容。
計算思維是創造力、算法思維、批判性思維、問題解決、合作思維和溝通技能的共同體現,最終目的是解決問題。程序設計、數據結構、算法分析與設計等課程涉及程序級的問題求解;數據庫,數據挖掘等課程是系統級問題求解的基礎,也往往是程序級問題求解的目標。對于復雜問題的求解,可以將之分解成幾個子問題單元,再來分別解決每個子問題。也就是將問題的解決方案用若干個封閉步驟的集合(模塊)表示,每個模塊用于解決一個問題或子問題。
在對復雜問題的分解過程中,需要運用抽象的概念。抽象是計算思維的本質,指捕獲問題對象的本質特征,省略一些不必要的細節,只留下需要強調的環節。設計問題解決方案時,先用抽象步驟,即細節仍未明確的算法步驟描述問題的解決方案,然后不斷明確具體細節,最終得到解決該問題的具體步驟。
分解與抽象這一思維過程可以在不同層次進行,即在不同的抽象層次對問題進行定義和分解。每一層對應不同的抽象級別,逐層遞進細化抽象的解決方案,直到得到該問題的每一個具體解決步驟。表1給出了不同抽象層次上的會議安排問題的分解。

表1 問題分解的分層抽象示例
現有的計算機類課程教學模式大多重視編程開發(實踐環節)而忽視思維加工過程。最終的程序只能展現結果而不能呈現思維過程,這種重結果輕過程的培養模式并不利于師生對計算思維發展細節的把握,也與計算思維的本質不符[6]。將計算思維整合到課程教育,重要的是嵌入思維技能。培養思維技能的重要方法之一是對知識的表述。以圖形展示知識與思考過程的知識可視化方法作為思維表述的一種方式,得到了廣泛關注。思維導圖和流程圖等展現思維過程的工具,在教育教學、工程實踐、項目管理等領域有著廣泛應用。其中,流程圖是相互連接的圖形符號集合,其中的每個圖形符號代表要執行的指令,符號之間的連線方向決定指令的執行順序。
流程圖是一種極好的表示算法思路的可視化方法。用流程圖作為計算思維過程的可視化承載工具,有助于學生對問題進行分解和重組,進而進行系統抽象和建模,體現思維的加工過程。學生通過不同級別的流程圖,可以展現在不同的抽象層次分析問題、解決問題的思維過程。
目前,一般高校的計算機程序類課程的做法是,從識別與理解問題直接進入代碼編程實現的階段,缺乏對問題進行分解和重組,進而進行系統抽象和建模的思維加工過程的觀察和指導。
民族高校生源組成復雜,學生來自全國各地,分布廣泛,并有相當一部分“雙少”學生(來自少數民族地區的少數民族學生)。受限于各地區的教育發展水平,學生入學時的計算機水平參差不齊,甚至相距甚遠。因此,課堂教學實施必須考慮分層教學、因材施教。實現這一教學方針最根本的解決方法是注重計算思維過程的培養。
對于計算機編程基礎薄弱的學生,在具體的程序語言學習過程中由于對語法、函數不熟練,極易產生沮喪、厭學的情緒。如何滿足不同層次的學生需要,讓學生掌握分析問題和解決問題的思維方法,讓學生能學懂,有興趣,有收獲,其重點在于計算思維過程的培養和訓練。流程圖作為一種計算思維過程抽象表達的形式化工具,能有效地展現問題解決的分解過程和演繹。[7]
在學習具體的程序設計語言語法之前,先通過畫流程圖,將問題抽象、分解成幾個子問題,接著分別用流程圖表述每個子問題在不同抽象層次的算法設計思路,逐層細化,直到每一步具體的執行步驟。流程圖在這一過程中,將思維過程可視化并清晰呈現,有助于理解和認識學生的思維加工過程,從而更好地幫助學生掌握如何設計和執行算法。
在問題分析和算法設計階段,流程圖可以減少對編程語言和語法的關注,將設計聚焦在解決問題的過程上,如圖1。
計算思維核心要素在流程圖中的體現如下:對于問題分解這一計算思維要素,可以通過流程圖中各種具有確定含義的符號和連線,配以簡單的文字說明來可視化描述問題的輸入、輸出和問題的分析、解決方法和步驟。對于抽象這一計算思維要素,可以將問題中的對象、指令等通過流程圖中的符號加以表征說明,然后使用順序、選擇、循環等結構建構它們之間的關系,從而實現對同類型問題的抽象與提煉。不同級別的流程圖對應不同抽象層次的問題解決過程,不斷細化對象和指令,得到最終的解決方案。圖1是學生畫的會議安排問題的流程圖。
計算思維的培養和其它工程問題一樣,需要通過實踐來訓練。因此,在我校計算機專業本科新生的計算機基礎課程教學實踐中,結合生活中的實例講解了流程圖的基本標準符號,使用方法和工具。從食堂排隊調度,冒泡排序,會議安排的問題實例入手,讓學生各自利用流程圖表述問題的解決思路,接著分小組進行分析討論,整理修正流程圖,然后學生在課堂上展示和講解自己的流程圖,闡述問題抽象和解決方法,以及需要注意的問題。通過3輪這樣的課程實踐訓練,學生正確利用流程圖表述思維過程的能力有明顯提高,基于流程圖的計算思維訓練不僅加強了學生對分解和抽象等計算思維過程的掌握,更培養了學生以計算思維解決問題的能力,還培養了學生的創造性思維和協作精神等。

圖1 不同抽象層次的流程圖
在實踐過程中,學生通過思考和討論,更新解決問題的思路,進而優化自己的流程圖,從而發現最佳的問題解決方案。這一階段所形成的流程圖,呈現了學生抽象和解決問題的思維過程。使得教師可以根據流程圖了解學生解決問題的思路,從而進行針對性的指導,在后續研究中還可以將其作為評價學生計算思維發展的重要依據。
2018至2019連續兩年的實踐教學顯示,在計算機專業大一年級學生的計算機導論課程和程序語言設計課程中,強調流程圖的計算思維教學方法,為下一步實現方案的具體程序開發,即計算思維的發展結果打下了良好的基礎。在后續的程序設計語言、數據結構等課程中的實驗編程表現有明顯提高。表明在學習具體的編程語言之前,用流程圖清晰表述問題的分析和解決方案,掌握分解和抽象等計算思維的核心內容,能夠令學生的計算思維在問題識別、問題分解、問題解決、創意拓展等方面綜合發展。
人工智能的迅速崛起正在改變世界發展的態勢,發揮大學應有作用,強化計算思維的培養是這一態勢競爭的重要一環。未來的世界需要能有效理解、應用并創造計算技術,具備解決問題的思維和能力的人。在計算思維的常規培養模式下,教學過于關注程序的開發和算法的技巧,強調思維的結果,缺乏顯性呈現的解決問題的思維加工過程。因而教師作為引導者很難做出針對性的指導和評價,從而局限了計算思維培養的效果。
流程圖作為很早就應用在計算機編程領域的可視化思維過程展現工具,在問題定義、分解和形成方案的過程中發揮了重要作用。流程圖的繪制過程不僅能夠幫助學生梳理思路,還能記錄思維發展的全過程,便于了解學生的思維過程,進行針對性的指導。教學實踐初步證明了流程圖方法能夠有效促進計算思維中的問題分解與抽象等思維過程要素的發展,尤其對于入學前幾乎沒有計算機基礎知識的部分同學,計算思維能力有明顯提升,后續程序編制、算法分析等課程內容的掌握程度比往屆沒有經過流程圖強化訓練的同學要好。