摘要:“TCP/IP網絡設計及實現”雙語課程旨在從實現的高度幫助學生深入理解各種網絡協議和技術,提高學生系統軟件編程水平,并利用雙語平臺增強學生的外語聽說能力,為學生今后的學習和發展奠定基礎。作者從分析課程的特點出發,結合引入雙語教學的必要性和存在的問題,主要從教學內容的選擇和組織、龐大源碼的講解、實踐環節的設置等方面,探討了該課程的教學模式。
關鍵詞:源碼;雙語教學;實踐
“TCP/IP網絡設計及實現”雙語課程是我校計算機專業開設的一門專業課,主要介紹BSD Unix操作系統中TCP/IP協議棧軟件的設計思想與實現技術。一方面,該課程從實現的高度幫助學生深入理解各種網絡協議和技術,提高學生系統軟件編程水平;另一方面,通過雙語平臺增強學生的外語聽說能力,培養學生以外語為工具獲取國內外最新知識的能力,從而有利于學生更好地適應今后的深入學習和職業發展的需要。
1課程的特點
1.1實踐性強
該課程以TCP/IP協議理論為基礎,旨在使學生掌握多層協議設計方法和實現技術,所以更多強調實踐性,對課堂教學無疑提出更高的要求。在以教師單向傳授為主的課堂上,講解BSD Unix操作系統中龐大的協議軟件的實現細節,需要采用多種不同的教學手段。
1.2源代碼長
TCP/IP協議軟件代碼很龐大,達到幾萬行,這對教學過程提出了很大的挑戰。稍有不慎,課堂教學很容易使學生感到枯燥無味,從而失去學習的興趣。
所以,如何使靜態的代碼動起來,變得有吸引力,激發學生的好奇心,是教學亟需解決的問題。
1.3前期知識儲備多
按該課程的教學順序,要求學生具備一定的程序設計基礎、專業基礎和專業知識儲備。首先,協議源碼是用C語言編寫的,熟悉C語言的基本語法是閱讀代碼的前提和基礎。只有具備扎實的C語言功底,才能領會協議實現中的諸多巧妙之處。其次,TCP/IP網絡協議理論是設計和實現網絡協議軟件的根本依據,所以在學習該課程之前,學生應該具備一定的網絡理論基礎。最后,BSD Unix操作系統中協議軟件設計的一大特色是數據結構設計得環環相扣,多嵌套,靈活性強。只有充分理解數據結構設計思想,才能真正掌握協議軟件的精髓,從而很大程度上提高自己的系統設計能力。所以,“數據結構”先修課程的學習是必不可少的。
2課程雙語教學面臨的問題
在我校該課程采用雙語教學已有多年歷史,目的在于迎合經濟的全球化發展對高校的人才培養提出的要求,即不僅注重專業知識和技能,還需具備一定的國際交際交流能力。另外,計算機及其網絡技術的發展日新月異,為了研究與交流的需要,及時了解最新的技術成果和發展動態是十分必要的,而最新的技術資料和研究成果大多來自英語國家。因此,培養學生具備一定的專業英語能力,為其今后開展學術研究奠定了語言基礎,推動了我國未來人才的科研素質的提高。
不容忽視的是,雙語教學效果會受到一些客觀因素的制約和影響。首先,學生的外文基礎。普通高等院校中,學生的英文基礎參差不齊,聽說能力普遍不高,如果無視這個客觀事實,而一味開展大比例英文授課,結果只會妨礙學生對專業知識的理解吸收,影響課程教學的正常進行。所以,雙語僅僅是教學形式,離不開根本的教學目的,即,使學生真正掌握課程知識,形成有效的專業結構體系。這就要求教師密切關注學生的課堂反映,通過多種渠道及時了解學生的實際情況,并依此來調整課堂上雙語的比例,盡可能達到滿意的教學效果。其次,教師的英語表達能力。發音是否純正、表達是否流利、概念表述是否準確,這些都會直接影響學生的聽課效果。就目前的普通高校,大多數教師很難真正做到這一點。即使有些老師可以做到表達流暢,發音正確,也難免會出現用語單調,語氣乏味等現象。如果學校能夠多創造機會讓老師接受相關的語言培訓,提供一個提升英語能力的平臺,相信雙語師資隊伍的整體水平會得到很大程度的提高。最后,不同的課程的教學內容難易程度差異很大,對于偏難的專業基礎課程而言,雙語教學的開展不是很好的選擇,因為即使用母語教學,學生掌握課程仍然很困難,需要投入很多的精力,更別提引入雙語模式了。所以,大多高校都是針對專業課開展雙語教學。
3雙語教學形式下的教學模式
我們在開展雙語教學過程中,依據課程的特點,堅持以下幾點來改善課堂教學質量,取得一定的教學效果。
3.1精選和組織教學內容
本課程教學內容以教材以本,又不局限于教材。現采用的英文原版教材是由Gary R. Wright編寫的“TCP/IP Illustrated”(TCP/IP詳解)(文獻[1]),教材篇幅很多,內容豐富,共有32章。由于課時限制以及教學大綱的要求,我們對內容進行了適當的篩選。依據教學大綱和教學計劃,教學內容的選擇覆蓋了TCP/IP 體系結構中的幾個主要協議的設計及實現技術。
在教學內容的組織上,考慮到學生的認知和思維習慣,不拘泥于教材中的組織順序,靈活合理地部署教學內容。文獻[1]中是按照TCP/IP體系結構協議分層自底向上(Bottom-up)的順序進行講解,即從網絡接口的設計開始,依次進入到網絡層、傳輸層和應用層。在分析每個協議層的實現時,都是以數據結構的定義為核心,以數據結構之間的聯系為線索,在描述模塊和函數的功能基礎上,詳細講解協議軟件的代碼細節。這樣安排使課程結構系統性強,知識體系很完整,但與學生的認知和思維習慣不太合拍。學生在學習的過程中很容易感到迷茫,不知大量復雜的相互嵌套的數據類型定義到底有什么用處,目標模糊,特別是前幾章中講解的接口層的實現,涉及到部分硬件的細節,增強學生理解的難度,從而一定程度降低其學習的興致。
在教學實踐中,若能嘗試按照自頂向下(Top-down)的順序開展課程教學,會取得顯著的效果。所謂自頂向下,即從一個具體的網絡應用程序開始,逐步引入插口操作中涉及到的系統調用,然后深入到傳輸層協議和IP協議的具體實現,最后涉及網絡接口的數據發送和接收過程。正如魔術揭密一樣,這種順序也許更加符合人的認知習慣和獵奇心理,易于被學生接受。從網絡的高層應用到具體協議實現細節,是一個從抽象到具體、打開黑匣子的過程,學生在好奇心的驅使下,一步步渴望理解更詳細的內幕,直到完成整個課程的學習。
類似于非母語學習過程中推崇的“情景學習”,在講解具體協議的實現時,從鮮活的源代碼入手做情景分析,在分析過程中逐步引入相關的數據結構,再帶著學生一起畫出函數的邏輯流程,并從編程角度突出實現中運用的某些高超的技巧。這樣,引導學生一起分析、一起閱讀、一起理解、一起學習,使學生在獲得成就感的同時,也激發了他們的學習興趣和進一步學習的熱情。
另外,對同一問題的解決,提供多種方法,并進行綜合比較分析,從而激發學生思考,開拓學生的思維。例如,在講解協議軟件結構設計時,首先詳細講解教材中BSD Unix中的網絡協議軟件的分層結構、設計理念和層間的交互方法。接著,脫離本教材,簡單介紹Xinu系統[2]中協議軟件的架構。前者基于協議接口的系統調用,后者的層間交互采用進程間通信的方式。最后,引導學生比較這兩種軟件系統體系的優缺點,形成自己的觀點,再通過課堂討論的教學手段,通過交流加深學生的理解。
3.2源碼講解要注重思想、強調流程、解釋難點
基于源碼的教學是該課程的一大特色。要能準確地理解協議軟件的實現方法,源代碼既是最準確的說明書,也是最權威的教科書。但是龐大的源碼使教學面臨很大的挑戰。課堂上教師需要將具體的源碼抽象化,從龐大的源碼中提煉出設計思想,并舉一反三。如在講解內存管理機制時,課堂從協議軟件的性能需求出發做情景分析,提出對內存管理的要求,接著引導學生一起來設計基本存儲單元的結構,并分析其特點。當學生對該機制有一定程度的理解之后,再給出mbuf數據結構的定義,從而讓學生體會C語言中聯合體在定義與類型相關(type-dependent)的數據結構中應用。為了培養學生代碼閱讀和理解能力,以及更加深入地理解內存管理在協議軟件中的應用,課堂現場引導學生通過查看代碼來描述管理策略的實現方法,從具體代碼中抽象出具體的設計思想。最后,鼓勵學生積極思考,看看能夠想出其他行之有效的方法,并進行分析比較。
對于冗長的源代碼,長篇累牘地逐行解釋,既不被有限的課時所允許,也容易造成枯燥無味的教學效果。若能通過有向圖,理清源文件、各協議處理函數之間的關系,學生就會比較容易掌握協議軟件的結構,從而準確把握課程的重點,為學習指明方向。另外,在講解具體函數的時候,摒棄逐行解釋,而是在理清函數流程的基礎上,逐步驟講解。如在講解IP輸入處理函數過程中,對照協議的內容和源碼,畫出函數流程圖,標明每一個步驟的任務。其中,第一步是對輸入的IP數據報進行校驗,包括頭長度合法性校驗、版本兼容性校驗、校驗和正確性校驗等。每個任務模塊對應一段代碼。所以,在講解時,以功能段為單位講解更容易被接受。教師利用課堂寶貴的時間,理順程序實現線索,突出重要的執行步驟,并對于學生難以理解的部分,多花時間來講解。
3.3設置實踐環節,加強實驗訓練
課程的實踐性最終還應該通過實驗環節來體現。為此,該課程為學生安排了一系列實驗。考慮到開源特性,我們采用與Unix內核很相似的Linux操作系統作為實驗平臺。實驗分為驗證性和設計性兩種,前者主要包括通過對內核源碼的查閱,熟悉協議軟件的結構、協議模塊分布和關聯;還包括實時查看和重新配置內核中某些全局協議參數,跟蹤配置后的結果,從而加深對協議實現細節的認識;難度高一點的驗證性實驗包括根據要求對內核進行裁減等。后者主要是根據系統提供的網絡調用接口設計并實現一些熟知的高層應用。如設計ping程序加深對ICMP協議的理解和應用,實現traceroute程序利于學生理解IP協議原理和ICMP特定類型報文的使用等。通過這些驗證性和設計性實驗,目的在于使學生加深對操作系統中內嵌的協議軟件的認識,使其對協議實現的理解不僅限于工程使用,而是進入到更高層次,培養其獨立思考和實踐動手能力,熟悉并掌握網絡編程的方法和技巧。
3.4注重課堂交互,促進雙語教學
要想達到良好的教學效果,課堂交互是必不可少的一個環節。一方面,由于該課程的課堂教學采用雙語教學的形式,提高學生的英語聽說能力也是課程教學的一個重要目標。如果忽略師生交互,課堂教學呈現單向模式,學生只聽不說,則很難達到教學目標。只有多多使用外語進行交流,才能創造一種外語學習的氛圍,提高學生的外語能力。另一方面,交互教學也適應了該課程的源碼特色,教師引入一定的協議處理場景,通過課堂提問或討論的方式積極組織和引導學生去思考,并和學生共同解決問題,從而擺脫了知識單向傳授的格局,提高了學生學習的興趣。其實,在激發學生敢問敢答和敢于表達自己觀點的過程中,學生的外語能力勢必會提高很多。交互式教學不局限于課堂,在信息化的今天,網絡互動教學能夠達到有效和深入、全面、機會均等的互動[3]。當然,要想達到良好的教學效果,學生課前要做好一定程度的準備,包括學習內容的預習、相關資料的閱讀參考等。
3.5搭建網絡平臺,輔助課堂教學
多媒體技術和網絡技術的發展不僅改變人們的生活方式,也為高校教學改革帶來了契機。它可以打破教學的時間和地點的限制,將教學活動無限延伸,彌補教師課堂教學不可重復性的缺點,隨時幫助學生查漏補缺,鞏固課堂知識。具體形式多樣,教師可以利用校園網,也可以在個人主頁上,上載精選后的教學內容、有價值的教輔資料或者教學視頻,供學生在任意時間和地點下載學習。還可以開辟網上互動區,其互動環節包括作業的提交和批改,在線答疑專區,在線考場等。利用網絡平臺,教師可隨時發布課后作業題目及其要求,待學生提交完電子作業,教師在線批改,并及時進行反饋。通過設置答疑專區,教師在為學生答疑解惑的同時,對學生的知識掌握情況也有一定程度的了解,并依此及時調整課堂教學活動的進度,從而達到輔助課堂教學的目的。另外,為滿足學生自主學習的需求,還可以設置在線考場,從試題庫中按照一定規則搜集出若干習題形成試卷,對學生進行在線考核。總之,考慮該課程的實踐特色和雙語形式,網絡平臺尤為重要,成為課堂教學的有益補充,對教學目標的實現具有很大的推動作用。
4結語
總之,針對“TCP/IP網絡設計及實現”雙語課程的特點,在課程教學過程中,教師有必要充分利用網絡教輔平臺,加強實踐環節教學,圍繞專業教學計劃和要求,培養更多計算機專業的創新型人才。
參考文獻:
[1] W. Richard Stevens. TCP/IP Illustrated Volume II: The Implementation [M]. 北京:機械工業出版社,2002.
[2] Douglas E. Comer. Internetworking with TCP/IP[M]. 北京:清華大學出版社,2000.
[3] 胡昌平,趙雪芹. 信息管理類專業課程互動式教學的實現[J]. 情報科學,2008,(8):1123.
Discussion of Teaching Approaches to Bilingual Course of Design and
Implementation of TCP/IP Networks
WANG Xue-mei, YE Xiao-guo
(College of Computer Science, Nanjing University of Posts and Telecommunications, Nanjing 210003, China)
Abstract: The course entitled The Design and Implementation Of TCP/IP Networks aims to help students understand a variety of network protocols and techniques deeply , enhance their ability of programming system-level software, and increase their english ability in listening and speaking by adopting bilingual platform, thus forming a good basis for their study in the future. This paper begins with the analysis of the characteristics of this course, then discusses the necessity and problems involved in bilingual teaching, finally proposes the teaching mode in several aspects such as the selection and organization of the teaching contents, the way in explaining a great amount of source code, the introduction of practical part etc.
Key words: source code; bilingual teaching; practice
(編輯:彭遠紅)