底曉強,李錦青
(長春理工大學計算機科學技術學院,長春 130022)
計算機學科是一門新興的學科,僅有幾十年的歷史,但由于其發展異常迅速,因此高校本科教學計算機學科教學內容的更新之快,是其他學科所不及的[1-2]。計算機學科是一門對科學性和實踐性要求都較高的學科,它不僅注重學生理論基礎的培養,更注重學生實踐能力的培養[3]。實驗教學可以激發學生的學習興趣,培養學生發現問題和解決問題的能力,提高學生的實踐能力和創新能力[4-5]。因此,在計算機學科的教育中,實驗教學效果直接關系著學生對知識的掌握和理解。
《網絡程序設計》的教學大綱在實驗教學環節的目標是培養學生網絡程序的設計和編碼能力,加深對課堂教學內容的理解,提高學生對《面向對象程序設計》《數據結構》《操作系統》《計算機網絡》《數據庫原理》和《軟件工程》等前導課所學知識在網絡程序設計方面的綜合應用能力。
在現有的實驗教學環節中,實驗題目分為演示、驗證、設計和綜合這4種類型。學生們已經有了程序設計語言的經驗,結合《網絡程序設計》這門課的特點,不宜安排演示和驗證性的題目,否則學生會覺得和程序設計時的課程實驗沒有什么區別。學生的實驗課程比較集中,而且每次實驗只有兩個學時,如果每次安排一個設計或者綜合性實驗題目,學生沒有精力去完成。如果安排一個需要幾次課程完成的設計和綜合性題目,一部分學生又會覺得偏難,無從下手,還會有一部分同學,可能因前兩次實驗效果不好而無法完成后續的實驗。長此以往,會讓學生對實驗課程產生畏懼情緒,失去興趣。因此,必須打破傳統的實驗模式,制定更加務實的實驗題目,模糊演示、驗證、設計和綜合這四種實驗題目類型的邊界,在本文中我們稱之為系列化實驗題目。
根據前面的分析,系列化實驗題目應具備如下特點:
(1)各個實驗題目是獨立的,后一次實驗不依賴于前一次實驗的結果;
(2)題目容易理解與實現,每一次實驗可以讓學生在2個學時內完成;
(3)結合課程教學內容,學生需要綜合應用前導課所學知識才能完成實驗題目;
(4)在系列化實驗進行過程中,能激發學生對相關課程領域知識的應用和思考;
(5)學生完成系列化實驗題目后,能實現課程實驗教學的目標。
為了達到實驗教學目標,首先要設計出符合系列化實驗特點的實驗題目。我們的實驗題目為模擬一臺ATM自動提款機。讓學生實現:用戶登錄、存款、取款、轉賬和查看交易記錄等功能。程序架構分為界面層、通信層和數據存儲層。
大多數學生都使用過銀行的ATM自動提款機,因此題目要求易于理解。為了體現系列化題目的特點,每次實驗的功能要求是完全相同的,但是每次實驗要求的界面層、通信層和數據層是不同的。下面詳細說明界面層、通信層和數據層的類型。
用戶界面層分為字符界面、AWT圖形界面和瀏覽器界面3種類型;通信層有單機通信、套接字通信和HTTP通信方法;數據層有內存、數據庫、文本文件和XML文件4種存儲介質。從這3層中選擇不同的類型,可以組合出48個實驗題目。
不同的通信方法和數據存儲介質的組合,所要運用的前導課程的知識點是不同的,如表1列出了實現不同的通信層和存儲層所需的前導課程知識。為了讓學生更好地領會《面向對象程序設計》和《軟件工程》這兩門課程在實驗中的作用,進一步強化學生面向對象的設計思想和軟件工程意識,我們要求在完成所有的實驗后,學生只需要修改配置文件,就可以實現每次實驗的界面層、數據層和通信層的無縫切換。例如,能夠將ATM自動存款機的字符界面更換成瀏覽器界面,也能將通信層的套接字通信方法切換成瀏覽器通信方法。同樣,系統也要能在不同的存儲方式之間實現快速切換。

