鐘文峰 劉曉璐


摘 要:針對高職軟件技術(shù)專業(yè)學生普遍缺乏團隊協(xié)作精神這一問題,提出了在《C語言程序設(shè)計》課程的實踐教學中融入結(jié)對編程技術(shù)。經(jīng)過與獨自編程的對比實驗,發(fā)現(xiàn)實施了結(jié)對編程的班級學生的整體編程能力提高的較明顯,也表現(xiàn)出更強的團隊協(xié)作精神。
關(guān)鍵詞:C語言程序設(shè)計;實踐教學;結(jié)對編程;團隊協(xié)作
中圖分類號:G712 ?文獻標識碼:A
在高職院校,程序設(shè)計語言像C語言、Java語言等都是軟件技術(shù)專業(yè)學生進行程序設(shè)計的入門語言,一般首選C語言作為入門語言,在第二學期再學習Java語言。《C語言程序設(shè)計》課程傳統(tǒng)的教學方法往往只注重學生個體能力,忽視了學生口頭表達、溝通協(xié)調(diào)等團隊協(xié)作能力的培養(yǎng),而團隊協(xié)作能力是從事軟件開發(fā)工作的基本素質(zhì)。如今,社會分工越來越細化、技術(shù)及管理越來越復雜,團隊協(xié)作能力往往比個人能力顯得更為重要,尤其在IT行業(yè)。因此本課題以《C語言程序設(shè)計》這一門課程為藍本進行結(jié)對編程的實踐教學探索研究。
1 結(jié)對編程模式介紹
結(jié)對編程是一種敏捷軟件開發(fā)方法,已經(jīng)在一些IT公司中被采用。其基本含義是兩個程序員組合成一對共同來完成程序文檔和代碼的編寫。兩個程序員共同在一臺電腦上工作,完成算法設(shè)計、代碼編寫和軟件測試等。當其中一人進行代碼輸入的時候,另一人則在旁邊隨時審查他輸入的每一行代碼并提出改進意見,他們的關(guān)系好比賽車手和領(lǐng)航員的關(guān)系。只動口不動手的人主導整個的設(shè)計思想,由操作鍵盤的人來實現(xiàn)。由于人的思維速度比輸入代碼的速度快得多,所以在旁邊審查的人可以有空閑的時間做額外的思考,觀察代碼編寫和程序內(nèi)部結(jié)構(gòu)有沒有問題。結(jié)對的兩個程序員經(jīng)常互換角色,這樣可以取長補短,以便更準確更健壯地完成代碼的編寫。結(jié)對編程要求兩個程序員相互協(xié)調(diào),相互配合,這對提高程序員的程序設(shè)計能力和提升溝通協(xié)調(diào)等團隊協(xié)作能力都都具有積極的作用。
2 結(jié)對編程在程序設(shè)計課程實踐教學中的實現(xiàn)
2.1 學生結(jié)對的分配方案
進行結(jié)對編程實踐教學之前要對學生進行分組,每兩人組成一對。現(xiàn)在的學生獨立意識比較強,經(jīng)常只會跟自己身旁熟悉的同學交流,如果給他分配一個不熟悉的同學很可能就不愿意交流。還有,學習能力差的兩個學生結(jié)對,往往會出現(xiàn)由于兩人都不會而不知怎樣開展工作的局面。IT企業(yè)界普通建議結(jié)對的雙方不要從頭到尾一直固定,而是要隨著項目的推進做些調(diào)整。所以為了能夠更有效地給學生結(jié)對,采用前期的自由結(jié)對和后期的能力結(jié)對方案。前期由學生自己尋找結(jié)對伙伴,主要是讓學生盡快熟悉結(jié)對編程角色的搭配和工作的開展過程。后期學習的內(nèi)容難度上升了,改用“優(yōu)帶中、優(yōu)帶弱,中帶弱”的能力結(jié)對,力爭使每一個學生都能學到知識,達到整體提升的目標。把實踐教學的內(nèi)容歸結(jié)為一個一個的問題模塊,在每個問題模塊中對學生進行結(jié)對編程,在不同的問題模塊內(nèi)學生的結(jié)對可以改變,但要遵循上述分配的原則。基于問題模塊的結(jié)對編程如圖1所示。
2.2 結(jié)對編程的實踐教學設(shè)計
從作者所帶的軟件技術(shù)專業(yè)中選取了一個班進行了結(jié)對編程的實踐教學實驗,另外一個班采用常規(guī)的獨自編程。這兩個班的實踐教學內(nèi)容是相同的,均以問題模塊的方式布置實踐內(nèi)容,只是編程模式不同。結(jié)對學生內(nèi)部協(xié)調(diào)好角色的分配,起初自定誰來操作鍵盤輸入代碼誰來審查對方輸入的代碼。
第一次結(jié)對編程時教師找了一個學生進行結(jié)對,給學生們演示結(jié)對編程的過程,讓學生對結(jié)對編程有個初步的認識。在每次實踐課中,特別要求同學們做到以下幾點:結(jié)對伙伴之間要有禮貌,相互尊重;要和搭檔不斷地交流溝通,交流頻率不要低于兩分鐘一次;要不斷地變換結(jié)對伙伴間的角色,比如每10分鐘或完成了一個小功能變換一次,讓結(jié)對雙方共同進步;鼓勵各對之間課后互相交流,吸取其他對好的經(jīng)驗;每次實踐課結(jié)對結(jié)束的時候,要及時給搭檔一些建議或意見,虛心接受反饋;不要做一個專橫的領(lǐng)航員;不要搶奪賽車手的鼠標或鍵盤。學生結(jié)對編程的時候教師要不斷地巡視學生,及時發(fā)現(xiàn)異常情況并解決。比如,對于能力相差大的結(jié)對,老師要注意及時參與進去,多鼓勵較弱的學生;結(jié)對雙方意見不一致發(fā)生爭執(zhí)時老師要及時調(diào)和;與結(jié)對成員共同討論優(yōu)化程序的算法等。
2.3 結(jié)對編程實踐教學效果分析
本文選擇了軟件技術(shù)2班在《C語言程序設(shè)計》課程的實踐教學中進行結(jié)對編程的教學探索實驗,作為對照班級的軟件技術(shù)1班進行傳統(tǒng)的獨自編程。兩個班的人數(shù)一樣多,教學總課時都是90,理論與實踐比例均為1∶1。通過對實驗班和對照班的對比,發(fā)現(xiàn)相同的實踐題目,實驗班學生完成的情況整體上要比對照班好,無論是學生學習編程的積極性方面、還是編寫的程序健壯性方面都是呈現(xiàn)較好的勢頭。對照分析兩個班的教學效果,總結(jié)如下:
一是在學生的溝通和團隊協(xié)作能力培養(yǎng)方面。獨自編程講究的是單打獨斗,一個人在那埋頭苦干,算法設(shè)計、代碼編寫、程序調(diào)試等都是自己一人做決定,毫無溝通和合作理念。結(jié)對編程講究的是并肩作戰(zhàn),程序算法的設(shè)計、代碼的編寫、程序的調(diào)試和評審都是在兩個人經(jīng)過不斷的溝通交流下進行的,兩人達成一致意見才能付諸實施,是一個高頻交流和協(xié)作的團隊活,學生頻繁的溝通地得到了鍛煉,團隊協(xié)作能力也得到了很大的提高。
二是在學生抗挫折和學習積極性方面。獨自編程的學生由于是獨干,編程過程中遇到了問題如果經(jīng)過自己的努力還是解決不了,要么就放棄在那偷偷地玩手機,要么坐在那等待老師來指導。由于班上學生人數(shù)較多,平均等待老師的指導要十分鐘左右,等待過程很容易讓學生產(chǎn)生失敗感,這樣的次數(shù)多了逐漸地就會對編程失去興趣。結(jié)對編程的學生由于是合作,當其中一人遇到問題時他可以與結(jié)對伙伴交流,取長補短,積極地去解決問題,待到程序調(diào)試結(jié)果正確的那一刻他們的成就感倍增,從而增強了學習的興趣,學習積極性自然會提高。
三是在學生學習效率和老師負擔方面。根據(jù)多年的教學觀察,發(fā)現(xiàn)學生們在編程過程中遇到的bug多數(shù)是一些語法錯誤。獨自編程的學生面對這些常見的bug,他們在很大程度上等待老師來幫助解決,等待的時間少則一到兩分鐘,多則十幾分鐘都有可能。一個教師很難及時一一指導一個大班級中的每一位學生,學生的學習效率低,老師的負擔也重。編程過程中學生遇到一些常見的bug,結(jié)對伙伴間可以通過相互交流就可以解決的,學生既鍛煉了溝通表達能力又沒有浪費時時,學習效率自然會高。老師的精力就不是幫助學生排除一些常見的bug,而是主要用于指導學生如何改進算法、如何將所學知識做更深入的應(yīng)用等問題上,減輕了老師的負擔。
四是在學生編寫的代碼錯誤率方面。獨自編程從算法設(shè)計、代碼編寫到調(diào)試整個過程都是一人在做決定,由于編程人員知識不牢、考慮問題不周全等因素,往往編寫出來的程序bug會比較多。結(jié)對編程的兩個人在一起寫代碼的時候考慮問題會更加全面,能夠融合兩人的程序設(shè)計思路,更容易設(shè)計出結(jié)構(gòu)更優(yōu)的算法和編寫出執(zhí)行效率更高的程序代碼。同時也會更早地發(fā)現(xiàn)程序中的bug,減少錯誤出現(xiàn)的次數(shù),提高程序的質(zhì)量。結(jié)對編程可以把程序代碼的錯誤率降低15%~50%之多。
為了能夠更清楚地分析結(jié)對編程的實踐教學效果,在此收集了兩個班對應(yīng)的6個問題的編程正確率,并繪制成圖表如圖2所示。從圖2可以看出,采用結(jié)對編程的實驗班的編程正確率明顯高于獨自編程的對照班,而且實驗班的編程正確率保持相對較穩(wěn)定。
3 結(jié)語
在《C語言程序設(shè)計》課程的實踐教學中引入了結(jié)對編程。通過對照實驗,發(fā)現(xiàn)學生編寫程序的能力更高、編寫的程序更健壯、學生的學習積極性更強、學生的溝通和團隊協(xié)作精神表現(xiàn)的更突出。在此,結(jié)對編程時要注意以下幾點:溝通是結(jié)對編程成功的關(guān)鍵,你和你的伙伴應(yīng)該保持溝通;不要侮辱你的搭檔,要尊重對方;不要做一個專橫的領(lǐng)航員;一定要經(jīng)常切換角色;結(jié)對編程也是團隊合作。
參考文獻:
[1]李支成,向華,吳開誠.結(jié)對編程在計算機語言課程混合教學改革中的應(yīng)用[J].電腦知識與技術(shù),2019(8).
[2]徐勝舟,杜小坤.結(jié)對編程在Java Web開發(fā)課程實踐教學中的應(yīng)用[J].現(xiàn)代計算機,2015(05).
[3]黃家瑋,鐘萍,季桂樹.計算機程序設(shè)計課程配對學習模式教學研究[J].計算機教育,2014(12).
[4]魏妮妮,宋翌.結(jié)對編程在程序設(shè)計基礎(chǔ)課程實驗教學中的研究與實踐[J].實驗技術(shù)與管理,2013(12).
基金項目:院級課題“創(chuàng)新結(jié)對編程在高職《C語言程序設(shè)計》課程實踐教學實現(xiàn)”(編號:JXXD-2019-14)的研究成果
作者簡介:鐘文峰(1978—),男,漢族,江西分宜人,碩士,副教授,主要研究方向:高職教育、嵌入式與物聯(lián)網(wǎng)系統(tǒng)的設(shè)計;劉曉璐(1983—),女,漢族,江西安福人,碩士,講師,主要研究方向:高職教育、軟件技術(shù)。