閆 晟,徐 彬,2
(1.東北大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,遼寧 沈陽(yáng) 110819;2.東北大學(xué) 國(guó)家級(jí)計(jì)算機(jī)實(shí)驗(yàn)教學(xué)示范中心,遼寧 沈陽(yáng) 110819)
學(xué)習(xí)程序設(shè)計(jì)能夠解決不同專業(yè)的不同需求,同樣的,計(jì)算機(jī)科學(xué)課程可以培養(yǎng)學(xué)生的計(jì)算思維[1],因此,C 語(yǔ)言在各大高校都成為了學(xué)生的必修課程,但是作為剛剛?cè)腴T學(xué)習(xí)編程語(yǔ)言的學(xué)生來(lái)說(shuō),單獨(dú)上機(jī)編程的難度非常大。在這種情況下,學(xué)生的成就感低,學(xué)習(xí)的積極性受到了很大的影響。研究表明,計(jì)算機(jī)教學(xué)實(shí)踐中引入結(jié)對(duì)編程的模式有利于提高學(xué)生的編程能力[2-4],因此,可以在C 程序設(shè)計(jì)課程的上機(jī)操作環(huán)節(jié)引入結(jié)對(duì)編程模式。為了測(cè)量結(jié)對(duì)編程模式和傳統(tǒng)單人模式之間的差異,設(shè)計(jì)一項(xiàng)實(shí)驗(yàn),評(píng)估結(jié)對(duì)編程模式在課程中的實(shí)施效果。
結(jié)對(duì)編程技術(shù)是指來(lái)自同一工作站的兩個(gè)程序員在同一個(gè)任務(wù)上協(xié)同工作。隨著極限編程的興起,這種技術(shù)已成為軟件行業(yè)中一種常見(jiàn)的編程方法[5]。兩個(gè)程序員在一起處理一個(gè)項(xiàng)目時(shí),一個(gè)程序員編寫代碼,叫作“駕駛員”,另一個(gè)程序員在生成新代碼時(shí)不斷地檢查它,叫作“導(dǎo)航員”。“駕駛員”主要關(guān)注正在編寫的代碼,而“導(dǎo)航員”可以在更加廣泛的程序中結(jié)合上下文中進(jìn)行審查。一般來(lái)說(shuō),程序員會(huì)在“駕駛員”和“導(dǎo)航員”兩個(gè)角色中隨時(shí)互換。
結(jié)對(duì)編程已經(jīng)成為敏捷開發(fā)方法中一種重要的實(shí)踐模式,在軟件開發(fā)領(lǐng)域得到廣泛的重視和研究。研究發(fā)現(xiàn),結(jié)對(duì)編程對(duì)編程過(guò)程有多種積極影響,雖然結(jié)對(duì)編程增加了大約15%的開發(fā)時(shí)間成本,但它產(chǎn)生了全面更好的代碼,從而減少了所需的測(cè)試和錯(cuò)誤修復(fù)量[6]。
如今結(jié)對(duì)編程已經(jīng)在許多計(jì)算機(jī)科學(xué)課程中獲得普及,研究表明,這種學(xué)習(xí)策略活動(dòng)是有效的[7-9]。結(jié)對(duì)編程為學(xué)生提供了高效的編程環(huán)境,學(xué)生可以在這種環(huán)境下生成質(zhì)量更高的代碼,并且增強(qiáng)編程的信心[10]。結(jié)對(duì)編程對(duì)于提高學(xué)生編程興趣、對(duì)代碼的理解能力以及編程程序的成功率都有著很大的幫助。有報(bào)告指出,結(jié)對(duì)編程能夠使學(xué)生不斷檢查他們的編程及學(xué)習(xí)方式,因?yàn)樗麄儗?duì)同一個(gè)問(wèn)題有著不同的觀點(diǎn)。這種方式可以擴(kuò)展學(xué)生學(xué)習(xí)編程的學(xué)習(xí)策略,有助于改變一些學(xué)生的固定心態(tài)[11]。
實(shí)驗(yàn)數(shù)據(jù)來(lái)自于2019 年春季東北大學(xué)材料系學(xué)習(xí)C 程序設(shè)計(jì)課程的學(xué)生。本實(shí)驗(yàn)統(tǒng)計(jì)了來(lái)自材料系大一年級(jí)8 個(gè)班級(jí)共計(jì)255 人的數(shù)據(jù),其中,男生所占的比例為79.6%,女生比例為20.4%。采用問(wèn)卷調(diào)查方式收集并分析所有學(xué)生的信息,結(jié)果列于表1 中,其中,60%的學(xué)生表示沒(méi)有編程經(jīng)驗(yàn),90.2%的學(xué)生此前沒(méi)有聽說(shuō)過(guò)結(jié)對(duì)編程,僅有9.8%的學(xué)生了解過(guò)結(jié)對(duì)編程。
實(shí)驗(yàn)總共進(jìn)行5 周,學(xué)生每周在東北大學(xué)在線編程社區(qū)完成編程任務(wù),并且完成在線測(cè)驗(yàn)。為了測(cè)量結(jié)對(duì)編程模式與傳統(tǒng)模式的有效性,將8 個(gè)班級(jí)分為兩組,其中1—4 班共計(jì)131 人作為實(shí)驗(yàn)組;5—8 班共計(jì)124 人作為對(duì)照組。在第1 周兩組學(xué)生都采取傳統(tǒng)模式,在第2—5 周對(duì)實(shí)驗(yàn)組采取結(jié)對(duì)編程模式,對(duì)對(duì)照組采取傳統(tǒng)模式,圖1 中總結(jié)了設(shè)計(jì)模式。實(shí)驗(yàn)組的學(xué)生可以和組內(nèi)任何一位學(xué)生進(jìn)行配對(duì),不限次數(shù)。
表1 學(xué)生人數(shù)對(duì)比
圖1 比較結(jié)對(duì)編程與傳統(tǒng)模式的實(shí)驗(yàn)設(shè)計(jì)
實(shí)驗(yàn)數(shù)據(jù)包括學(xué)生每周在在線編程社區(qū)完成程序題的提交正確率,以及學(xué)生在完成編程任務(wù)之后完成測(cè)驗(yàn)的分?jǐn)?shù)。這些測(cè)驗(yàn)均為選擇題的形式,其中包括概念和編程問(wèn)題。
為了確保兩種模式的學(xué)生能接受相同數(shù)量的作業(yè),我們收集了編程任務(wù)中15 道程序題的提交正確率,并且對(duì)每個(gè)題目的正確率和每周測(cè)驗(yàn)分?jǐn)?shù)進(jìn)行均分。
根據(jù)學(xué)生的反饋以及每周的教學(xué)內(nèi)容,可以得出第4 周和第5 周的編程任務(wù)更具有挑戰(zhàn)性。15 道程序題的具體難度等級(jí)為PA1—PA4 簡(jiǎn)單、PA5—PA8 中等、PA9—PA15 困難,編程任務(wù)難度隨時(shí)間的增長(zhǎng)遞增。
實(shí)驗(yàn)組和對(duì)照組提交正確率波動(dòng)示意圖如圖2 所示,在第1 周的3 個(gè)問(wèn)題中,實(shí)驗(yàn)組的提交正確率低于對(duì)照組;在其余的12 個(gè)問(wèn)題中,實(shí)驗(yàn)組的提交正確率明顯高于對(duì)照組。這個(gè)結(jié)果是預(yù)期的[12],因?yàn)樵诘? 周兩組學(xué)生均采用傳統(tǒng)模式,單獨(dú)完成上機(jī)任務(wù)。在實(shí)驗(yàn)組采用結(jié)對(duì)編程模式之后,提交正確率有很大提升,并且超過(guò)采用傳統(tǒng)模式的對(duì)照組。在結(jié)對(duì)編程模式的初始階段,實(shí)驗(yàn)組和對(duì)照組波動(dòng)類似,表明結(jié)對(duì)學(xué)生和不結(jié)對(duì)學(xué)生解決問(wèn)題的能力接近,但是隨著結(jié)對(duì)編程模式的推進(jìn),實(shí)驗(yàn)組的波動(dòng)逐漸平緩,表明結(jié)對(duì)編程模式傾向于使學(xué)生更好地應(yīng)對(duì)比較困難的編程任務(wù),學(xué)生解決問(wèn)題的能力得到了加強(qiáng)。
圖2 實(shí)驗(yàn)組和對(duì)照組提交正確率波動(dòng)示意圖
對(duì)實(shí)驗(yàn)組和對(duì)照組的代碼提交正確率數(shù)據(jù)進(jìn)行雙樣本t檢驗(yàn),兩組之間的差異見(jiàn)表2,可以看出兩組在提交正確率上有著明顯的統(tǒng)計(jì)學(xué)差異。一般來(lái)說(shuō),對(duì)照組得分差異為負(fù),這表明對(duì)照組的學(xué)生在提交正確率上比實(shí)驗(yàn)組的學(xué)生差。
表2 實(shí)驗(yàn)組與對(duì)照組在上機(jī)編程的差異性分析
接下來(lái),檢查對(duì)照組和實(shí)驗(yàn)組之間對(duì)于周測(cè)驗(yàn)是否存在差異,結(jié)果如圖3 所示。因?yàn)槊恐軠y(cè)驗(yàn)的總分值不同,因此取每次成績(jī)占總成績(jī)的比例進(jìn)行比較,結(jié)果表明來(lái)自對(duì)照組和實(shí)驗(yàn)組的學(xué)生在所有的5 個(gè)周測(cè)驗(yàn)上的表現(xiàn)非常相似。
對(duì)實(shí)驗(yàn)組和對(duì)照組成績(jī)數(shù)據(jù)做雙樣本t檢驗(yàn),結(jié)果見(jiàn)表3,沒(méi)有發(fā)現(xiàn)兩組數(shù)據(jù)的統(tǒng)計(jì)學(xué)差異。
由于測(cè)驗(yàn)中只包含選擇題,因此可以得出,結(jié)對(duì)編程模式對(duì)選擇題類型的測(cè)驗(yàn)并沒(méi)有明顯影響。這表明結(jié)對(duì)編程模式并不能使學(xué)生解決考試環(huán)境中的選擇題類問(wèn)題。
圖3 對(duì)照組和實(shí)驗(yàn)組在周測(cè)驗(yàn)的分?jǐn)?shù)
表3 實(shí)驗(yàn)組與對(duì)照組在周測(cè)驗(yàn)上的差異性分析
在實(shí)驗(yàn)中,實(shí)驗(yàn)組的學(xué)生可以在組內(nèi)任意配對(duì),因此產(chǎn)生了不同配對(duì)次數(shù)的差異。為了研究這個(gè)差異是否對(duì)上機(jī)編程產(chǎn)生影響,檢查不同結(jié)對(duì)次數(shù)的組合在每周編程任務(wù)上的表現(xiàn)差異,結(jié)果如圖4 所示。不同結(jié)對(duì)次數(shù)的組合在所有編程任務(wù)上的表現(xiàn)非常相似,沒(méi)有發(fā)現(xiàn)統(tǒng)計(jì)學(xué)差異,因此,結(jié)對(duì)次數(shù)并不會(huì)對(duì)上機(jī)編程產(chǎn)生明顯影響。
圖4 結(jié)對(duì)次數(shù)不同在編程任務(wù)上的表現(xiàn)
在實(shí)驗(yàn)結(jié)束后,為了衡量學(xué)生對(duì)于結(jié)對(duì)編程的體驗(yàn),向?qū)W生分發(fā)了簡(jiǎn)短的問(wèn)卷。
Q1:是否愿意繼續(xù)結(jié)對(duì)編程?
Q2:是否覺(jué)得結(jié)對(duì)編程更有效率?
Q3:是否覺(jué)得結(jié)對(duì)編程對(duì)于提高編程水平有幫助?
表4 的結(jié)果表明,學(xué)生對(duì)于結(jié)對(duì)編程的態(tài)度是積極的,大多數(shù)學(xué)生都贊成結(jié)對(duì)編程模式,并且認(rèn)為結(jié)對(duì)編程模式對(duì)自己有幫助。圖5 所示是收集到的學(xué)生認(rèn)為結(jié)對(duì)編程的好處。
在實(shí)踐過(guò)程中發(fā)現(xiàn),在沒(méi)有開展結(jié)對(duì)編程模式時(shí),基礎(chǔ)薄弱的學(xué)生對(duì)于指導(dǎo)教師的依賴性較強(qiáng),消極地對(duì)待解決不了的問(wèn)題。在開展結(jié)對(duì)編程模式之后,這部分學(xué)生可以和結(jié)對(duì)成員之間相互討論。根據(jù)系統(tǒng)記錄的代碼提交時(shí)間,發(fā)現(xiàn)這些學(xué)生能夠很快解決編程上出現(xiàn)的問(wèn)題,更能獲得滿足感,學(xué)習(xí)積極性和主動(dòng)性也有很大提高。
表4 學(xué)生對(duì)結(jié)對(duì)編程的認(rèn)知調(diào)查 %
圖5 學(xué)生認(rèn)為結(jié)對(duì)編程的好處
采取結(jié)對(duì)編程模式的學(xué)生在上機(jī)編程環(huán)節(jié)中的表現(xiàn)要優(yōu)于采取傳統(tǒng)模式的學(xué)生,并且在應(yīng)對(duì)困難的編程任務(wù)時(shí),結(jié)對(duì)編程顯現(xiàn)出明顯的優(yōu)勢(shì),但是在實(shí)驗(yàn)中,沒(méi)有發(fā)現(xiàn)選擇題測(cè)驗(yàn)的分?jǐn)?shù)與上機(jī)編程存在任何差異或者相關(guān)性,表明結(jié)對(duì)編程模式并不能幫助學(xué)生解決考試環(huán)境中的選擇問(wèn)題。
總的來(lái)說(shuō),結(jié)對(duì)編程模式是有效的,這種模式能夠充分地發(fā)揮學(xué)生上機(jī)編程的自主能動(dòng)性,有效減少上機(jī)過(guò)程中實(shí)踐能力差、消極對(duì)待等現(xiàn)象。
在下一步的研究中,將考慮結(jié)對(duì)編程對(duì)于非選擇題的考試測(cè)驗(yàn)的影響,并且關(guān)注部分消極學(xué)生的態(tài)度,改善結(jié)對(duì)編程模式,使學(xué)生更樂(lè)于接受結(jié)對(duì)編程,學(xué)習(xí)更加高效。