姜洋 衡紅軍 李俊生



摘 要:計算思維是大學計算機課程的核心培養目標。在大數據和人工智能的背景下,對計算思維的認識在不斷發展,逐漸形成了邁向2.0版本的計算思維新認識。為了更加系統性地培養計算思維,本文在計算思維新認識的基礎上,提出了計算思維的層次化認知模型,給出了基于計算思維層次化認知的大學計算機課程改革方案,設計了針對不同層次計算思維認知水平的混合式教學方法,提出了反映不同層次計算思維認知能力的評價機制。實踐結果表明,該方法不僅使非計算機專業學生更加系統性地掌握計算機的核心基礎知識,而且能夠提高計算思維培養的質量和水平。
關鍵詞:大學計算機;計算思維;層次化認知;混合式教學;評價
大學計算機是本科非計算機專業的一門核心基礎課程[1]。隨著時代的發展和技術的進步,現代社會對大學計算機的人才培養目標提出了更高的要求,更加強調綜合素質的提高和計算思維能力的培養[2]。隨著大數據和人工智能的發展,國內外許多學者給出了計算思維的新認識和定義,這些新認識和定義都從不同角度反映了計算思維的特征內涵。但由于這些新認識和定義的多元性,給以培養計算思維為核心的大學計算機教育帶來了很大的挑戰。如何系統性地理解這些新認識和定義進而指導大學計算機課程改革和教學實踐,是當前大學計算機教育面臨的重要課題。本文在計算思維新認識的基礎上,提出了計算思維的層次化認知模型,并基于層次化的認知模型,給出了系統化的教學改革方案和相應的混合式教學方法,針對不同層次的計算思維認知能力設計了相應的評價機制并總結了改革實踐效果。
一、計算思維的層次化認知模型
自從周以真教授在Communications of the ACM上發表了關于計算思維的文章,認為計算思維不僅是編程,而是人類解決問題的一種方式,是一種在多個抽象層次上思考的方法之后[3],計算思維越來越受到人們的關注,并成為計算機科學界和教育界廣泛研究的對象[4]。雖然學者們在“計算機教育應該以培養計算思維為核心”的培養目標方面很早就已經達成了共識,但是對計算思維的理解和認知,國內外學者提出了不同觀點。早些時候,認為計算思維是運用計算機科學的基礎概念來進行問題的求解、系統的設計以及人類行為的理解等涵蓋計算機科學之廣度的一系列思維活動[5]。何欽銘教授提出,計算思維是基于不同層次計算環境和約束的問題求解方法,其核心特征是構造,包括對象構造、構成構造和驗證構造[6]。陳國良院士和李廉教授在對計算思維新認識的基礎上,提出計算思維2.0的概念,認為計算思維是所有領域的科學家在應用計算和計算模型時所采取的思維模式,而不是計算機科學家獨有的思維方式,其隨計算模型的發展而不斷變化[7]。國外學者對計算思維也存在不同的觀點,例如有學者認為計算思維是一種情況建模,是達到某一個目標的信息操作方式[8]。也有人認為計算思維是一種分析性思維技能,它借鑒了計算機科學的概念,卻是所有人使用的基本技能[9]。還有觀點認為計算思維是將問題的解表示為算法的思維過程,或者是一種有助于自動化過程設計的心智技能等[10]。
以上關于計算思維的這些認識從不同角度反映了計算思維的特征和內涵。為了讓以培養計算思維為核心的大學計算機教育更好地落地,本文將計算思維認知劃分為三個層次,分別是計算思維認識層、計算思維應用層和計算思維設計層,不同層次的內涵見表1所列。
要培養計算思維,首先需要了解什么是計算,計算的過程是怎樣的,是不是所有的問題都是可計算的,怎么判斷一個問題是可計算的和不可計算的。這是掌握計算思維更高層次的基礎,因此把了解可計算和不可計算的本質區別作為計算思維第一個層次的內涵特征。有了這個基礎后,就可以進入計算思維的應用層,在這個層次要求能夠運用已有的計算方法解決一些可計算問題,這些已有的計算方法一般是以函數或方法的形式被調用。雖然目前已有的計算方法很多,但是隨著信息化社會的發展,有更多的問題沒有現成的計算方法,這時就需要掌握更高層次的計算思維認知水平,也就是基于一些設計理念和設計思想,針對不同的計算問題,設計相應的計算方法。并不是所有問題都是可計算的,因此設計計算方法之前,首先需要判斷問題的可計算性,并且如果有相同或相近的計算方法,可以直接利用,避免重復設計。因此計算思維的三層認知模型是層層遞進、循環促進、缺一不可的,只有有了計算思維認識層的基礎,才能更好地具備計算思維應用層和設計層的認知能力。隨著計算思維高層認知能力的不斷提升,反過來又進一步促進對計算思維底層(認識層)的理解。
二、基于計算思維層次化認知的課程改革方案
以往的大學計算機課程內容主要包括計算機文化和操作技能等方面的基礎知識,缺乏計算思維設計層次方面的培養。在學時有限的情況下,課程改革的總體思路是圍繞計算思維層次化認知的培養目標,精簡以往大學計算機課程的教學內容,并通過增加程序設計提高計算思維培養的質量和深度。根據皮亞杰的認知發生理論,思維必須以知識為載體,對于計算思維認識層,需要安排計算與計算文化方面的知識,讓學生了解計算的本質和發展,從而培養學生的計算思維意識和對可計算問題的判斷能力。這部分安排的學時雖然不多,但是對于后面更高層次計算思維能力的培養非常重要,是必不可少的基礎理論知識。在計算思維應用層,需要首先介紹數據類型的概念,因為數據是計算的基礎和處理對象,對數據的深刻理解有助于對數據處理的分類和應用。對于不同類型的數據,數據處理的方式不同,掌握數據處理的一些常用方法不僅有助于加深理解計算思維認識層,而且為計算思維設計層的學習打下良好的實踐基礎,因此這部分需要安排一定的理論學時和實驗學時,見表2所列。
對于計算思維設計層的培養,需要增加程序設計方面的內容。因為語言是思維的載體,要想通過程序設計提高計算思維的算法設計能力,首先需要學習一門程序設計語言。傳統的程序設計語言,由于語法細節過于復雜,在掌握設計算法解決問題之前,需要通過大量的學時學習語法細節。這給課程改革帶來很大的矛盾:一方面,我們希望增加程序設計提高計算思維培養的深度和水平;另一方面,因為學時有限,我們希望避免學習過多的語法細節,從而更加專注于高層思維能力的培養。解決的關鍵是選擇一門合適的程序設計語言,該語言應該具備簡潔、通用的特點,能夠針對任何可計算問題設計相應的計算方法,并且學習效率很高。當前流行的Python語言恰好具備這幾個特點,其語法相比于傳統程序設計語言更接近自然語言,這對于非計算機專業學生來說,大大降低了學習的門檻。Python語言還是一門生態語言[11],有著豐富的第三方庫,不僅善于處理大數據和人工智能等方面的計算問題,而且能夠解決不同專業的可計算問題。這不僅有利于學科的交叉和融合,而且能夠促進創新。計算思維設計層的教學內容大概占整個大學計算機學時的一半,是深化計算思維培養的主要內容。
三、大學計算機層次化混合式教學方法
大學計算機是一門系統性很強的課程,不僅整體是一個系統,每一個章節也是一個子系統,因此學習內容很多,而且學生的計算機基礎差別很大。為了提高不同計算思維認知層次的教學質量,并且充分利用“中國大學MOOC”上已有的優質在線教學資源,滿足不同基礎同學的學習需求,我們根據不同計算思維認知層次的教學內容特點,設計了相應的混合式教學方法,見表3所列。
(1)內涵式混合教學。內涵式混合教學就是通過線下教學分析,解決計算問題方法的演進過程,從而揭示計算的本質,同時利用線上資源擴展計算文化方面的基礎知識。例如,從計算發展史的角度,選取一些比較有代表性的節點,介紹計算方法的演進。從最早的基于算盤的手動計算,到基于差分機和分析機的機械計算,再到基于通用圖靈機模型的電子計算。這些計算工具的發明往往基于對計算問題更加深刻的認識。圖靈機是圖靈在對計算最本質抽象認識的基礎上提出來的,是可計算問題的判定依據。一個問題如果是可計算的,那么就一定可以通過圖靈機來計算,否則就是不可計算的。圖靈機將所有的可計算問題統一抽象為對紙帶上數據的修改問題,修改的過程通過帶有讀寫頭的有限狀態控制器實現。后來,圖靈在對數據和計算過程進一步認知的基礎上,提出了通用圖靈機的概念并證明了其與構造圖靈機的等價性。通用圖靈機是計算機的理論模型,現代計算機雖然在外形上發生了很大的變化,但是基本的運行原理仍然是與圖靈機相同。線下教學主要通過分析圖靈機的運行原理來幫助學生理解計算的本質,基于圖靈機發明的計算機方面的基礎知識和相關系統主要通過線上資源自學。這一層次主要解決人才培養的認知與興趣。
(2)案例式混合教學。案例式混合教學是指基于案例講解數據處理的相關操作和相關概念。在講解案例操作之前,首先需要介紹數據類型的概念,因為不同類型數據的存儲方式不同,取值范圍不同,支持的運算操作不同,深入理解數據類型的概念有助于對數據處理方法的應用。為了更好地掌握數據處理的常用方法,設計了一些和生活工作相關的應用案例,例如制作成績表的電子表格案例。這里涉及數據的統計、分析和可視化操作。這些案例使學生不僅能系統性地掌握數據處理的常用方法,而且能夠處理現實生活中很多的實際問題。為了提高課堂的教學效率,老師可提前將這些案例操作過程做成視頻放到在線教學平臺上,學生可以在線觀看并反復學習。課上因為學時有限,教師重點講解案例操作背后的一些核心概念。例如在制作成績表的過程中,涉及相對引用和絕對引用的概念,這是數據處理里面非常重要的兩個概念,只有深刻理解這兩個概念的區別,才能更好地應用電子表格中的數據處理方法。類似在進行數據篩選和排序的過程中,還涉及數據清單的概念,在進行一些更加高級操作的時候會涉及函數和嵌套的相關概念。這些概念是數據處理的核心,因為數據處理的方法是在不斷改進的,只有深刻地理解這些核心概念,才能更好地應用已有的計算方法解決實際問題。這種線上、線下混合模式不僅能提高課堂教學效率,而且能培養學生深入思考和廣泛聯系的思維習慣,更進一步提高人才培養的知識學習與能力提升。
(3)演化式混合教學。演化式混合教學是指課堂上通過案例的演化來介紹程序設計的基本知識點,然后利用線上豐富的教學資源對基本知識點進行擴展。一般演繹分兩個方向:縱向演繹和橫向演繹。縱向演繹是指通過不斷增加問題的復雜度來擴展知識點,例如增加變量提高數據處理的通用性,增加分支結構提高數據處理的智能性,增加循環提高程序處理復雜問題的能力,增加數組提高程序處理批數據的能力,增加函數提高代碼的復用率。縱向演繹不僅能夠快速地擴展知識點,而且因為每個知識點都有一個真實的應用場景做支撐,學生便于理解和掌握。橫向演繹是指問題本身的復雜性沒有增加,而是通過變換思路和方法來解決相同的可計算問題。例如求π,有基于概率的方法,有基于劃分的方法,有基于公式的方法。不同的方法雖然解決問題的思路不同,但計算結果是一樣的。這種課堂探索式的學習方式不僅提高了學生分析問題、解決問題的能力,而且培養了學生的創新思維和創新意識。因為程序設計的應用范圍很廣,不同領域有不同的計算問題和計算方式,因此對于想進一步提高計算思維的同學,可以通過在線學習的方式進行自學。這種混合式的學習方式不僅豐富了教學內容,提高了課堂教學效率,而且培養了學生混合式的學習習慣,為今后的自主學習打下了良好的基礎,更深層次地增強思維能力與創新能力。
四、計算思維層次化認知能力評價機制
為了檢驗不同層次計算思維培養質量的達成度,我們設計了層次化的評價機制,見表4所列。
其中,對于計算思維認識層,主要通過客觀題的方式考核學生對于計算思維相關基本概念的理解和掌握;對于計算思維應用層,通過實踐案例大作業的方式考核學生應用基本數據處理方法解決實際計算問題的能力,例如制作一份考勤表、各科成績表,或銷售額統計表等;對于計算思維設計層,采用問題導向型的程序設計方式考核學生設計算法解決可計算問題的能力。
為了在培養學生計算思維的基礎上,進一步提高學生的創新思維和創新意識,我們還在教學過程中設計了一些案例主題,學生圍繞主題自己設計案例方案,從總體設計到詳細設計,從數據結構到算法實現,最后展示案例效果。從實踐結果來看,這種方式不僅在培養學生計算思維的基礎上鍛煉了工程實踐能力,而且極大激發了學生的創新熱情和活力。
五、結語
計算思維的層次化認知模型是在總結計算思維研究成果的基礎上,提出的一套系統性的認知模型。該模型不僅能夠更有針對性地指導大學計算機教學改革,而且便于結合在線開放課程開展混合式教學。近兩年的實踐結果表明,基于計算思維層次化認知模型的大學計算機教學改革不僅使非計算機專業學生更加系統性地掌握計算機的核心基礎知識,而且能夠提高計算思維培養的質量和水平。下一步,我們將通過與其他專業深度融合,逐步開發出具有不同專業特色的計算思維培養教學計劃和教學案例,不斷提高非計算機專業學生的計算思維認知水平和應用能力。
計算思維培養不是一門課程可以解決的,需要通過一系列課程的學習逐漸形成一種解決問題的思維能力,更多的是隱藏在教育教學方法與能力培養的過程中,要靠學生“悟性”、教師引導,使學生能自覺地運用到實際問題的解決中。
參考文獻:
[1] 徐曉飛,李廉,戰德臣. 未來工程教育形態:面向可持續競爭力的服務型教育[J]. 中國大學教學,2019(5):4-9.
[2] 王移芝,金一,周圍. 基于“計算思維”能力培養的教學改革探索與實踐[J]. 中國大學教學,2014(3):49-53.
[3] WING, J. M. Computational thinking[J]. Communications of the ACM, 2006, 49(3): 33-35.
[4] 李廉. 計算思維——概念與挑戰[J]. 中國大學教學,2012(1):7-12.
[5] 陳國良,董榮勝. 計算思維與大學計算機基礎教育[J]. 中國大學教學,2011(1):7-11.
[6] 何欽銘,陸漢權,馮博琴. 計算機基礎教學的核心任務是計算思維能力的培養——《九校聯盟 (C9) 計算機基礎教學發展戰略聯合聲明》解讀[J]. 中國大學教學,2010(9):5-9
[7] 陳國良,李廉,董榮勝. 走向計算思維2.0[J]. 中國大學教學,2020(4):6-12.
[8] NARDELLI, E. Do we really need computational thinking? [J]. Communications of the ACM, 2019, 62(2): 32-35.
[9] YADAV, A., GRETTER, S., GOOD, J. Computational thinking in teacher education[J]. Communications of the ACM, 2017, 60(4): 55-62.
[10] DENNING, P. J. Computational thinking in science[J]. Computing Science, 2017, 57(6): 13-17.
[11] 嵩天. Python 語言:程序設計課程教學改革的理想選擇[J]. 中國大學教學,2016(2):42-47.
[基金項目:全國高等院校計算機基礎教育研究項目(項目編號:2019-AFCEC-192),中央高校基本科研項目(項目編號:3122015C022)]
[責任編輯:余大品]