劉芝怡 丁志云
常州工學(xué)院 江蘇常州 213002
☆現(xiàn)代教育技術(shù)與裝備☆
結(jié)對編程在程序設(shè)計語言實踐教學(xué)中的應(yīng)用
劉芝怡 丁志云
常州工學(xué)院 江蘇常州 213002
結(jié)對編程是敏捷地和基于實踐的軟件開發(fā)方法。在程序設(shè)計課程的傳統(tǒng)實踐教學(xué)中,學(xué)生之間往往缺乏彼此的有效互動,從而不能完成實踐教學(xué)的任務(wù),甚至失去對課程的信心。筆者提出一種將結(jié)對編程運用于程序設(shè)計語言實踐教學(xué)中的方案,并通過實驗證明該方案可以有效提高學(xué)生的學(xué)習(xí)效率。
結(jié)對編程;計算機語言課程;教學(xué)實踐
Abstract: Pair programming is a software development methodology which is agile and based on practice. Due to the lack of communication between each other, students cannot complete the task, and even lose the conf dence in the program designing course. This paper put forwards a method which applies pair programming in language course to teaching practice. Our experiment shows that pair programming is effective in improving students’ learning effect.
Key words: pair programming; computer language course; teaching practice
Linn和Dallbey在1989年提出的程序設(shè)計認識成就鏈中認為,初學(xué)者必須依次學(xué)會程序語言特征、程序設(shè)計技巧、問題解決能力等知識,才能由初學(xué)者逐漸成為“專家”。我校教師在經(jīng)過一個學(xué)期的程序設(shè)計語言課程教學(xué)后,發(fā)現(xiàn)大部分學(xué)生無法超越第一階段,仍然將學(xué)習(xí)重點停留在對程序語言語法的了解,無法通過編程解決實際問題。
造成學(xué)生學(xué)習(xí)效果不佳的原因有很多,其中一個重要的問題出現(xiàn)在實踐環(huán)節(jié)。眾所周知,要掌握好一門程序設(shè)計語言就必須通過大量的實踐操作。當(dāng)前,大多數(shù)學(xué)校程序設(shè)計語言實驗課的教學(xué)方法是讓每位學(xué)生在實驗課上獨立完成教師指定的題目,教師給予個別輔導(dǎo)。而學(xué)生多、輔導(dǎo)教師少的現(xiàn)實使得學(xué)生與教師之間缺乏足夠的交流,導(dǎo)致學(xué)生的問題不能得到全面及時解決。一些程序設(shè)計能力較差的學(xué)生常常無法按時完成作業(yè),部分學(xué)生甚至通過抄襲的方式來應(yīng)付教師的檢查。另一些程序設(shè)計能力較強的同學(xué)早早完成任務(wù)而大部分時間無所事事。若能在實踐教學(xué)環(huán)節(jié)讓學(xué)生之間相互交流,以協(xié)作方式完成作業(yè),將會使學(xué)生體會到團隊合作的優(yōu)點,并學(xué)習(xí)他人的編程經(jīng)驗,從而達到快速進步的效果。
極限編程(Extreme Programming,以下簡稱為XP)是1996年由Kent Beck提出的敏捷軟件開發(fā)方法。XP整合多人的觀點與技術(shù)經(jīng)驗,以交流、簡單、反饋、勇氣4個價值觀作為基礎(chǔ),其核心是結(jié)對編程。所謂結(jié)對編程,就是每個模塊的編碼都是2個人一起完成,共用一臺電腦。這樣,一個人編碼時,另外一個人就可以檢查代碼,或?qū)幋a的思路進行思考,寫文檔等。不再有另外的測試人員,2個人同時完成代碼的測試,并且是先寫測試程序然后再編程。這樣既避免了編程人員和測試人員的矛盾,又解決了一個人自己檢查的局限性。2個人共同檢查可以避免大多數(shù)的錯誤。在共同編程中還可以及時地進行經(jīng)驗交流和傳授。并且2個人共同工作也增加了工作量的彈性,使項目計劃的瓶頸能盡快解決。
在國外,已有眾多研究人員對結(jié)對編程技術(shù)在程序設(shè)計教學(xué)中的效果以及影響因素進行了一系列的實驗研究。結(jié)對編程正面效果有結(jié)對編程技術(shù)具有互相監(jiān)督、互相協(xié)商、互相鼓勵、互相復(fù)查、互相糾錯、互相學(xué)習(xí)、互相信任等7種激勵效應(yīng)。國內(nèi)也有學(xué)者從事這方面的研究,劉峰等指出將結(jié)對編程引入程序設(shè)計語言實踐教學(xué)有如下意義:(1)極限編程有利于培養(yǎng)學(xué)生互相學(xué)習(xí)的良好習(xí)慣;(2)極限編程提高了學(xué)生的自信心;(3)極限編程促進了團隊合作和人際交往。
當(dāng)前,學(xué)者將結(jié)對編程思想引入程序設(shè)計語言實踐教學(xué)的做法還存在一個很大的缺點。問題出現(xiàn)在結(jié)對的2個學(xué)生學(xué)習(xí)水平差異比較大的情況下??赡苡捎诔绦驈?fù)雜,也可能因為害怕寫錯代碼,甚至是想偷懶,那些水平較差的學(xué)生常常自己不工作,讓能力較強的學(xué)生來完成大部分工作。這種情況下,水平較差的學(xué)生由于減少實踐機會,其學(xué)習(xí)效果反而更糟糕。鑒于此,提出一種改進方案以確保在實踐環(huán)節(jié)中結(jié)對編程的2個成員都完成等量工作,使雙方均得到鍛煉。筆者通過實驗來分析新方案的使用對學(xué)生學(xué)習(xí)程序語言的成效和影響。
(1)結(jié)對辦法:在前幾次實驗課中實行自愿配對制度,因為剛開始教師對學(xué)生的編程能力及個性特點還無法全面掌握。幾次實驗課后可實施強制配對,具體做法是能力強的學(xué)生帶能力差的同學(xué)。
(2)任務(wù)安排:在每一次實驗課上,首先要求隊伍中的每位成員獨立完成各自的編程任務(wù),需要注意將個人編程任務(wù)的難度值及知識點設(shè)置成類似的。在他們獨立完成各自的任務(wù)后,可讓他們協(xié)作解決一個更復(fù)雜的問題,該問題要和他們先前的編程任務(wù)有關(guān)。表1為一個編程任務(wù)分配的樣本。
表1 編程任務(wù)的樣本
(3)學(xué)生在完成個人任務(wù)時,原則上不允許其相互討論。但是,如果某個成員提前完成,并且另外一個成員認為有必要求助同伴時,教師可允許他們討論但同時要做好記錄以備對后續(xù)教學(xué)過程進行監(jiān)督。
這樣,每堂實驗課上學(xué)生都可以進行獨立編程和合作編程的實踐,從而避免了傳統(tǒng)實驗課上水平差的學(xué)生因本身能力的局限和師生溝通少而導(dǎo)致無法完成實驗,又避免了以往使用結(jié)對編程方法時水平差的學(xué)生不作為的問題。
采用實驗法來檢測設(shè)計方案的實施效果。在教學(xué)實驗中,自變項為2種不同的實驗課教學(xué)方法,因變項為學(xué)生的測驗成績。實驗過程中,實驗組2的學(xué)生實驗課上采用筆者提出的結(jié)對編程方案;實驗組1的學(xué)生則采用獨立編程模式。兩組教學(xué)內(nèi)容和學(xué)時數(shù)完全相同。實驗結(jié)束后,兩組采用相同的測試題目進行考試,并要求各填寫一份程序設(shè)計語言教學(xué)問卷。本實驗的研究工具包括:課程講義、合作編程學(xué)習(xí)記錄單、VB測試卷、教學(xué)問卷。
實驗過程共實行16周,每班每周4節(jié)課,2節(jié)理論課,2節(jié)上機課。16周后實施測試和填寫教學(xué)問卷。數(shù)據(jù)資料包括實驗課程序代碼完成情況統(tǒng)計、測試成績和教學(xué)問卷3部分。表2~表4是根據(jù)收集到的數(shù)據(jù)資料進行分析后得到的結(jié)果。
表2 整體學(xué)習(xí)成績分析(總分20)
表3 程序理解能力分析(總分3)
表4 程序設(shè)計能力分析(總分17)
可以看到,采用改進結(jié)對編程方式進行實踐教學(xué)的班級普遍在編程能力和質(zhì)量上優(yōu)于采用獨立編程方式進行實踐教學(xué)的班級。
學(xué)生對于課程活動的相關(guān)評價在調(diào)查問卷中使用開放式的問題呈現(xiàn)。實驗組2中71.2%的學(xué)生認為結(jié)對編程有利于提高自己的學(xué)習(xí)效果,92%的學(xué)生表示結(jié)對編程讓他們更自信,感覺更好。下面摘錄了一些學(xué)生對結(jié)對編程實踐的看法。
學(xué)生1:“我覺得,在幫助同伴解決問題的過程中得到了進一步提高?!?/p>
學(xué)生2:“同伴經(jīng)常能發(fā)現(xiàn)我平時沒注意的錯誤。”
學(xué)生3:“上課時有些問題一知半解,實驗課上與同伴的合作讓我對很多內(nèi)容有了更深入地理解?!?/p>
參與實驗的教師普遍認為該實踐教學(xué)模式減輕了他們的工作負擔(dān)。以往實驗課上,輔導(dǎo)教師雖然忙得焦頭爛額,但是仍有很多學(xué)生的問題無法得到及時解決。采用新模式后,學(xué)生遇到問題可相互討論,合作解決。另外,他們也覺得學(xué)生上交的程序質(zhì)量提高了很多,而且抄襲現(xiàn)象明顯減少了。
結(jié)對編程在教學(xué)實驗中取得了很好的應(yīng)用效果。在程序設(shè)計語言的實驗課中,學(xué)生采取了與傳統(tǒng)方法不同的編程方式,即結(jié)對編程方式。通過在合作任務(wù)部分應(yīng)用結(jié)對編程,發(fā)現(xiàn)結(jié)對的成本并沒有比單獨編程時高,極大地提高了程序質(zhì)量,顯著增強了結(jié)對學(xué)生分析和解決問題的能力,如分析時遇到不少問題,通過結(jié)對雙方的及時溝通和不斷探討,最終找出較好的解決方案。此外,結(jié)對編程的過程也是一個互相督促的過程。由于這種督促的壓力,使得結(jié)對學(xué)生在實驗環(huán)節(jié)更認真地學(xué)習(xí)。通過這種實踐模式的應(yīng)用,學(xué)生的自信心和成就感得到了極大增強,從而進一步激發(fā)其學(xué)習(xí)熱情。
筆者通過教學(xué)實驗的實施過程總結(jié)出一些經(jīng)驗,遵從這些建議和經(jīng)驗,可以讓結(jié)對學(xué)生的編程實踐變得更容易、更有效率。具體有以下幾點:(1)盡量將性格融合的,技術(shù)互補的配對。在不同階段,有針對性地組合,可以起到很好的作用。(2)任務(wù)出錯或不能完成,應(yīng)讓所有成員共同負責(zé)。(3)結(jié)對成員在完成合作任務(wù)出現(xiàn)意見不同時,可由教師幫助解決。(4)在教學(xué)過程中,教師應(yīng)給結(jié)對學(xué)生多點鼓勵,讓其產(chǎn)生共同的榮譽感和責(zé)任感。
[1] B. Hanks. Student attitudes toward pair programming[J]. In ITiCSE, 2006
[2] P. Sfetsos, I. Stamelos, L. Angelis, and I. Deligiannis. An experimental investigation of personality types impact on pair effectiveness in pair programming[J]. Empirical Softw. Eng., 2009,14(2):187~226
[3] L. Williams, L. Layman, J. Osborne, and N. Katira. Examining the compatibility of student pair programmers[J]. In Proc. AGILE, 2006
[4] 劉峰,王小平.結(jié)對編程在計算機語言實踐課中的應(yīng)用[A].全國第19屆計算機技術(shù)與應(yīng)用學(xué)術(shù)會議論文集,2008
Application of pair programming in computer language practice course
Liu Zhiyi, Ding Zhiyun
Changzhou institute of technology, Changzhou, 213002, China
2010-12-26 稿件編號:1012129
劉芝怡,講師。丁志云,講師,主任。
常州工學(xué)院校級重點課題“極限編程和混合式學(xué)習(xí)在程序設(shè)計課程中的應(yīng)用研究與實踐”。