鄒柳聰 繆佳佳
(浙江師范大學(xué) 教師教育學(xué)院,浙江 金華 321000)
近年來(lái),在國(guó)內(nèi)關(guān)于計(jì)算思維的研究逐年上升,成為計(jì)算機(jī)學(xué)科與教育領(lǐng)域關(guān)注的重點(diǎn),研究熱度不斷升高。大多數(shù)高校將程序設(shè)計(jì)、編程設(shè)計(jì)等課程列為計(jì)算機(jī)和通信等專(zhuān)業(yè)的必修課程,以及理工科非計(jì)算機(jī)專(zhuān)業(yè)的計(jì)算機(jī)基礎(chǔ)課程之一[1],研究者和教學(xué)者也更加注重將傳統(tǒng)的以知識(shí)傳授為導(dǎo)向的教學(xué)轉(zhuǎn)向以計(jì)算思維為導(dǎo)向的教學(xué)。以計(jì)算思維的理念為切入點(diǎn),滲透計(jì)算思維的特征到實(shí)際的教學(xué)實(shí)踐環(huán)節(jié),有效地培養(yǎng)學(xué)生的程序設(shè)計(jì)、編程能力,大多數(shù)教學(xué)實(shí)踐證明培養(yǎng)學(xué)生的計(jì)算思維能力能夠作為一個(gè)解決問(wèn)題的有效工具,對(duì)程序教學(xué)的實(shí)踐、學(xué)生編程思維能力的提升都具有重要指導(dǎo)意義。
計(jì)算思維的研究起步較早,在20世紀(jì)下半葉就已出現(xiàn)計(jì)算思維的概念,我國(guó)周以真(Jean-nette M.Wing)教授[2]于2006年在計(jì)算機(jī)權(quán)威雜志“Communication of the ACM”上發(fā)表了題為“Computational Thinking”的文章。周教授在文中給出了“計(jì)算思維”的定義與說(shuō)明,認(rèn)為計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問(wèn)題求解、系統(tǒng)設(shè)計(jì)以及人類(lèi)行為理解等涵蓋計(jì)算機(jī)科學(xué)之廣度的一系列思維活動(dòng)。其本質(zhì)內(nèi)容體現(xiàn)了抽象、約簡(jiǎn)、規(guī)劃、關(guān)注點(diǎn)分離、遞歸、優(yōu)化、分解等思維特征。關(guān)于計(jì)算思維的教學(xué)和培養(yǎng)在計(jì)算機(jī)、信息技術(shù)等教育領(lǐng)域均呈現(xiàn)出較高的活躍度,尤其是在高等教學(xué)中逐漸成為廣泛關(guān)注的重要研究課題。
程序設(shè)計(jì)類(lèi)課程對(duì)于學(xué)生來(lái)說(shuō)是很難掌握的一門(mén)科目,需要學(xué)生結(jié)合自主學(xué)習(xí)能力、理解應(yīng)用能力、抽象思維能力以及理論化為實(shí)踐的操作能力,尤其在編程設(shè)計(jì)中。C語(yǔ)言編程能力的形成體現(xiàn)在學(xué)生進(jìn)行思維養(yǎng)成的動(dòng)態(tài)過(guò)程,即在程序設(shè)計(jì)時(shí)進(jìn)行問(wèn)題分析、確定算法、確定可行的解決方案、編寫(xiě)代碼,最后運(yùn)行程序獲取結(jié)果來(lái)解決問(wèn)題。從教學(xué)角度來(lái)說(shuō),培養(yǎng)學(xué)生的計(jì)算思維要在具體的課程教學(xué)中落實(shí),以計(jì)算思維為導(dǎo)向的教學(xué)培養(yǎng)能夠直接有效地訓(xùn)練學(xué)生的思維能力、實(shí)踐能力。及時(shí)調(diào)整方式、方法以適應(yīng)程序設(shè)計(jì)學(xué)習(xí)、編程學(xué)習(xí)所需的計(jì)算思維變化過(guò)程,對(duì)研究者、教學(xué)者培養(yǎng)學(xué)生C語(yǔ)言編程能力的教學(xué)實(shí)踐有著重要的指導(dǎo)意義。
我國(guó)眾多高校計(jì)算機(jī)和通信、理工科等專(zhuān)業(yè)均有開(kāi)設(shè)關(guān)于計(jì)算機(jī)編程或計(jì)算機(jī)科學(xué)相關(guān)的課程,例如大學(xué)計(jì)算機(jī)課程、C語(yǔ)言程序設(shè)計(jì)等。這些課程用于提升學(xué)習(xí)者的編程能力雖有必要,但程序設(shè)計(jì)和編程類(lèi)課程的教學(xué)存在一些亟待解決的問(wèn)題,主要體現(xiàn)在教師和學(xué)習(xí)者兩個(gè)方面[3][4][5][6]。
大部分教師缺乏對(duì)學(xué)習(xí)者編程思維能力的培養(yǎng)。授課過(guò)程中僅注重語(yǔ)法細(xì)節(jié)而忽視算法思維的培養(yǎng),教學(xué)重難點(diǎn)停留于語(yǔ)法學(xué)習(xí)和實(shí)例應(yīng)用上,缺乏積極引導(dǎo)學(xué)生進(jìn)行算法思維的分析和編程設(shè)計(jì)的思考;未能根據(jù)學(xué)生的個(gè)人能力發(fā)展發(fā)掘有效的編程思維能力提升訓(xùn)練方法和教學(xué)策略,教學(xué)上用統(tǒng)一的教學(xué)方式和教學(xué)案例,學(xué)生被動(dòng)接受教師指令,機(jī)械地完成上機(jī)作業(yè),無(wú)法正確找尋適合自己的學(xué)習(xí)方式。可以說(shuō),教師未能正確引導(dǎo)學(xué)生將實(shí)踐經(jīng)驗(yàn)轉(zhuǎn)化為思維能力。
學(xué)生則存在“只知其一,不知其二”的學(xué)習(xí)情況。C語(yǔ)言及其派生的編程語(yǔ)言學(xué)習(xí)對(duì)學(xué)生來(lái)說(shuō)存在一定的難度,大多數(shù)學(xué)生對(duì)于課程內(nèi)容的掌握僅停留在讀懂和編寫(xiě)給定程序,即一些基本問(wèn)題的求解方法,而不能調(diào)用自我思維設(shè)計(jì)算法和編寫(xiě)程序,十分不利于后續(xù)知識(shí)的學(xué)習(xí),學(xué)生極易喪失學(xué)習(xí)興趣;學(xué)生的編程思維能力、學(xué)習(xí)能力等存在較大的個(gè)體差異,再加上學(xué)生課后投入的精力有限,往往導(dǎo)致兩極分化現(xiàn)象非常嚴(yán)重,容易造成學(xué)習(xí)者學(xué)習(xí)興趣減弱,從而容易產(chǎn)生掉隊(duì)的現(xiàn)象。
C語(yǔ)言編程作為一門(mén)實(shí)踐性很強(qiáng)的專(zhuān)業(yè)課程,需要課堂教學(xué)和學(xué)習(xí)實(shí)踐活動(dòng)相結(jié)合逐步進(jìn)行能力提高的培養(yǎng)[7]。建構(gòu)主義強(qiáng)調(diào)個(gè)體主動(dòng)性在建構(gòu)認(rèn)知結(jié)構(gòu)中起關(guān)鍵性作用,學(xué)習(xí)者主動(dòng)性地發(fā)生學(xué)習(xí)行為、進(jìn)行意義建構(gòu)、形成概念,從而獲得知識(shí)。思維的意義建構(gòu)需要通過(guò)有效的外部思維技能引導(dǎo)和訓(xùn)練漸進(jìn)達(dá)成,思維技能可通過(guò)學(xué)習(xí)和訓(xùn)練逐漸得到提升,在學(xué)習(xí)和認(rèn)知的過(guò)程中可以通過(guò)反復(fù)訓(xùn)練潛移默化的培養(yǎng)、發(fā)展和提升[8][9]。強(qiáng)化計(jì)算思維訓(xùn)練更加注重從學(xué)生潛在的實(shí)際思維能力出發(fā),結(jié)合有形的技術(shù)工具,主動(dòng)建構(gòu)和可視化學(xué)習(xí)思維。
皮亞杰認(rèn)知發(fā)展理論指出由淺入深、循序漸進(jìn)的四個(gè)發(fā)展階段過(guò)程的重要性,并且在學(xué)習(xí)過(guò)程中可通過(guò)同化與順應(yīng)兩種方式,從而不斷積累知識(shí)并促進(jìn)已有的觀(guān)念、思維方式、知識(shí)組織結(jié)構(gòu)的發(fā)展,進(jìn)而促進(jìn)認(rèn)知結(jié)構(gòu)的發(fā)展[10]。應(yīng)摒棄學(xué)習(xí)僅僅是簡(jiǎn)單的信息積累的舊觀(guān)念,從思維方式發(fā)展的角度出發(fā),新舊知識(shí)經(jīng)驗(yàn)的思維沖突,由此引發(fā)認(rèn)知結(jié)構(gòu)的重組。自我認(rèn)知的發(fā)展注重自我調(diào)節(jié),在簡(jiǎn)單汲取知識(shí)信息的輸入、存儲(chǔ)和提取之外,進(jìn)行思維和學(xué)習(xí)雙向的作用過(guò)程。
有效培養(yǎng)和訓(xùn)練學(xué)生在程序教學(xué)類(lèi)課程中對(duì)復(fù)雜問(wèn)題和事物進(jìn)行分析的計(jì)算思維能力,通過(guò)規(guī)范的方式將復(fù)雜問(wèn)題轉(zhuǎn)化為若干簡(jiǎn)單事物加以解決,并及時(shí)調(diào)整方式、方法以適應(yīng)程序設(shè)計(jì)學(xué)習(xí)、編程學(xué)習(xí)所需計(jì)算思維變化過(guò)程,對(duì)研究者、教學(xué)者進(jìn)行程序設(shè)計(jì)類(lèi)教學(xué)實(shí)踐有著重要的指導(dǎo)意義。以計(jì)算思維為導(dǎo)向的C語(yǔ)言編程思維能力培養(yǎng)則是利用計(jì)算思維的特征為主導(dǎo)啟發(fā)和訓(xùn)練學(xué)生在特定的實(shí)踐中對(duì)實(shí)際待解決問(wèn)題進(jìn)行復(fù)雜到簡(jiǎn)單的邏輯抽象,能應(yīng)用特定的編程語(yǔ)言實(shí)現(xiàn)已知算法,對(duì)已知問(wèn)題進(jìn)行數(shù)據(jù)結(jié)構(gòu)和算法的設(shè)計(jì),并能夠有序、有意識(shí)地進(jìn)行代碼的調(diào)試、運(yùn)行、反思和完善等一系列綜合活動(dòng)。學(xué)生將擁有的基本的C語(yǔ)言編程思維能力落實(shí)到發(fā)現(xiàn)問(wèn)題、分析問(wèn)題、解決問(wèn)題、反思問(wèn)題等思維活動(dòng)中,最終達(dá)到增強(qiáng)學(xué)生解決實(shí)際問(wèn)題的編程能力的目的。
計(jì)算思維作為思維方式的一種,并非單一的思維能力構(gòu)成,而是涉及多種思維能力的綜合體現(xiàn)。美國(guó)國(guó)際教育技術(shù)協(xié)會(huì)(ISTE)和計(jì)算機(jī)科學(xué)教師協(xié)會(huì)(CSTA)[11]曾共同提出了計(jì)算思維的操作性定義:計(jì)算思維是一個(gè)問(wèn)題解決過(guò)程,涉及問(wèn)題的闡述,數(shù)據(jù)的組織、分析和呈現(xiàn),解決方案的制訂、識(shí)別、分析和實(shí)施以及問(wèn)題解決過(guò)程的遷移。計(jì)算思維以其獨(dú)特的方式對(duì)其他思維技能進(jìn)行了擴(kuò)展,既區(qū)別于其它思維,但又與其它思維密切相關(guān)。這對(duì)研究者計(jì)算思維培養(yǎng)的研究提出了更高的要求,通過(guò)劃分計(jì)算思維的維度并對(duì)其內(nèi)涵進(jìn)行更加深入的解析,各學(xué)者相繼提出三維度[12][13][14]、四維度[15]、八維度[16]、九維度[17]的劃分維度為提升計(jì)算思維以及思維教學(xué)提高提供重要培養(yǎng)方向依據(jù)。
計(jì)算思維的訓(xùn)練培養(yǎng)要有機(jī)嵌入到具體的實(shí)踐系統(tǒng)中去。也就是說(shuō),在教學(xué)方面,發(fā)展學(xué)習(xí)者的計(jì)算思維要在具體的課程教學(xué)當(dāng)中落實(shí)。借鑒前人提出的計(jì)算思維劃分方式,本研究認(rèn)為從傳統(tǒng)的以知識(shí)傳授為導(dǎo)向的C語(yǔ)言編程教學(xué)轉(zhuǎn)向以計(jì)算思維為導(dǎo)向的C語(yǔ)言編程思維能力培養(yǎng),需要著力從3個(gè)培養(yǎng)維度開(kāi)展C語(yǔ)言編程能力提升訓(xùn)練,分別為抽象思維、算法思維、糾錯(cuò)思維,如表1所示。
表1 C語(yǔ)言編程能力提升培養(yǎng)的維度及可行方式
1.利用思維可視化工具開(kāi)展直接的思維訓(xùn)練
思維可視化工具是無(wú)形的意識(shí)形態(tài)技術(shù),可幫助學(xué)習(xí)者將思維實(shí)現(xiàn)從抽象到具象、從內(nèi)隱到外顯,甚至從加工舊知到創(chuàng)造新知的有效轉(zhuǎn)變[18]。C語(yǔ)言編程教學(xué)中,滲透思維可視化工具的應(yīng)用,開(kāi)展直接的思維訓(xùn)練,引導(dǎo)學(xué)生清晰而直觀(guān)地進(jìn)行思維圖示的過(guò)程,是對(duì)抽象思維的有效鍛煉,幫助學(xué)生統(tǒng)合發(fā)散式的思維,從抽象到具體按照一定的邏輯形成線(xiàn)狀、網(wǎng)狀的圖示思維。在計(jì)算知識(shí)學(xué)習(xí)和知識(shí)理解的過(guò)程中幫助學(xué)生認(rèn)識(shí)思維、激發(fā)思考、構(gòu)建思維結(jié)構(gòu)與流程,并在反復(fù)的練習(xí)和強(qiáng)化過(guò)程中,逐步養(yǎng)成從無(wú)意識(shí)思維到有意識(shí)思維直至無(wú)意識(shí)自動(dòng)思維的習(xí)慣。例如利用思維可視化工具優(yōu)化學(xué)生課前預(yù)習(xí)以及課后復(fù)習(xí)整理部分,利用思維圖示法支持工具,如思維導(dǎo)圖、流程圖、模式圖等進(jìn)行圍繞主題/項(xiàng)目問(wèn)題的有序解決。
2.設(shè)計(jì)基于問(wèn)題解決的探究式課堂學(xué)習(xí)實(shí)踐
傳統(tǒng)的程序設(shè)計(jì)課程以教師活動(dòng)為中心,以知識(shí)點(diǎn)講解為主線(xiàn),過(guò)于強(qiáng)調(diào)編程語(yǔ)言本身的完整性和系統(tǒng)性,忽略了抽象、分解、自動(dòng)化等計(jì)算思維特征在教學(xué)過(guò)程中的滲透[19]。以計(jì)算思維為導(dǎo)向的C語(yǔ)言編程能力提升培養(yǎng)注重算法思維的拓展發(fā)展,在有限的教學(xué)課時(shí)里實(shí)現(xiàn)總體的教學(xué)目標(biāo),采用基于問(wèn)題解決的案例教學(xué)法,通過(guò)C語(yǔ)言基本知識(shí)的實(shí)例講授,以理解和應(yīng)用為目標(biāo),基于實(shí)際問(wèn)題,在課堂學(xué)習(xí)實(shí)踐中引導(dǎo)學(xué)生圍繞問(wèn)題、項(xiàng)目,判斷、分析與綜合各類(lèi)知識(shí)點(diǎn),運(yùn)用合理的算法表示成可以進(jìn)行計(jì)算的解決問(wèn)題方案,最終形成問(wèn)題提出-問(wèn)題分析-設(shè)計(jì)算法-執(zhí)行程序-解決問(wèn)題的探究式課堂學(xué)習(xí)實(shí)踐活動(dòng)。
3.設(shè)計(jì)漸進(jìn)梯度的自我編程任務(wù)
自我實(shí)踐編程是C語(yǔ)言程序?qū)W習(xí)的一個(gè)重要環(huán)節(jié),學(xué)生掌握基本的典型算法之后,內(nèi)在C/C#的基礎(chǔ)知識(shí),能夠靈活應(yīng)用三種控制結(jié)構(gòu)順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),從問(wèn)題分析、確定方法、界面設(shè)計(jì)、編寫(xiě)代碼到調(diào)試運(yùn)行最終完成一個(gè)完整的編程動(dòng)作。漸進(jìn)梯度的自我編程任務(wù)符合編程學(xué)習(xí)所需計(jì)算思維變化過(guò)程,漸進(jìn)梯度的編程實(shí)踐任務(wù)操作能夠提高學(xué)生自我分析問(wèn)題和解決問(wèn)題的能力。在知識(shí)模塊學(xué)習(xí)之后,設(shè)計(jì)層次化、梯度化的編程任務(wù)目標(biāo),學(xué)習(xí)者根據(jù)自我能力狀況制定由易到難、由淺到深的編程任務(wù)進(jìn)程,完成從基礎(chǔ)能力到中級(jí)應(yīng)用能力的培養(yǎng),最終達(dá)到高級(jí)應(yīng)用的一系列循序漸進(jìn)的C語(yǔ)言編程能力提升活動(dòng)。
在程序設(shè)計(jì)類(lèi)課程的教學(xué)中,學(xué)生的C語(yǔ)言編程能力體現(xiàn)在能夠掌握并利用C語(yǔ)言程序編寫(xiě)代碼,從而提出解決問(wèn)題的思路和方法,最終完成經(jīng)過(guò)問(wèn)題分析、方法確定、算法設(shè)計(jì)和編程實(shí)現(xiàn)的整個(gè)學(xué)習(xí)過(guò)程。因此,筆者只能對(duì)目前傳統(tǒng)C語(yǔ)言編程教學(xué)課程存在的亟待解決的問(wèn)題,在具體教學(xué)中以計(jì)算思維為導(dǎo)向進(jìn)行C語(yǔ)言編程能力提升培養(yǎng)。從抽象思維、算法思維、糾錯(cuò)思維三維度提出相應(yīng)的三個(gè)培養(yǎng)方式訓(xùn)練學(xué)生的C語(yǔ)言編程能力,促使學(xué)生進(jìn)行系統(tǒng)化的具體的編程訓(xùn)練,為提升C語(yǔ)言程序教學(xué)實(shí)踐效果和學(xué)生編程學(xué)習(xí)效率提供可行的參考策略。