劉杰 李金玲 陳星 毛宇 吳菱艷
摘? 要:從培養(yǎng)學生解決復雜工程問題的能力和計算思維能力的角度出發(fā),針對程序設(shè)計類課程教學中程序設(shè)計思維難以表達和傳遞的現(xiàn)象,結(jié)合Raptor的四個可視化特征對編程思維過程進行可視化表述和傳播,討論Raptor在程序設(shè)計思維可視化教學中的三個階段,以及每個階段的目標、特征和實施方式。
關(guān)鍵詞:計算思維;思維可視化;程序設(shè)計;Raptor;復雜工程問題
Abstract: From the perspective of cultivating students' ability to solve complex engineering problems and computational thinking ability, considering the phenomenon that programming thinking is difficult to express and convey in the course teaching of programming. Raptor's four visual features are combined, and the programming thinking process is visualized and propagated. Raptor's three stages in the visual teaching of programming thinking, as well as the goals, features and implementation of each phase are discussed.
Keywords: computational thinking; thinking visualization; programming design; Raptor; complex engineering problem
工程教育強調(diào)培養(yǎng)、提高學生解決復雜工程問題的能力,針對計算機相關(guān)專業(yè)而言,該能力的代表就是具有分析性、創(chuàng)造性和系統(tǒng)性特征的計算思維能力。因此,培養(yǎng)和發(fā)展學生的計算思維能力應成為計算機相關(guān)專業(yè)工程教育教學目標之一。程序設(shè)計類課程是計算機相關(guān)專業(yè)的核心課程和入門課程,其目的是教會學生程序設(shè)計的思想和方法,培養(yǎng)學生的計算思維,并運用該思維解決復雜工程問題。然而,傳統(tǒng)的程序設(shè)計教學模式偏重語法知識教學而忽視計算思維培養(yǎng),有相當一部分學生缺乏將數(shù)學模型映射為計算機模型的能力,即計算思維薄弱[1],解決復雜工程問題的能力不足。為此,本文提出一種思維可視化的程序設(shè)計教學模式,運用Raptor這一基于流程圖的可視化編程環(huán)境對程序設(shè)計思維(思考方法,思考路徑和思考結(jié)果)進行顯性化表示,幫助學生發(fā)展計算思維,提高解決復雜工程問題的能力。
一、計算思維與程序設(shè)計
2006年,美國卡內(nèi)基·梅隆大學的周以真教授在美國計算機權(quán)威期刊《Communications of the ACM》雜志上給出計算思維(Computational Thinking)的概念和相關(guān)說明。周教授認為計算思維的本質(zhì)是抽象與自動化,它涵蓋了計算機科學之廣度的一系列思維活動,包括運用計算機科學的基礎(chǔ)概念進行問題求解、系統(tǒng)設(shè)計、以及人類行為理解等[1]。自此,計算思維的培養(yǎng)迅速成為教育領(lǐng)域的研究熱點,從大學到小學、從計算機學科到非計算機學科,以各種形式明確計算思維培養(yǎng)的重要性,它被認為是創(chuàng)新人才應該具有普適性的思維方式。
隨著社會發(fā)展和科技進步,人們不斷提高對計算機相關(guān)專業(yè)大學生實踐和創(chuàng)新能力要求,掌握一種或數(shù)種計算機語言,具備使用計算機解決復雜工程問題的能力是工程教育的目標之一。程序設(shè)計過程完整演示了從問題到計算機求解問題的全部過程,包括了對問題進行分析思考的思維過程、對算法進行描述的設(shè)計過程、用計算機程序?qū)崿F(xiàn)算法的計算過程和用數(shù)據(jù)測試程序的驗證過程。計算機求解問題的全過程都貫穿了計算性的思維——可計算性或可操作性,即計算思維[2]。這四個過程本應該是相輔相成,融為一體的,然而在傳統(tǒng)教學中卻常常被分割,甚至被忽視。傳統(tǒng)課堂教學的重點常常是重視知識的灌輸而不是思維的發(fā)展,學生花了大量的時間應付枯燥的語法細節(jié),忽視了對問題的分析思維過程和算法設(shè)計過程,直接跳躍到算法實現(xiàn)階段,通過程序的運行結(jié)果來驗證分析和設(shè)計過程。這種教學導致學生不適應從自然語言到計算機語言的思維轉(zhuǎn)換,編程能力不強,在使用計算機解決實際問題時,總是無從下手,進而缺乏學習的興趣和動力。
在這種背景下,程序設(shè)計類課程作為一門實踐性很強的課程,當前教學的研究重點應該是如何組織教學內(nèi)容和教學模式,培養(yǎng)的核心問題不應該是對某種語言的掌握程度和各種編程技巧,而是培養(yǎng)學生發(fā)現(xiàn)問題、分析問題和解決問題的思維習慣和能力,即計算思維的培養(yǎng)。只有具備良好的計算思維,才能擺脫程序設(shè)計語言的限制,熟練應對各種領(lǐng)域的問題。
二、思維教學與思維可視化
趙國慶在《思維教學百年回顧》中提到思維教學起源于“授之以竿”的“思維技能”教學,發(fā)展于“授之以餌”的“思維傾向”教學,回歸于“授之以漁”的“知識理解”教學[3]。這三種取向的思維教學不是彼此獨立的,而是相互重疊。回歸“知識理解”的思維教學不是簡單而機械的知識學習,而是在良好思維傾向指導下,用嫻熟的思維技能對知識進行深加工,實現(xiàn)對知識更透徹的理解,以及從思維技能到思維能力的遷移。
人們已認識到培養(yǎng)思維的重要性,然而在實踐中卻收效甚微。長期以來,人們更看重外在的、有形的知識和思維技能,而忽視思維傾向的培養(yǎng)。常常認為學生學習了知識和思維技能,只要多模仿和練習,就可以自己摸索出隱藏其中的思維方法,培養(yǎng)思維能力。如同美國著名心理學家諾曼(Norman)曾指出的那樣,“我們要學生學習,卻很少教他們怎么學;我們要學生解決問題,卻又難得教他們?nèi)绾谓鉀Q問題……”[4]究其根本原因在于知識和技術(shù)是顯性的,而思維是隱性的。因為知識和技術(shù)的顯性特征,在教學過程中,教師可以很容易地判斷學生對知識的掌握情況,對之進行強化或補充;而思維的隱性特征,則導致無論是資歷豐富的老教師還是缺乏教學經(jīng)驗的年輕教師在處理思維方式是否正確、思維技能如何遷移、思維傾向是否有建立等方面都存在疑問,進而導致思維的培養(yǎng)可能會出現(xiàn)偏差。
鑒于思維及其過程是不可見的,人們提出了“思維可視化”,目的是將看不見的思維過程和思維方法用一系列圖示技術(shù)呈現(xiàn)出來,這種“可視化”對學生而言有利于幫助理解特定的思維策略和思維過程[5],提升思維能力;而對教師來說,能真實了解學生的思考內(nèi)容、思考方法和思考過程,及時調(diào)整教學重點和方向。
目前對思維可視化的研究主要集中在可視化工具及其應用,通過應用可視化手段與學科教學整合,將隱性的思維過程和思維結(jié)果顯性化,提高學生的認知能力,培養(yǎng)學生的思維能力[6]。蔡慧英從“可視化知識、可視化認知模式、可視化問題過程和可視化系統(tǒng)建模”[7]四個維度對目前已有的可視化技術(shù)工具進行分類,并闡述不同工具的設(shè)計理念和應用場景,提出融合多個工具的特色構(gòu)建新工具,支持不同的學習情景。
三、基于Raptor的程序設(shè)計思維可視化教學
本文選擇Raptor作為程序設(shè)計類課程中的編程思維可視化工具,避免了將教學重點放在程序設(shè)計語言的語法上,更重要的是利用Raptor的可視性培養(yǎng)學生的計算思維,強調(diào)程序設(shè)計不僅僅是一種單一的技能,更多的是一種思維方式,顯示呈現(xiàn)出學生在面對問題的提出、設(shè)計、實現(xiàn)、驗證與改進各個階段所涉及的思考內(nèi)容和思考方法。
(一)Raptor與可視化
Raptor(the Rapid Algorithmic Prototyping Tool for Ordered Reasoning)是一款基于流程圖的能進行有序推理的高級程序語言可視化算法原型工具。按照蔡慧英[7]的分類方式,我們從語法知識可視化、編程模式可視化、問題解決過程可視化和系統(tǒng)思維可視化四個維度對Raptor進行分析,分別列出它在四個維度上的關(guān)注點、基本要素和可視化學習活動的表征方式,見表1。
具體來說:
1. 知識是學習的目標之一。Raptor中所包含的語法知識真正做到了程序設(shè)計語言語法集合的最小化和原子化[8],用6種圖形表征了不同的指令,通過箭頭表示指令間的前后關(guān)系,將程序的結(jié)構(gòu)和內(nèi)容圖形化。因此,有助于滿足語法知識類的學習。
2. 能否熟練解決問題取決于對該類型的問題是否具備一定的思維模式,進行有序的思考。Raptor利用子程序和子圖表現(xiàn)出參數(shù)的傳遞、函數(shù)的調(diào)用和返回,實現(xiàn)了模塊化程序設(shè)計模式的可視化,這既符合結(jié)構(gòu)化程序設(shè)計的主要原則,也是可視化體現(xiàn)了計算思維中關(guān)于問題求解的抽象化過程。
3. 計算機類學生一般是以某種計算機語言為載體解決復雜工程問題,這個過程包括分析、設(shè)計、編碼、測試、排錯等不同階段。Raptor具備的可視化工具包括建立、調(diào)試、運行、分析流程圖,因此,它適合問題解決技能的可視化培養(yǎng)。
4. Raptor程序設(shè)計過程中采用計算思維的一系列方法對現(xiàn)實中的對象及其關(guān)系進行建模和模擬,這是一種可視化?;陉P(guān)注點分離、抽象與分解、遞歸有利于輔助復雜問題的建模;基于流程圖的運行和分析有助于理解問題的內(nèi)在變化和問題復雜性分析;基于流程圖到多種高級語言的自動轉(zhuǎn)換能幫助學生對高級程序設(shè)計語言進行系統(tǒng)化思考。
綜上所述,我們認為Raptor利用可視化技術(shù)將流程圖、算法設(shè)計、算法分析與程序設(shè)計融為一體,能較好地應用在程序設(shè)計思維可視化教學的各個應用場景中,涉及問題的提出-設(shè)計-實現(xiàn)-驗證等各個階段,有助于實現(xiàn)知識的活化和思維的發(fā)展。
(二)Raptor在程序設(shè)計類課程教學中的應用
趙國慶[3]和趙姝[4]將思維訓練分成的三大階段——隱性思維顯性化,顯性思維工具化,高效思維自動化,Raptor在程序設(shè)計思維可視化教學中的應用也分成三個階段,每個階段有各自的目標、特征和實施方式。
1. 隱性思維顯性化——形成思維傾向,產(chǎn)生需求
程序設(shè)計思維可視化教學并不是單純地畫個圖或表,其目的是為了將程序設(shè)計過程中深藏的思維過程和思維結(jié)果可視化,達到思維的共享和傳播。只可意會不能言傳的思維對大部分人來說都是很難獲取的,因此,思維教學的第一階段就是將編程過程中深層次的思維進行提取、整合、重構(gòu),顯示成具體的、形象的思維,提升師生間的溝通效率,促進學生的主動思考。這個階段的實施主要是選擇哪些思維可以進行可視化。前文談到Raptor可以將語法知識和結(jié)構(gòu)化設(shè)計模式(如賦值語句、輸入輸出、函數(shù)調(diào)用、順序、分支、循環(huán)……)進行可視化,例如,函數(shù)調(diào)用體現(xiàn)了主調(diào)函數(shù)和被調(diào)函數(shù)之間的關(guān)系,表示出參數(shù)和返回值的傳遞;順序、分支和循環(huán)結(jié)構(gòu)體現(xiàn)了流程的轉(zhuǎn)向,表示出指令的執(zhí)行過程。從學生的角度來看,站在可視化的思維面前,有助于從程序視角來理解人類行為,對程序設(shè)計概念體系實現(xiàn)整體把握。
2. 顯性思維工具化——訓練思維技能,形成策略
Raptor的可視化策略貫穿流程圖繪制、調(diào)試、運行、驗證、分析的全過程,將直觀顯示人腦求解問題和計算機求解問題之間的區(qū)別和聯(lián)系。這個階段的實施主要是思維如何進行可視化。Raptor中流程圖采用拖拽符號進行繪制,克服非可視化環(huán)境下語法復雜的屏障,在盡可能少的語法限制下,讓學生能快速開展程序設(shè)計;流程圖自動運行過程中通過設(shè)置斷點和單步執(zhí)行等調(diào)試手段,可以顯示觀察各種結(jié)構(gòu)的入口和出口兩點間變量改變情況,讓學生對程序進行測試、運行和驗證;流程圖運行結(jié)束后,Raptor會自動給出所有操作步驟的統(tǒng)計數(shù)據(jù),讓學生直觀體驗算法復雜性,便于改進算法。思維顯性化的過程有助于改造思維進程和思維方式,形成針對不同問題的程序設(shè)計思維模式。
3. 高效思維自動化——提升知識理解,應用思維
程序設(shè)計思維可視化教學的終極目標是在計算思維指導下自動高效解決各種問題,這個階段的實施是思維如何遷移和自動化。在實踐中,結(jié)合重點、難點開展大量的模仿和練習,對知識進行深加工,實現(xiàn)轉(zhuǎn)變性內(nèi)化和思維遷移。內(nèi)化意味著新創(chuàng)造的顯性思維又轉(zhuǎn)化為隱性思維,這是思維的應用與創(chuàng)新,也是個人能力的提高;遷移意味著面臨不同的復雜工程問題時,不斷地應用思維、更新思維,分析問題、解決問題。Raptor中流程圖可以自動轉(zhuǎn)換成C++等各種高級語言程序,復雜的代碼重新淹沒之前的可視化思維。這種從隱性到顯性再到隱性的思維循環(huán)轉(zhuǎn)化形成了一個螺旋形上升的思維創(chuàng)新過程,讓學生既培養(yǎng)計算思維,又掌握語言的實現(xiàn)。
這三個階段并不是彼此孤立的,而是緊密結(jié)合,相輔相成,最終目的是為了強化計算思維,提高解決復雜工程問題的能力。
四、結(jié)束語
本文以思維可視化為手段,開展基于思維可視化的程序設(shè)計類課程教學研究,構(gòu)建以思維訓練為導向的新型教學模式,改革計算思維能力的培養(yǎng)路徑與策略,高效地培養(yǎng)大學生掌握復雜問題求解的方法與技術(shù),培養(yǎng)計算思維能力與工程技術(shù)能力,增強自身數(shù)字化時代的生存技能與競爭力。
參考文獻:
[1]Jeannette M. Wing. Computational thinking[J]. Communications of the ACM, 2006,49(3):33-35.
[2]丁海燕.計算機程序設(shè)計課程中計算思維的培養(yǎng)[J].實驗技術(shù)與管理,2015,32(12):16-18.
[3]趙國慶.思維教學百年回顧[J].現(xiàn)代遠程教育研究,2013(6):39-49.
[4]趙姝,趙國慶,吳亞濱,等.思維訓練:技術(shù)有效促進學習的催化劑[J].現(xiàn)代遠程教育研究,2012(4):28-34.
[5]羅恩·理查德.哈佛大學教育學院思維訓練課:讓學生學會思考的20個方法[M].中國青年出版社,2014:42-69.
[6]趙慧臣,王玥.我國思維可視化研究的回顧與展望[J].中國電化教育,2014(4):10-17.
[7]蔡慧英,陳婧雅,顧小清.支持可視化學習過程的學習技術(shù)研究[J].中國電化教育,2013(12):27-33.
[8]程向前.基于流程圖的可視化程序設(shè)計環(huán)境對大學計算機基礎(chǔ)教學的影響[J].計算機教育,2012,170(14):56-59.