石念峰
【摘 要】計(jì)算機(jī)程序閱讀能力對編程能力培養(yǎng)有著重要作用。為消除程序閱讀對編程初學(xué)者造成的認(rèn)知加載負(fù)擔(dān),提出一種基于變量角色的計(jì)算機(jī)程序閱讀能力培養(yǎng)方法。利用變量角色技術(shù)將初學(xué)者程序變量分為11種變量角色,通過動(dòng)畫和圖片相結(jié)合為編程初學(xué)者提供程序閱讀支撐。在對照組和實(shí)驗(yàn)組中分別采用傳統(tǒng)案例式教學(xué)方法和變量角色輔助的案例式教學(xué)法進(jìn)行高級語言程序設(shè)計(jì)課程教學(xué)。采用SOLO(Structure of Observed Learning Outcomes)分類評價(jià)法對教學(xué)效果進(jìn)行了分析,結(jié)果顯示實(shí)驗(yàn)組學(xué)生的程序閱讀能力SOLO分值得到顯著性提高,期末考試成績優(yōu)秀率比對照組高6個(gè)百分點(diǎn)。
【關(guān)鍵詞】變量角色;編程初學(xué)者;程序閱讀;SOLO分類評價(jià)
0 前言
高級語言程序設(shè)計(jì)課程是計(jì)算機(jī)專業(yè)一門核心課程,然而計(jì)算機(jī)專業(yè)的學(xué)生通常把它列為最難學(xué)習(xí)的基礎(chǔ)課之一。以洛陽理工學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)為例,從2007年到2014年,高級語言程序設(shè)計(jì)課程的平均不及格率為26.4%[1]。最近研究表明,案例式教學(xué)程序案例閱讀可以顯著提高編程初學(xué)者的程序解釋能力、程序調(diào)試能力和程序編寫能力,因?yàn)樗坏梢詭椭幊坛鯇W(xué)者養(yǎng)成高水平的批判思維,而且有利于培養(yǎng)初學(xué)者采用計(jì)算思維解決實(shí)際問題的能力。然而,案例式教學(xué)通常會(huì)給編程初學(xué)者造成認(rèn)知加載負(fù)擔(dān)[2]。因此,如何處理好案例式程序設(shè)計(jì)教學(xué)和認(rèn)知加載負(fù)擔(dān)之間的關(guān)系是計(jì)算機(jī)教育研究熱點(diǎn)之一[3]。
變量角色(Roles of Variables, ROV)是一種描述高級程序員如何使用程序變量的技術(shù),它能使編程初學(xué)者像專家級編程員一樣閱讀和編寫程序。這為消除案例式教學(xué)的認(rèn)知加載負(fù)擔(dān)提供了一種解決途徑[4]。本文將ROV技術(shù)和編程案例結(jié)合,研究ROV在編程初學(xué)者程序閱讀能力培養(yǎng)中的教學(xué)效果,并采用SOLO(Structure of Observed Learning Outcomes)分類評價(jià)法進(jìn)行了教學(xué)評價(jià)。
1 變量角色技術(shù)
變量角色(Roles of Variables, ROV)最早由芬蘭的Sajaniemi教授提出,它被看作是一種提高編程初學(xué)者編程學(xué)習(xí)的認(rèn)知框架和先驗(yàn)知識[1]。ROV技術(shù)認(rèn)為程序變量的聲明、賦值和運(yùn)算方法具有固定模式,并且99%初學(xué)級程序代碼種的變量可以采用11種變量角色來描述。每一個(gè)變量角色描述了一個(gè)變量或者一個(gè)數(shù)據(jù)結(jié)構(gòu)運(yùn)算過程以及它同其他變量或數(shù)據(jù)結(jié)構(gòu)之間的關(guān)系。
ROV是一種高于編程語言的應(yīng)用程序知識,可以顯式地教授給學(xué)生。文獻(xiàn)[4]研究表明ROV技術(shù)能夠通過提高編程初學(xué)者的程序調(diào)試、閱讀和解釋能力來培養(yǎng)程序編寫能力。更重要的是,借助ROV技術(shù)學(xué)習(xí)程序設(shè)計(jì),編程初學(xué)者可以像專家級程序員一樣更加注重程序結(jié)構(gòu)的深層次理解,而不是只專注編程語言的語法和程序變量基本概念等淺層理解。
2 實(shí)驗(yàn)方法及過程
2.1 實(shí)驗(yàn)對象
實(shí)驗(yàn)對象由57名洛陽理工學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)一年級新生構(gòu)成,這些受試者全部選修了2013-2014學(xué)年第二學(xué)期開設(shè)的《高級語言程序設(shè)計(jì)》課程。為了開展實(shí)驗(yàn),首先按照行政班級將57名實(shí)驗(yàn)對象分為兩個(gè)不同的上課班級;然后,由任課老師隨機(jī)指定一個(gè)為對照組,另一個(gè)組為實(shí)驗(yàn)組。最終實(shí)驗(yàn)組和對照組分別有30名和27名學(xué)生構(gòu)成。
2.2 實(shí)驗(yàn)方法和過程
《高級語言程序設(shè)計(jì)》課程共72個(gè)課時(shí),其中實(shí)驗(yàn)16個(gè)課時(shí),理論56個(gè)課時(shí)。在對照組按照傳統(tǒng)的案例式教學(xué)方法教學(xué)(簡稱案例式教學(xué)),在實(shí)驗(yàn)組按照變量角色輔助的案例式教學(xué)(簡稱基于角色教學(xué))。
由于《高級語言程序設(shè)計(jì)》課程分為理論課和實(shí)驗(yàn)課兩部分構(gòu)成,所以實(shí)驗(yàn)過程中分別采用了不同的教學(xué)方法來提高學(xué)生的程序閱讀能力和程序編寫能力。在理論課上,對照組采用的是傳統(tǒng)的案例式教學(xué)方法。每次講完新的知識點(diǎn)后,教師首先讓學(xué)生閱讀一段程序案例代碼;然后,教師告訴學(xué)生這段代碼實(shí)現(xiàn)的功能,并講解在該案例中本次課講授的編程知識點(diǎn)是如何使用。而在實(shí)驗(yàn)組講授理論課時(shí),除了和對照組一樣進(jìn)行案例式教學(xué)外,額外增加了兩個(gè)教學(xué)環(huán)節(jié),即:
第一,變量角色學(xué)習(xí)。在講解案例前,教師先講解該案例中出現(xiàn)的新的變量角色,并通過經(jīng)典代碼片段結(jié)合變量角色可視化軟件(PlanAni系統(tǒng))的方法,介紹和演示此變量角色。PlanAni系統(tǒng)是個(gè)變量角色支持系統(tǒng),它采用不同的圖標(biāo)表示各種變量角色,并利用動(dòng)畫演示變量值的變化過程?!癝tepper”角色被抽象為一串腳?。ㄆ渲挟?dāng)前步驟為紅色)。
第二,基于變量角色識別的案例講解。在案例講解過程中,每遇到一個(gè)變量,教師都要指出這個(gè)變量屬于哪一類變量角色,重復(fù)它的簡單定義和功能,幫助學(xué)生理解程序。必要時(shí),使用PlanAni系統(tǒng)重新可視化地介紹此類變量角色。
關(guān)于實(shí)驗(yàn)課,對照組和實(shí)驗(yàn)組的講授方法略有不同。在對照組,首先教師要求每個(gè)學(xué)生閱讀一段簡單案例程序,并互相解釋該程序的功能;然后按照要求修改案例代碼使其滿足更復(fù)雜的功能要求。相比之下,在對照組,教師要求學(xué)生在講解簡單案例程序時(shí),不但要講解該程序的功能,還要指出每個(gè)變量角色并闡述該變量角色的作用。
在全部課程結(jié)束后,對照組和實(shí)驗(yàn)組的學(xué)生都要求參加一場兩個(gè)小時(shí)的期末考試。期末考試試卷由三部分構(gòu)成:1)20道填空和10道選擇題,用于考查學(xué)生編程基本知識掌握情況;2)3道程序閱讀題,考查學(xué)生的程序閱讀能力和解釋能力; 3)2道程序編寫題,用于評價(jià)學(xué)生的程序編寫能力。
2.3 數(shù)據(jù)采集及處理
本文采集了兩組實(shí)驗(yàn)數(shù)據(jù):期末考試試卷成績和程序閱讀能力的SOLO分值。由于SOLO分值可以科學(xué)和有效地評價(jià)學(xué)生程序閱讀能力[5],所以首先按照獻(xiàn)[5]將學(xué)生的程序閱讀答案劃分為前結(jié)構(gòu)層次(P)、單點(diǎn)結(jié)構(gòu)層次(U)、多點(diǎn)結(jié)構(gòu)層次(M)和關(guān)聯(lián)結(jié)構(gòu)層次(R)等四個(gè)層次,并按照4、3、2和1的數(shù)值量化SOLO分類,得到程序閱讀能力SOLO分值數(shù)據(jù)集。endprint
3 實(shí)驗(yàn)結(jié)果及分析
首先,采用獨(dú)立t檢測對實(shí)驗(yàn)組和對照組學(xué)生的期末考試成績進(jìn)行了統(tǒng)計(jì)分析,評價(jià)總體教學(xué)效果。從表1所示的分析結(jié)果可知,實(shí)驗(yàn)組和對照組學(xué)生的期末考試成績存在顯著性差異,t(2.61)=55.0,p=0.012。這個(gè)實(shí)驗(yàn)結(jié)果表明,基于角色教學(xué)可以提高程序設(shè)計(jì)課程的教學(xué)效果,使學(xué)生獲得了較好的期末考試成績,有效降低了程序設(shè)計(jì)課程的不及格率。
其次,由于程序閱讀能力SOLO分值不滿足正態(tài)分布,所以采用曼-惠特尼U檢驗(yàn)對學(xué)生的閱讀能力SOLO分值進(jìn)行了分析。從表2可以看出,實(shí)驗(yàn)組學(xué)生閱讀能力SOLO分值(Mdn=3.5)顯著高于對照組(Mdn=2.5),U=263.5,p=0.019。同時(shí),實(shí)驗(yàn)數(shù)據(jù)表明,將近37%的實(shí)驗(yàn)組學(xué)生閱讀能力為滿分,即達(dá)到關(guān)聯(lián)結(jié)構(gòu)層次,而對照組只有17%的學(xué)生獲得了關(guān)聯(lián)結(jié)構(gòu)層次的能力評價(jià)。上述結(jié)果說明,基于角色教學(xué)方法提高了程序閱讀能力的培養(yǎng)教學(xué)效果。
4 結(jié)論
本文在程序教學(xué)中引入ROV技術(shù),利用變量角色來培養(yǎng)編程初學(xué)者程序深層理解能力,消除傳統(tǒng)案例式教學(xué)方法在編程初學(xué)者程序閱讀中造成的認(rèn)知加載負(fù)擔(dān),并采用SOLO評價(jià)法對教學(xué)效果進(jìn)行了教學(xué)評價(jià)。實(shí)驗(yàn)結(jié)果顯示,這種基于ROV輔助的案例式程序設(shè)計(jì)教學(xué)方法,不但提高了編程初學(xué)者的課程通過率,而且顯著提高了編程初學(xué)者的程序閱讀能力。
【參考文獻(xiàn)】
[1]SHI N,MIN Z,ZHANG P.Effects of visualizing roles of variables with animation and IDE in novice program construction[J]. Telematics and Informatics,2017,34(5):743-54.
[2]MORENO R,MAYER R.Interactive multimodal learning environments [J].Educational Psychology Review,2007,19(3):309-26.
[3]KOHN T.Variable Evaluation:an Exploration of Novice Programmers' Understanding and Common Misconceptions; proceedings of the ACM SIGCSE Technical Symposium on Computer Science Education,Seattle,Washington,USA,F(xiàn) March,2017[C]. ACM: 3017724.
[4]KUITTINEN M, SAJANIEMI J. Teaching roles of variables in elementary programming courses [J]. SIGCSE Bull, 2004, 36(3): 57-61.endprint