摘要:根據當前計算機網絡實驗教學中存在的問題,結合我院專業(yè)特點,對實驗方法的選擇進行探討,介紹采用層次漸進法設計實驗題目的優(yōu)點。以一個網絡應用程序設計題目為例,對如何采用層次漸進法設計實驗題目進行詳細說明,并分析了教學效果。
關鍵詞:計算機網絡;實驗;層次漸進法;網絡應用編程
作者簡介:高屹,男,副教授,研究方向為計算機應用技術;王琦,女,講師,研究方向為計算機應用技術。
21世紀是網絡信息時代,計算機網絡的應用無處不在,越來越多的高校開設計算機網絡課程。從研究生到高職高專的各個層次,從計算機網絡工程專業(yè)到某些文科專業(yè),越來越多的學生需要應用網絡技能面對職業(yè)甚至生活基本技能的挑戰(zhàn),或就業(yè)于相關領域[1]。另一方面,計算機網絡是公認比較難學的一門課程,涉及知識內容豐富,技術發(fā)展日新月異,由于就業(yè)方向及培養(yǎng)目標的不同,不同專業(yè)在教學內容和教學方法的選擇上差異巨大。
絕大多數計算機網絡課程都分為理論教學和實驗教學兩個部分。對于理論教學的方法,各院校都非常重視,很多專家教師結合各自的專業(yè)特點,進行了多方有益的探索,形成了多種比較成熟的教學方法,教學效果也得到了充分保證。針對理論教學內容的探索越來越深入,教學內容已經很好地細分,能夠充分適應就業(yè)需求。在教材建設方面,以幾大經典系列教材為代表[2-3],優(yōu)秀教材層出不窮。與此相對應,計算機網絡的實驗教學還比較薄弱。
計算機網絡是一門實踐性很強的課程,缺少或者弱化實踐環(huán)節(jié),整體上很難達到教學效果,這一點已成為共識。與理論教學相比,對實驗教學內容及方法的探索起步較晚,還存在一些不同認識,優(yōu)秀實驗教材[4]的數量也要少得多。
1對計算機網絡實驗教學的探索
計算機網絡是一門工程應用特征非常明顯的課
程。在進行課程改革時,工科院校應該以提高學生工程應用能力為目的,以市場為導向,形成一個較為完整、系統(tǒng)的實驗教學體系[5]。既要保證通過實踐驗證所學的計算機網絡基本理論,又要結合當前計算機網絡的最新技術培養(yǎng)學生的綜合素質和創(chuàng)新實踐能力。
實驗教學在實施上以學生的自主操作為主,但同樣需要系統(tǒng)的管理與專業(yè)的指導。實驗教學不是簡單的布置題目,教學效果也不能完全依賴學生的發(fā)揮。
1.1存在的問題
1) 缺乏權威性實驗教材。
一本好的教材對實驗教學至關重要。除了豐富的實驗選題外,還應該提供完整的技術思路、系統(tǒng)的方法指導和全面的背景知識。但不得不承認,目前權威的實驗教材還比較缺乏,教師在教學活動中可參考借鑒的內容相對有限且不系統(tǒng),造成教學效果基本依賴教師個體的水平和責任心,教學質量難以保證。
2) 對實驗教學不夠重視。
一直以來,教師往往更注重計算機網絡理論教學而輕視了實驗教學。由于缺乏教學經驗的傳承和積累,教師囿于實驗室而缺乏對學生就業(yè)的預見性,加之缺乏權威教材的指導,開設的實驗只是對網絡操作系統(tǒng)簡單應用的驗證性實驗,實驗內容隨意性比較大,針對性較弱,不能滿足學生的就業(yè)需求。學生缺
少通過實踐進行檢驗和加深對理論知識理解的機會,使學生對學習感到抽象和空洞,難以理解和掌握,教學效果不佳。
3) 實驗內容取舍不當。
計算機網絡包含的內容極其豐富,從教師的角度看,哪部分內容都很重要,都不想放棄。但內容的過分求全往往會造成學生在做每個實驗時都蜻蜓點水,最終難以深入。要想充分利用有限的實驗課時,實驗內容必須取舍,那種希望通過一門課程的學習,使學生既搞清復雜的網絡原理,又學會網絡編程,同時還訓練各種網絡應用技能的愿望是不切實際的。
從實驗的功能來看,計算機網絡實驗一般可分為三種類型:第一類是原理驗證型實驗,第二類是實踐應用型實驗,第三類是探索研究型實驗[1]。在安排實驗內容時,部分院校存在原理驗證型實驗比重偏大的問題。作為重點工科院校,借助于各類仿真軟件和協(xié)議分析軟件,絕大部分計算機網絡的基本原理可以在理論教學中講解演示清楚,不必再花費大量實驗課時進行驗證。所以,我們認為重點應放在實踐應用型實驗上,達到鞏固所學內容并延伸思考的目的,利于學生學以致用及創(chuàng)新能力的培養(yǎng)。探索研究型實驗的開設對象應該是那些學有余力且特別具有開拓鉆研精神的學生,此類實驗不應占用過多的統(tǒng)一實驗課時,而是以開放性實驗或學院資助參賽項目的形式實施。
4) 學生體會難以深入。
實驗教學是理論教學的延伸,學生不能僅滿足于學會或完成,必須要對所做實驗有深刻體會。因此實驗難度的安排和教師的引導至關重要。每個題目的難度要能夠激發(fā)學生的主動思考,輔以教師的恰當引導,喚發(fā)學生對現有知識理解基礎之上的深刻個人體會,并進一步喚醒學生的創(chuàng)新意識。
培養(yǎng)學生解決問題的創(chuàng)新能力是重要的教學目標,它離不開解放思想和獨立思考。實驗課程必須給學生提供獨立思考的機會,兼顧軍校的嚴格管理和鼓勵學生個性充分發(fā)展。我們主張承認并客觀面對學生的個體差異性,在實驗內容和難度上不強求一致,而是對每個實驗設置多個難度層次。后一層次的工作建立在前一層次完成與思考的基礎之上,使每個學生個體都能最大限度地得到深刻的體會,我們稱這種方法為層次漸進法。
1.2實驗方法的選擇
對于計算機網絡的實驗教學,選擇適當的實驗方法也是至關重要的。通過廣大教師的不斷探索,我們近年形成了很多有特色的實驗方法,有的注重動手能力培養(yǎng),有的注重實驗室建設,有的注重實驗系統(tǒng)和實驗平臺的應用[6],有的注重虛擬實驗與真實實驗相結合[7],有的注重基本原理與網絡產品相結合等。
與實驗內容的選擇相同,對實驗方法的選擇也不可求全,以一到兩種為宜。選擇哪一種實驗方法,需要根據專業(yè)特點,再綜合考慮多方面因素。在開展網絡實驗的實踐中,我院重點考慮了以下三方面的因素:
首先是與理論教學內容相結合。我院選擇《計算機網絡——自頂向下方法》作為理論教學教材,該書作者具有深厚的網絡應用研究背景。在內容安排上,使教師能夠在教學早期階段就開始介紹網絡應用程序的開發(fā)[2],對各類網絡應用程序和應用級協(xié)議的關注度極高。
其次是與學生的就業(yè)預期相結合。我院主要培養(yǎng)勝任未來信息化軍隊領導崗位的高素質新型通信初級指揮人才,學生今后工作中接觸計算機網絡的方式主要是使用或設計網絡應用程序。因此,本課程的定位應該是培養(yǎng)“使用計算機網絡的技術人員”。
再次是對學生心理進行深度挖掘。青年學生知識面廣,接受新鮮事物快,但他們不盲從,如果不事先認同,很難真正調動他們深入研究的積極性。作為學生,他們缺少科研攻關的經歷,對于在學術上如何克服困難完成任務還缺少必要的心理預見。
綜合上述因素,我們選擇以網絡應用編程為主要實驗內容,這樣與教材的知識契合度高。主要采用軟件編程的實驗方法,為學生將來作為技術人員使用網絡打好基礎。我們使用層次漸進法設計實驗題目,以適應學生學習能力的個體差異性,避免因難度不當造成的心理落差。
我們不認為軟件編程方法“難以保證教學質量的一致性,無法實現網絡實驗的基本功能[1]”。由于學生學習能力的個體差異性,教學質量很難“一致”,其實也不必強求“一致”,重要的是通過加強組織管理和恰當引導,充分發(fā)揮學生的主觀能動性,在確保每個學生都能達到基本教學要求的基礎上,將每個學生的個體能力發(fā)揮至最大,真正做到既傳授知識,又培養(yǎng)能力。
1.3層次漸進法的實踐
在我院計算機網絡的實驗教學實踐中,除少量的原理驗證型實驗題目為公共科目外,學生主要完成實踐應用型實驗,具體說就是完成一個網絡應用的設計與實現。
我們設計了多個網絡應用題目,學生可以自主選擇其一,每個題目都使用層次漸進法設置多級目標。這樣既便于教師引導,又便于學生克服困難完成任務,提高教學質量。
下面就以一個實際題目為例,說明如何運用層次漸進的方法設計題目,并對實踐效果加以分析。
2層次漸進的題目設計
本題目要求使用Socket編程,實現客戶/服務器模式的客戶端和服務器端程序,它們之間的通信使用TCP協(xié)議。具體實驗目標被劃分為10個層次,每一層目標的完成將是開始下一層工作的基礎。希望學生能夠充分發(fā)揮主觀能動性,克服困難,不斷進步。通過本題目的實踐,希望每個學生都能在自己的能力和努力范圍內取得最大程度的提高。
除第1層外,其他各層都不提供示例程序。各層次的功能要求如表1所示。
表1各層次功能要求
層次功能要求
第1層完成最基本的通信功能。通信是單向的,由客戶端向服務器發(fā)送一個固定的字符串“Hello”,服務器成功接收后顯示該字符串??蛻舳伺c服務器分別結束運行。
第2層將通信改為雙向??蛻舳溯斎胍粋€任意字符串,向服務器發(fā)送;服務器接收后,增加一個后綴“_yes”并回傳;客戶端接收后顯示。
第3層增加循環(huán)控制功能,可多次輸入、發(fā)送并回傳??蛻舳嗽诎l(fā)送后對字符串進行判斷,服務器在接收后對字符串進行判斷,如果是某個特殊字符串,如“exit”,則退出循環(huán),結束運行。
第4層客戶端向服務器發(fā)送一個指定文件。文件按“塊”讀取和傳輸,需要有輔助信息幫助服務器確定文件傳輸的開始和結束,這可以視為應用層協(xié)議的雛形。
第5層增加多線程功能。使服務器可以同時接收多個客戶傳送的文件。
第6層增加控制功能,允許一個客戶發(fā)送多個文件。初始建立的TCP連接為控制連接,負責傳遞控制命令和文件信息;文件傳輸時建立新的數據連接,傳輸文件數據。
第7層將文件的傳輸改為雙向,允許客戶從服務器取文件。
第8層設計一個簡單的應用層文件傳輸協(xié)議。在上一層基礎之上,增加文件列表、創(chuàng)建子目錄、改變子目錄和刪除文件等命令,形成一個較為完整的應用層文件傳輸協(xié)議——SFTP(Simple File Transfer Protocol)。
第9層實現SFTP。
第10層閱讀RFC959,學習FTP協(xié)議的有關細節(jié)。研究一個開源的FTP系統(tǒng)。了解實用程序的編程風格,學習幾個關鍵環(huán)節(jié)的實現方法。
注:每層都需要分別實現客戶和服務器兩個程序。開始時服務器監(jiān)聽,等待客戶的連接。連接成功后繼續(xù)完成上述功能。
3教學效果
在我院的計算機網絡實驗課程中,上述題目占用8個學時,從實施結果看,絕大多數學生都能夠完成6至9層功能,取得了令人滿意的教學效果。下面我們從各層的難度入手,對教學效果進行分析:
第1層只要掌握最常用的幾個Socket函數即可完成,我們還給出了示例程序,幾乎沒有難度,僅僅是工作的一個起點。從第1層到第4層,各層之間的難度增加很小,各層增加的程序不過10行。所有學生都能在課內完成前4層,這其實也是該題目的最低要求。
單純從編程的角度來看,第4層到第5層是一個較大的臺階,因為相當一部分學生沒有多線
程編程的經驗。我們采取的措施是:在實驗指導書中講解多線程編程的方法,提供多線程編程示例,給出多線程編程方法與本層功能結合的相關提示。借助這些參考知識,絕大多數學生能夠實現第5層功能。
與前幾層相比,從第5層到第9層的難度增加仍然很小,一旦突破第5層,第6至第9層都可以順利完成。但這幾層間的工作量增加較大,每層的實現需要一定時間。最終,有約1/4的學生能夠進行到第9層。試想一下,如果不是采用層次漸進法,而是直接將第9層功能作為實驗題目來布置,恐怕只有極少數非常優(yōu)秀的學生才能夠完成。
該題每一層比上一層的難度都有所增加,但增加部分都集中在單一技術點上,便于學生的學習研究,不至于被困難所嚇倒。當課程結束,總結所做內容時,學生就會發(fā)現逐層難點的解決就構成了一個完整的科研攻關過程,從而初步形成一定的科研攻關經驗與心理承受力。
實施層次漸進法以來,沒有學生能夠在課內完成全部10層任務,避免了個別學生在實驗課中所有可能產生的盲目自信情緒。事實上,對任何人來說,第10層本身就很難在短時間內完成。
實驗成績按所達到的層次確定。前幾層占分數比例比較大,后幾層雖然難,所占分數卻比較少,有利于大家共同提高,整體達到基本教學效果。這個措施還在一定程度上杜絕了編程實驗中常有的抄襲和復制現象。
采用層次漸進法具有以下效果。
1) 增強學生的自信心。
課程結束時,無論停止在哪一層,學生對下一層的實現都會有一定想法,雖然還沒做,但他們知道假以時日是能夠做出來的。這樣就避免了太難的實驗題目嚇退學生的學習興趣與積極性,使不同層次的學生都有信心親自動手解決問題,充分發(fā)揮實驗教學的功能。
2) 為學生創(chuàng)新意識的培養(yǎng)創(chuàng)造條件。
在實驗的后半段,有些學生已經不再按實驗指導
書規(guī)定的層次要求往下做,而是根據個人的優(yōu)勢和愿望自由發(fā)揮。例如,有的學生本身具有MFC的編程基礎,他們將SFTP客戶端實現為標準的窗口界面,所實現的系統(tǒng)界面精美、使用方便。事實上,凡是做到第6層以上的學生,都會對后續(xù)工作產生一些想法,有時比我們想告訴他們的還要多。課后,還有學生繼續(xù)選擇相關的開放性實驗項目,課程實驗起到了很好的基礎性作用。
3) 促進理論教學。
事實上,越是達到較高層次的學生,產生的創(chuàng)新想法越多,也越是感慨基本原理學習的重要性,因為他們正是從一個個基本問題的解決中一步步前行的。學生不僅可以通過實驗加深理解計算機網絡的相關理論,還可以在理論中尋求解答,提高學習的內在動力,提高課堂教學質量。
4結語
計算機網絡中的變革是持續(xù)不斷的[2],計算機網絡教學也必須跟上網絡技術的發(fā)展。筆者選擇計算機技術中的網絡應用程序編程為突破口,對網絡實驗課程的教學方法進行了一點探索。希望以此為基礎繼續(xù)探索,也希望對兄弟院校有所幫助。
參考文獻:
[1]