石念峰
【摘 要】計算機程序閱讀能力對編程能力培養有著重要作用。為消除程序閱讀對編程初學者造成的認知加載負擔,提出一種基于變量角色的計算機程序閱讀能力培養方法。利用變量角色技術將初學者程序變量分為11種變量角色,通過動畫和圖片相結合為編程初學者提供程序閱讀支撐。在對照組和實驗組中分別采用傳統案例式教學方法和變量角色輔助的案例式教學法進行高級語言程序設計課程教學。采用SOLO(Structure of Observed Learning Outcomes)分類評價法對教學效果進行了分析,結果顯示實驗組學生的程序閱讀能力SOLO分值得到顯著性提高,期末考試成績優秀率比對照組高6個百分點。
【關鍵詞】變量角色;編程初學者;程序閱讀;SOLO分類評價
0 前言
高級語言程序設計課程是計算機專業一門核心課程,然而計算機專業的學生通常把它列為最難學習的基礎課之一。以洛陽理工學院計算機科學與技術專業為例,從2007年到2014年,高級語言程序設計課程的平均不及格率為26.4%[1]。最近研究表明,案例式教學程序案例閱讀可以顯著提高編程初學者的程序解釋能力、程序調試能力和程序編寫能力,因為它不但可以幫助編程初學者養成高水平的批判思維,而且有利于培養初學者采用計算思維解決實際問題的能力。然而,案例式教學通常會給編程初學者造成認知加載負擔[2]。因此,如何處理好案例式程序設計教學和認知加載負擔之間的關系是計算機教育研究熱點之一[3]。
變量角色(Roles of Variables, ROV)是一種描述高級程序員如何使用程序變量的技術,它能使編程初學者像專家級編程員一樣閱讀和編寫程序。這為消除案例式教學的認知加載負擔提供了一種解決途徑[4]。本文將ROV技術和編程案例結合,研究ROV在編程初學者程序閱讀能力培養中的教學效果,并采用SOLO(Structure of Observed Learning Outcomes)分類評價法進行了教學評價。
1 變量角色技術
變量角色(Roles of Variables, ROV)最早由芬蘭的Sajaniemi教授提出,它被看作是一種提高編程初學者編程學習的認知框架和先驗知識[1]。ROV技術認為程序變量的聲明、賦值和運算方法具有固定模式,并且99%初學級程序代碼種的變量可以采用11種變量角色來描述。每一個變量角色描述了一個變量或者一個數據結構運算過程以及它同其他變量或數據結構之間的關系。
ROV是一種高于編程語言的應用程序知識,可以顯式地教授給學生。文獻[4]研究表明ROV技術能夠通過提高編程初學者的程序調試、閱讀和解釋能力來培養程序編寫能力。更重要的是,借助ROV技術學習程序設計,編程初學者可以像專家級程序員一樣更加注重程序結構的深層次理解,而不是只專注編程語言的語法和程序變量基本概念等淺層理解。
2 實驗方法及過程
2.1 實驗對象
實驗對象由57名洛陽理工學院計算機科學與技術專業一年級新生構成,這些受試者全部選修了2013-2014學年第二學期開設的《高級語言程序設計》課程。為了開展實驗,首先按照行政班級將57名實驗對象分為兩個不同的上課班級;然后,由任課老師隨機指定一個為對照組,另一個組為實驗組。最終實驗組和對照組分別有30名和27名學生構成。
2.2 實驗方法和過程
《高級語言程序設計》課程共72個課時,其中實驗16個課時,理論56個課時。在對照組按照傳統的案例式教學方法教學(簡稱案例式教學),在實驗組按照變量角色輔助的案例式教學(簡稱基于角色教學)。
由于《高級語言程序設計》課程分為理論課和實驗課兩部分構成,所以實驗過程中分別采用了不同的教學方法來提高學生的程序閱讀能力和程序編寫能力。在理論課上,對照組采用的是傳統的案例式教學方法。每次講完新的知識點后,教師首先讓學生閱讀一段程序案例代碼;然后,教師告訴學生這段代碼實現的功能,并講解在該案例中本次課講授的編程知識點是如何使用。而在實驗組講授理論課時,除了和對照組一樣進行案例式教學外,額外增加了兩個教學環節,即:
第一,變量角色學習。在講解案例前,教師先講解該案例中出現的新的變量角色,并通過經典代碼片段結合變量角色可視化軟件(PlanAni系統)的方法,介紹和演示此變量角色。PlanAni系統是個變量角色支持系統,它采用不同的圖標表示各種變量角色,并利用動畫演示變量值的變化過程。“Stepper”角色被抽象為一串腳印(其中當前步驟為紅色)。
第二,基于變量角色識別的案例講解。在案例講解過程中,每遇到一個變量,教師都要指出這個變量屬于哪一類變量角色,重復它的簡單定義和功能,幫助學生理解程序。必要時,使用PlanAni系統重新可視化地介紹此類變量角色。
關于實驗課,對照組和實驗組的講授方法略有不同。在對照組,首先教師要求每個學生閱讀一段簡單案例程序,并互相解釋該程序的功能;然后按照要求修改案例代碼使其滿足更復雜的功能要求。相比之下,在對照組,教師要求學生在講解簡單案例程序時,不但要講解該程序的功能,還要指出每個變量角色并闡述該變量角色的作用。
在全部課程結束后,對照組和實驗組的學生都要求參加一場兩個小時的期末考試。期末考試試卷由三部分構成:1)20道填空和10道選擇題,用于考查學生編程基本知識掌握情況;2)3道程序閱讀題,考查學生的程序閱讀能力和解釋能力; 3)2道程序編寫題,用于評價學生的程序編寫能力。
2.3 數據采集及處理
本文采集了兩組實驗數據:期末考試試卷成績和程序閱讀能力的SOLO分值。由于SOLO分值可以科學和有效地評價學生程序閱讀能力[5],所以首先按照獻[5]將學生的程序閱讀答案劃分為前結構層次(P)、單點結構層次(U)、多點結構層次(M)和關聯結構層次(R)等四個層次,并按照4、3、2和1的數值量化SOLO分類,得到程序閱讀能力SOLO分值數據集。endprint
3 實驗結果及分析
首先,采用獨立t檢測對實驗組和對照組學生的期末考試成績進行了統計分析,評價總體教學效果。從表1所示的分析結果可知,實驗組和對照組學生的期末考試成績存在顯著性差異,t(2.61)=55.0,p=0.012。這個實驗結果表明,基于角色教學可以提高程序設計課程的教學效果,使學生獲得了較好的期末考試成績,有效降低了程序設計課程的不及格率。
其次,由于程序閱讀能力SOLO分值不滿足正態分布,所以采用曼-惠特尼U檢驗對學生的閱讀能力SOLO分值進行了分析。從表2可以看出,實驗組學生閱讀能力SOLO分值(Mdn=3.5)顯著高于對照組(Mdn=2.5),U=263.5,p=0.019。同時,實驗數據表明,將近37%的實驗組學生閱讀能力為滿分,即達到關聯結構層次,而對照組只有17%的學生獲得了關聯結構層次的能力評價。上述結果說明,基于角色教學方法提高了程序閱讀能力的培養教學效果。
4 結論
本文在程序教學中引入ROV技術,利用變量角色來培養編程初學者程序深層理解能力,消除傳統案例式教學方法在編程初學者程序閱讀中造成的認知加載負擔,并采用SOLO評價法對教學效果進行了教學評價。實驗結果顯示,這種基于ROV輔助的案例式程序設計教學方法,不但提高了編程初學者的課程通過率,而且顯著提高了編程初學者的程序閱讀能力。
【參考文獻】
[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 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