摘要:針對在網絡編程實踐課程中存在的學生動手能力差距較大的問題,論述筆者以授課實踐為基礎,在課程的組織上結合精選推薦選題和自行選題兩種方式,力求兼顧兩類學生的需求和特點。從課程完成的情況看,取得了一定的效果,對相應的課程建設也有一定的借鑒作用。
關鍵詞:網絡編程;實踐教學;網絡工程專業
計算機網絡是現代發展最為迅速的技術領域,特別是近年來,網絡上的新應用和新技術不斷涌現,而現代工作與生活對網絡的依賴也越來越大,各種計算機軟件的開發及使用也主要集中在網絡平臺上。因此,無論是網絡工程專業還是計算機專業的高校畢業生都應具有較強的網絡編程能力,否則無法滿足當今社會的需求。而網絡編程能力的提高主要依賴課堂教學和課程實踐,其中課程實踐占有更重要的位置,我院的“網絡編程課程設計”就是集課堂教學和實踐為一體的網絡編程綜合課程設計。
通過網絡編程綜合課程設計的學習,特別是由自己完成一款網絡軟件的設計、開發和部署的全過程,使學生掌握基于網絡平臺的軟件開發技術,了解相應的網絡通信原理和實現機制,是學生學習網絡編程最有效的方式。同時也可以充分培養學生的自主學習能力、協作精神和創新能力,課程設計環節是網絡專業高校學生能力培養非常重要的環節。
1課程概述
“網絡編程課程設計”在本科第3學年秋季學期開設,網絡工程專業必修,計算機專業選修。前導課程包括:計算機程序設計、計算機網絡、數據庫原理。總學時32學時,其中課堂教學16學時,上機實驗16學時。教學內容并不固定,需要根據當前的網絡應用及網絡技術的發展不斷更新。目前教學的主要內容包括:
互聯網及網絡應用的發展和現狀、當前各種主流網絡開發模式和開發技術。重點講解B/S和C/S模型,簡要介紹網絡計算及分布式開發技術(J2EE、CORBA、Web Service、ActiveX組件技術、P2P計算、網格計算等)和移動計算技術等。
各主流平臺上TCP/IP通信的編程實現方法,重點介紹基于socket的網絡軟件開發。
Web編程:介紹WWW、HTML、CSS、HTTP協議、客戶端和服務端語言。
B/S應用的服務端語言學習,重點學習ASP編程(也可選擇PHP),簡要介紹JSP編程。
網絡數據庫的訪問方法。
由于課堂教學僅有16個學時,因此不能將上述教學內容全部充分展開講授,特別是其中有很多難點,系統學習需要大量的時間,課程僅僅能夠對其工作原理進行簡單的介紹。同時,課程教學的目的并不是讓學生全面掌握這些知識,其主要作用是引導和幫助學生在課程的實踐部分中合理選擇題目和快速進入狀態。
在課程實踐部分,由學生選擇題目,并通過分組編程實現(一般3人左右為一組),最終需交出可實際運行的軟件作為課程成績評價的依據。課程實踐部分的目的是使得同學們熟練掌握有關網絡程序設計的基本方法,了解網絡應用軟件的基本框架、體驗網絡軟件設計與開發的主要過程,獲得較強的基于網絡環境進行編程的能力,同時培養同學們的自學能力、創新精神和團隊協作能力。
雖然課程安排了16個學時的上機實驗,不過一個適當的課程設計每個學生實際需要50至100個小時的編程開發時間,同時還需要查閱和自學大量的資料,16個學時的上機實驗僅僅是為老師幫助和指導學生選題和選擇熟悉開發環境等初步工作提供一個合適的場所,其主要工作還是依靠課下完成。課程的考核安排在課程開設的下一個學期進行,保證學生有較充足的時間完成實踐內容。
2課程組織
如何更好地安排網絡編程綜合課程設計,合理地設置課程目標,充分準備學習資料和相關資源,引導學生快速上手,建立方便快捷的交流平臺,使得在有限的課程時間內達到充分的鍛煉效果,這些都是本課程的重要研究內容。隨著計算機網絡技術的不斷發展,網絡軟件的工作模式和開發手段也在迅速變化發展,如何緊跟這發展的步伐,在課程中不斷更新和優化課程的內容和結構,以適應最新的應用需求和開發技術,這也是本課程的教學研究中應予以重點關注的內容。
然而,目前在我院的“網絡編程課程設計”中需要面對的一個新的重要問題則是學生能力的兩極分化日益嚴重,如果還按照傳統的教學和組織方式,只能保證普通學生得到基本的鍛煉,而無法讓已經具備了較強編程能力的學生進一步得到提高。幾年前,學生能力的差異化問題還不突出,能力突出者的比例大概只占10%左右,占絕大多數的普通學生,除了在計算機程序設計課程上編寫過簡單的程序外,很少會動手編程,動手能力普遍較差。為了照顧占據絕大多數學生的水平,在以往的網絡編程課程設計的課程組織中[1],老師往往會精選幾個題目,提供這些題目的較詳細的需求分析文檔、需要完成功能的完整說明、相應的開發工具和學習資料,同時還提供一些相關的源碼供學生學習和參考,以幫助學生快速上手。在老師這一系列措施作用下,學生可以得到較為系統和規范的鍛煉,這樣也減少了學生在選題和編程初始階段的困惑,節省了學生的時間和精力。從以往的經驗看,效果也很不錯。
然而,隨著學校越來越注重在低年級對學生的能力進行重點培養,包括為低年級的優秀學生配指導老師,積極組織和開展各種競賽和活動,同時其他課程的老師也經常組織優秀學生參加課外學習小組,進行更多的課外研究和實踐活動,這些都極大的促進了學生的學習熱情,使得有相當多的同學進入大三時已經積累了較多的編程和實踐經驗,同時形成了各自的興趣方向和特長。現在這部分學生所占比例已經達到30%左右,并呈現逐年遞增的趨勢,而且,他們與普通的學生們在編程能力上差距也日趨擴大,這些變化為本課程的教學和組織提出了新的挑戰。
在這樣的情況下,繼續采用原有的課程組織方式,明顯不適合這部分較優秀的學生。他們實際上已經達到了本課程希望達到的培養目標,具有了相應的編程能力,如果按照以往的安排,顯然不能調動這些學生的學習積極性,這些學生多半會簡單應付了事,導致他們無法在本課程得到進一步的學習提高。
為了應對這個問題,我們需要在課程的組織上充分考慮到學生基礎的差異,即要能夠保證普通學生得到系統的訓練,也要使優秀學生能夠一展所長,在完成課程實踐后網絡編程的能力能夠又上一個臺階。因此,如何引導這部分優秀學生挑戰更難、更新穎、自己更有興趣的選題,并提供技術支持和指導,是一項艱巨但是具有重要意義的研究課題。
針對這種變化,我們改變了課程內容的組織模式。具體的方式包括以下幾點:
1) 繼續提供精選題目及相關資料。在最近的課程中我們共提供了10個較為常見的、工作量和難度適中、緊扣網絡編程主題的實踐題目。
網絡聊天程序(需支持群聊)
網絡白板軟件
某些協議和服務(如FTP、Telnet,NFS等)的客戶端
Web搜索引擎
網絡五子棋或其他簡單規則的游戲
網絡桌面軟件(能夠獲取和綜合若干固定的網絡服務)
網絡機器人(網絡爬蟲)
能夠下載整個網站的離線瀏覽器
基于網絡的MIS系統(提供樣例為“公安筆錄管理系統”)
某電子商務網站(提供樣例為“網上書店”)
2) 提倡學生自選題目。鼓勵學生自選實踐題目,特別提倡選擇新穎的、采用新技術、新方法的題目,并承諾選擇了這樣的題目,完成即可獲得高分。即使最終沒有全部實現題目要求,也會根據實際的進展和學生對技術的掌握情況打分,消除學生對難度大的題目選擇的后顧之憂。這樣選題的方式是為了給動手能力強、有創新意識的學生展現自己能力的機會。同時鼓勵學生一人一組,使學生得到全面的鍛煉。
3) 組織學生交流研討。在課堂教學內容完成后,實踐部分開始前,組織學生在課堂上講解選擇的題目,包括需要完成的功能,大體的設計方案,技術難點,尚不能確定的解決方法等。老師負責點評題目的難易程度、工作量,并提供一些在解決方案和技術上的建議和意見,學生也可以充分參與,發表自己的看法。
4) 建立網上答疑平臺。與限定題目的方法相比,鼓勵學生自選題目的做法導致實踐的題目五花八門,做什么的都有。涉及的技術領域、所選用的開發環境和工具也各不相同。這大幅度增加了老師和教輔的輔導難度,我們常常無法現場回答學生提出的問題。為此我們建立了一個QQ群,用于老師和教輔在課堂教學之外對學生進行指導,討論技術問題,共享收集的技術資料等,事實證明作用明顯。
3考核方法
課程考核是通過考核檢查評判學生的學習效果,達到督促學生學習知識的目的。科學的評分也是對學生學習熱情的一種鼓勵,但學生獲取高分不是教學的最終目的,教學的最終目標還是提高學生的網絡編程能力。我們通過對學生的系統設計能力、實踐動手能力、創新能力和綜合總結能力的綜合評價,使成績能比較合理地全面反映學生的實際能力。
我們的考核依據包括兩個部分:一是學生提交的文檔占30%;二是軟件的功能、難度及完成情況占70%。同時,對于選題新穎、完成技術難度大及一人一組這三種情況還會予以相應的加分獎勵。
其中文檔部分包括:
1) 實驗報告。包括實驗題目、實驗內容、小組分工及完成情況、實驗遇到的問題、實驗收獲和感想等。
2) 需求分析文檔。
3) 概要設計和詳細設計文檔。
4) 數據庫設計文檔(如果包括數據庫的使用)。
5) 測試文檔。
6) 用戶使用手冊。
7) 系統源程序。
這部分成績主要根據文檔的完成質量評分,包括文檔的完整性和規范性、系統結構和數據庫設計的合理性、源代碼的規范性等。為了讓學生較好的完成這些文檔,我們提供了標準的模板和多份完整的例子供學生參考。
對完成的軟件進行綜合評判是課程考核的主體部分,我們的要求是小組的所有成員必須承擔足夠的編程工作,考核的主要依據是學生在網絡平臺上的編程能力。為此,老師和教輔(教輔均為編程經驗非常豐富的博士生)組成的考核小組對每個學生的工作都進行了詳細的考量:首先,由組長在計算機上介紹和演示完成的軟件的各項功能,然后小組的每個成員介紹其在該軟件中完成的具體工作,并找出相應的程序代碼,由評分小組針對其完成的部分提出關于系統架構、技術路線、程序代碼和實踐感想等的各類問題。為了防止少數學生未進行相應的編程工作卻妄圖蒙混過關,我們還會要求部分學生現場對軟件的功能或運行邏輯進行簡單修改,以考察其實際的編程能力。最終評分主要根據其工作的難易程度、軟件功能的合理性、新技術新方法的采用程度、開發工作量、界面的美觀和友好程度進行評定;最后對于題目新穎、技術難度大的和一人一組的會根據情況給予加分獎勵。
考核結束后,有部分學生因工作難度低,工作量較少而未能達到及格標準,我們本著教學目標為培養和鍛煉學生能力宗旨,給予這些學生10天的時間來進一步完善和提高其工作,再組織第二輪評測,對于達到標準的給予及格成績。
4教學效果
在2009年秋季學期的“網絡編程課程設計”中,全部119名學生全都選修了本課程,其中網絡工程專業48人,其他專業71人。學生自行分成了43個組。從完成情況看,其中選擇給定題目的占多數,達到28個組,主要集中在聊天軟件、白板軟件、網絡五子棋對弈和網站的開發上,而其他15個組學生為自選題目。
考核成績呈現出較明顯的兩級分化現象。部分學生完成得非常好,選題新穎,工作難度大,完成情況也非常令人滿意。部分學生明顯敷衍了事,工作量小、難度低。極個別學生還妄圖抄襲他人代碼蒙混過關。最終的成績是:選修本課程的119人中,第一輪評測中20人成績不合格,25人成績優秀(90以上),其中7人給了100分。在成績不合格的20個學生中,有7人為網絡工程專業,他們經過10天的努力,在第二輪評測中成績達到合格;其余13人為其他專業學生,他們未做進一步的努力,最終成績為不合格。
完成情況優秀的工作包括:基于某特定手機平臺開發了紙牌拱豬游戲;基于目前非常流行的大型網游開發了游戲插件,可以幫助玩家自行調用和組合相應的必殺技幫助打Boss;開發的網絡版三國殺紙牌游戲,邏輯非常復雜,其界面也非常美觀;在計算機同時連接多個網絡時,可以自動啟動的支持并行網絡傳輸的文件下載軟件;針對國外某著名大學的題庫網站開發的爬蟲程序,能自動獲取和更新題庫的內容;能夠自行收集多個網站的固定欄目,集新聞、天氣、股市指數等為一體的網絡桌面軟件;針對多個郵箱開發統一的郵件提醒軟件等。還有學生開發使用手機通過接入Internet進行語言聊天的軟件,雖然最終沒有成功,但是創意非常棒,且完成了相當的工作內容;這些工作有創意、有難度,且都有非常強的實際應用價值,對完成這樣工作的學生,我們基本上都給了接近100分的高分。這些優秀的作品讓我們也看到了,讓學生自選題目以及我們給予的鼓勵和幫助非常好地激發了部分優秀學生的學習熱情,這些學生確實利用這次課程實踐的機會進一步提升了編程能力。
從選題和成績的分布上看,網絡工程專業學生選擇給定題目偏多,自選題目的學生絕大部分集中在其他專業上。網絡工程專業的學生成績集中在中等,而高分和低分更多地分布在其他專業。這表明,學生對待必修課有壓力,選擇相對保守,致力于確保通過;而對待選修課則心態比較輕松,可以選擇自己更感興趣的題目,把興趣愛好和完成課程學習結合起來,在興趣的激勵下有的人可以做的很努力,結果也很好,不過也有人遇到挫折后由于缺少指導導致完成狀況不佳。另外,自選題目主要集中在游戲上,而手機平臺的軟件開發也是新的熱點,我們老師在這個方面的能力往往比較欠缺,應予以加強。最后,成績最差的一些學生往往是在初始階段不得要領,到了最后時刻才開始突擊工作,導致工作量和工作難度嚴重偏低,這也要求我們要進一步加大初期的輔導力度,同時建立跟蹤檢查機制,以避免學生掉隊。
5結語
根據“網絡編程課程設計”課程的完成情況,我們認為還可以有針對性地做進一步努力,讓課程的效果更上一個臺階。具體措施如下:
1) 根據上一年課程中學生的自選題目,對其中難度較大、但學生普遍較感興趣網絡應用,如網絡游戲、手機軟件開發等提供全面的支持,包括有關的學習資料、開發工具、典型案例和相關代碼等。
2) 每年選定1~2個網絡開發的新技術進行調研,做到全面了解,收集整理相關資源,并能用開發工具進行軟件開發。
3) 在學校的教學平臺上建立網絡課程,由老師和學生在這個平臺上共享資源,并進行交流。QQ群可以繼續使用,但是有很多學生較少有機會使用國際互聯網,可以利用往年由學生開發的局域網聊天軟件,在校內網絡中使用,使得交流更加快捷方便。
4) 建立一定的跟蹤和監督機制,定期檢查小組的工作進展和遇到的問題,防止某些小組長時間處于停滯狀態,不得不最后時刻突擊完成,而質量達不到課程要求。
總的來說,由于目前學校各個方面都更加注重學生實踐能力的早期培養,使得越來越多的學生能夠脫穎而出,具備了較強的創新意識和工程實踐能力。因此,在一些課程的組織過程中,需要針對這些變化,更合理的安排課程的任務和組織方式,讓這部分學生在課程中也能夠得到更好的學習和鍛煉。因此,我們在“網絡程序課程設計”這門課程上,針對該情況對課程組織進行了一些探索,目前看取得了一定的效果,而且還有進一步完善和提高的可能,希望能夠對本課程的建設提供一定的借鑒作用。
參考文獻:
[1]