表1實驗題目所涉及的前導課程
學生在開始的幾次實驗中,并不要求他們能實現無縫切換的目標,他們可以逐漸達到這個目標。隨著學生參加實驗次數的增多,會逐漸重構已經完成的代碼,逐步利用面向對象的思想設計ATM自動提款機,而這個過程恰恰就是一個完整的軟件生命周期。完成各個系列化實驗題目,不僅需要掌握《網絡程序設計》課程本身的知識,還需要應用不同于前導課程所學的理論和方法,其中面向對象設計和軟件工程思想貫穿所有的系列化實驗題目,從而潛移默化提高了學生的面向對象設計能力和增進了對軟件工程思想的理解。
為了更好地達到系列化實驗的教學目標,我們還對學生參加實驗的方式進行了改革,學生采用“結對編程”完成實驗。與傳統的編程方式不同,新的編程方式是兩個學生合用一部計算機來完成代碼。“結對編程”的價值在于,在某個人思考時,另一個人就開始編碼。如果編碼的人陷入困境,兩個人可以交換位置。如果兩個人都陷入了困境,可以求助其他同學或者老師,結對工作可以讓實驗更順利地進行。更重要的是,它使得編程工作更具有互動性,可以激發學生們的學習興趣。
小組成員在共同的協作中還可以培養團隊協作精神,沒有和諧的團隊不可能順利完成任務。在實際的實驗過程中我們發現:實驗開始階段,因為分工并不明確,小組成員的合作并不順利。隨著不斷的磨合以及明確的分工,小組成員間的合作逐漸默契,交流更加順暢,實驗的效率不斷提高。
一般來說,學生對課堂教學中教師的演示和驗證只是被動地加以接受。想讓學生真正明白教師所講和所演示的,最好的方法是讓學生在實踐中去感受和運用所學到的知識,這樣才能將被動的接受轉化為主動的吸收。系列化實驗題目,能讓學生在實驗環節真正做到理論知識和實踐技能的融合,提高學生的綜合應用能力。
當各個小組完成了系列化的所有實驗后,我們安排了一次實驗總結答辯,而不是傳統的實驗報告。傳統的實驗報告并不能真實地反映學生的實驗水平,而以答辯的方式可以使教師更直觀準確地了解實驗效果,掌握學生對知識的掌握程度。答辯不僅可以督促學生總結實驗結果和經驗教訓,同時也為學生提供了一個互相學習和互相交流的平臺,是對分組協作的一種補充,是培養學生討論機制的一種延伸。同時,以答辯作為實驗的總結對學生來講也是一種鍛煉和挑戰,更是對學生能力的一種提高。
在實際的實驗教學中我們發現,由于缺少經驗和知識面狹窄等原因,一部分學生考慮問題不全面,如果這個時候教師不適時介入,會導致實驗不能到達預期目標。因此,教師適時以指導者的身份在實驗中出現十分重要。同時,教師在實驗的過程中還可以向學生傳授一些先進的編程和設計思想,這對開闊學生思路和培養學生的科學素養十分有利。在實驗的最后階段,教師還是學生答辯的組織者和評審者,這對教師也提出了更高的要求。
[1] 李樹平,趙杰.基于任務驅動的探究性計算機實驗教學模式[J].職教論壇,2010(6):53-55.
[2] 陳克明,王春平.計算機實驗教學改革探討一得[J].中國成人教育,2011(2):153-154.
[3] 呂志峰,李曉峰.淺談我院計算機專業畢業設計的改革[J].科技創新導報,2009(29):217.
[4] 田燕,李貞雙,張新剛,等.計算機實驗教學改革探索與實踐[J].長沙大學學報,2012(2):125-127.
[5] 呂紅,任穎,李華偉,等.計算機實驗教學改革的思考[J].中國現代教育裝備,2009(11):87 -89.