徐長梅 閻 巍
摘要:大學計算機專業教育需要著重培養學生的協同工作能力、人際交往能力,但是通常的教學方法與這個目標之間存在一定的差距。我們將軟件開發實踐中“結對編程”方法應用到計算機專業課程的實驗組織過程中,通過學生之間輪換式的“一對一”交流,培養學生的團隊精神,達到了良好的教學效果,提高了學生的學習興趣。本文介紹了這種教學方法。
關鍵詞:結對實驗;實驗組織方法;相互學習
中圖分類號:G642 文獻標識碼:B
1引言
計算機科學是一門注重實踐能力的學科。在《中國計算機科學與技術學科教程2002》對畢業生特征的能力與技能要求中,明確指出實踐能力和技能是計算機科學與技術專業學生的必備能力和技能。在隨之而來的我國大學計算機專業課程設置和課程標準改革中,對學生實踐能力的培養進一步增強,對學生的計算機研究和應用技能進行了系統的設計。
計算機專業培養方案的頂層設計已經比較合理和可行,但是課程實驗的實施方法依然存在著很多的問題。
首先,計算機專業課程實驗(實踐課程)的現有模式影響了學生的學習效率。隨著高校辦學能力的提高和招生規模的擴大,學校的機房一般可以容納100~200名學生,但是輔導教師的配備一般不會超過5名,1∶20(甚至1∶40)的比例顯然無法滿足教學實踐中個別輔導的要求。學生從發現問題到解決問題的時間太長,會影響部分學生的積極性,甚至降低學生專業學習的興趣。
其次,大多數課程(實驗)注重學生技術、技能的培養,但是不注重學生協作能力的培養。在計算機系統大型化發展中,計算機系統的設計和開發不再單純依靠個人的單兵作戰能力,更多地注重團隊的整體能力,其中團隊成員之間協作能力是一個重要的成分。
雖然“軟件工程”一類的課程專門安排了大型實驗,著重培養學生的團隊精神,但是由于在團隊組織上存在必要的實踐經驗和管理指導,團隊中人員職責不清,人員之間的時間協調存在困難,最后的實驗結果往往是團隊中能力最強的同學完成了絕大部分的工作,這不是實驗的預期目的。
在《中國計算機科學與技術學科教程2002》中對專業實踐進行了專門的討論,學生口頭和書面交流能力、協同
工作能力、人際交往能力分別排在社會能力需求的前4位,目前課程實踐教學活動的一般方法往往不能達到社會需求。
為了解決這些問題,我們將軟件開發中的結對編程技術引入到課程實驗中,既可以更好地完成課程實驗內容,也讓學生掌握了一種計算機系統設計的實踐技術,同時也培養了蘊含在計算機科學領域內的科學素養和工程技能。
2結對編程
結對編程是一種軟件開發實踐,在結對編程場景中,兩名程序員并肩工作在同一臺計算機前,共同探討設計方案、共同設計算法、共同編寫程序代碼、共同完成各種測試。在結對的兩人之中,負責編寫程序的稱為“駕駛員”,另一方則稱為“領航員”。“領航員”的主要任務是觀察“駕駛員”的工作情況,發現并糾正其操作性和策略性錯誤。
“駕駛員”和“領航員”分別使用兩個不同的鍵盤和鼠標,但是共享同一個主機和屏幕較大的顯示器,大多數情況下都有“駕駛員”使用鍵盤和鼠標,而只有在“領航員”發現問題或者“駕駛員”提出問題,“駕駛員”主動放棄鍵盤鼠標“主控權”的情況下,“領航員”使用幾個簡單的鍵盤和鼠標動作,啟示或者演示程序設計中的重要方法和步驟。
“駕駛員”和“領航員”是結對編程中兩個關鍵的人物,但是程序員在一次結對編程中需要經常交換“駕駛員”和“領航員”角色。也就是說,某個程序員在頭一個小時內是“駕駛員”,而在下一個小時中應該是“領航員”。而且在團隊內部,“駕駛員”和“領航員”的配對并不固定,一個程序員在軟件開發周期中可能與團隊其他所有的程序員都有過配對的經歷。
這樣的軟件開發模式可以降低團隊的培訓成本,提高開發效率和軟件質量,增強團隊的凝聚力和信心。
3結對實驗
結對編程技術來源于工程實踐,項目的開發和大學教學存在著工作目的、工作環境、人員構成等方面的差異,我們針對教學工作中學生和教師的特殊對象,特別就“數據庫系統原理”和“大型數據庫應用開發”課程采用了結對實驗的方法。
在課程實驗的初期,結對是很困難的。一方面,學生之間的了解不是很深,潛在的防范意識會讓學生自然地選擇熟悉的朋友作為搭檔;另一方面,學生之間能力和知識上存在一定的差距,成績差的同學不愿與成績好的同學搭檔,害怕暴露自己的缺陷;而成績好的同學也不愿意與成績差的同學聯盟,擔心他們會影響實驗的進度和質量。這些現象都是正常的,我們在課程實驗開始的時候,讓學生自由組對,而且成對完成課程的最初1~2個實驗。我們稱之為固定搭檔,它的目的是消除學生對結對的憂慮,增強同學之間交流的信心,提高學生之間結對實踐的能力。
經過這樣的適應期后,我們特意打亂學生結對的次序,一般采取交叉結對的方式,比如按照10個人為一段,學號為1的與學號為11的結對,學號2的學生與學號12的學生結對,如果剛好某一對是之前的搭檔,則進行微調。我們以一個實驗為周期,完成一個實驗后,加大交叉的力度,試圖讓學生在課程中盡量經歷不同的搭檔。我們將這個階段稱為輪流搭檔。
結對實驗也遵循結對編程的一般原則。一個實驗過程中,不是一個人唱主角,另一個跑龍套,固定的結對方式對搭檔雙方都不利。我們將一次上機時間分為四段,一個時間段甲同學坐在鍵盤前,下一個時間段就輪到乙同學坐到鍵盤前操作。這樣的安排可以使得每個同學擔當不同角色的時間盡量相同,他們在實驗中擔當同樣的責任。
對于“大型數據庫應用開發”課程的大型實驗,輪流搭檔的方式不利于實驗的連續性,分組既是實驗內容的需要,同時也是結對實驗的需要。特別是在“大型數據庫應用開發”課程完成了結對實驗的實驗之后,我們在同一班級的“大型數據庫應用開發”課程中開始實施相對穩定的結對實驗小組,小組在機房的座位安排一般都集中在一個范圍較小的區域,小組人員結對的數量盡量是偶數,便于在機房中可以面對面、相鄰而坐。分組結對便于小組人員在實驗中的交流,同時相對減少大范圍討論對其他小組的干擾。
教師在課程實驗中承擔的責任非常重要。教師首先是一名好的“教練”,除了介紹實驗技能和工具之外,在“駕駛員”和“領航員”都束手無策的時候,幫助解決學生的疑難問題。教師還應該是一名“協調員”,兩名喜歡抬杠、或者談話漫無邊際、或者沉默寡言的學生都不是好的搭檔,教師應該及時發現問題和調整學生對子,幫助學生按時、按量、按質完成任務。教師有時還必須擔當“領航員”的角色,如果班級學生的數目是奇數、或者有的學生堅持不愿結對的時候,教師應該適當充當他們的”領航員”,甚至是“駕駛員”。
4教學效果及其分析
結對實驗有效減輕了學生的負擔。“駕駛員”在“領航員”的注視下,無形中就會更加集中注意力,實驗的效率得到了提高。而且在“領航員”的提醒和幫助下,“駕駛員”可以減少很多不必要的錯誤,可以共同糾正不良的編碼習慣,共同的調試也可緩解單獨調試的緊張和憂慮。
結對實驗是一個相互學習的過程,“駕駛員”和“領航員”的相互配合可以相互學習編程經驗和調試方法。“領航員”的觀察可以學到“駕駛員”的許多經驗,即使是“領航員”的能力高于“駕駛員”,在解決“駕駛員”產生的莫名其妙錯誤的時候,“領航員”也可以積累新的調試經驗。“駕駛員”能力高于“領航員”的時候,“領航員”的一些提問也可以引起“駕駛員”的反思,可以促進實驗質量的提高。
結對實驗中“領航員”和“駕駛員”的隨時交談無形中鍛煉了學生的交流能力,“駕駛員”和“領航員”的交叉配對鍛煉了學生適應不同對象的人際交往能力。相互幫助和配合無疑加深了學生之間的相互了解,學生之間不再只是“一張熟悉的面孔”。相互了解可以使同學們之間的關系更加融洽,在學習中的協作關系減少了同學之間的矛盾,也提高了他們緩和矛盾的社交能力。
結對實驗增強了學生的學習信心,提高了學生學習和實驗的積極性。學生在交流和相互學習中更加善于提出問題和尋求幫助。
作為另一個收獲,結對實驗減少了實驗作弊情況。實驗作弊的直接原因是無法完成實驗或者不感興趣,而結對實驗降低了實驗失敗的可能性,也提高了學生對專業知識的學習興趣。
5結論
結對實驗是一個相互配合的活動,它實際上不是一個新鮮的實驗教學方法(在物理和化學實驗中已經進行過長期的實踐,產生了良好的教學效果),我們僅僅是將計算機工程實踐和其他課程的實驗教學方法在計算機課程中進行了嘗試。
結對實驗的嘗試改變了計算機實驗教學的一貫模式,充分發揮學生的自主能動性,降低了課程實驗對輔導教師配備數量上的要求,提高了學生的實踐能力和合作交流能力。
為了更好地增強教學效果,結對實驗對機房環境和教師能力提出了其他方面的要求。比如加大顯示器的尺寸、增加實驗桌面的寬度,以便于結對雙方的合作。教師不再僅僅關注學生是否順利地解決實驗中的問題,而且需要觀察結對的交流情況,及時采取措施平衡結對的氣氛。
參考文獻:
[1] 中國計算機科學與技術學科教程2002研究組. 中國計算機科學與技術學科教程2002[R]. 北京:清華大學出版社,2002.
[2] Laurie Williams & Robert Kessler. 結對編程技術[M]. 楊濤,楊曉云,譯. 北京:機械工業出版社,2004.