劉杰彥,向 渝,詹思瑜
(電子科技大學(xué) 計算機科學(xué)與工程學(xué)院,成都 611731)
計算機網(wǎng)絡(luò)編程的教學(xué)與實驗探討
劉杰彥,向 渝,詹思瑜
(電子科技大學(xué) 計算機科學(xué)與工程學(xué)院,成都 611731)
計算機網(wǎng)絡(luò)編程是一門融合多門專業(yè)知識的計算機專業(yè)核心課程,具有實踐性強的特點。為了解決計算機網(wǎng)絡(luò)編程教學(xué)和實驗中存在的普遍問題,文中對該課程的教學(xué)方式和實驗建設(shè)進行了相關(guān)探討,嘗試將系統(tǒng)的思想貫穿教學(xué)過程,以具體的案例驅(qū)動教學(xué),注重多門知識的融會貫通,豐富實驗內(nèi)容和層次。通過這些方式讓學(xué)生形成較完整的知識體系并提升對問題的綜合解決能力。
網(wǎng)絡(luò)編程;系統(tǒng)思想;案例;實驗
計算機網(wǎng)絡(luò)編程課程是一門理論和實踐緊密結(jié)合的課程,課程的實踐性和應(yīng)用性較強[1],涉及的專業(yè)知識廣泛,學(xué)生通過學(xué)習(xí)這門課程,能夠深化網(wǎng)絡(luò)通信知識的掌握,了解一般網(wǎng)絡(luò)應(yīng)用軟件的設(shè)計原理和方法,同時積累一定的實際編程經(jīng)驗,提高理論應(yīng)用于實際的能力。而科學(xué)的教學(xué)方法和合理的實驗設(shè)計是實現(xiàn)上述教學(xué)目標(biāo)的關(guān)鍵,本文在分析現(xiàn)有教學(xué)常見問題基礎(chǔ)上,對這門課程的教學(xué)方法和實驗設(shè)計進行了一些探討,提出了系統(tǒng)化的教學(xué)理念以及層次化實驗設(shè)計方法。
計算機網(wǎng)絡(luò)編程是面向計算機專業(yè)大三學(xué)生的專業(yè)課程,開設(shè)在大三學(xué)年下學(xué)期,涉及的專業(yè)知識眾多,實踐性強,具有一定的教學(xué)難度,而現(xiàn)有的教學(xué)過程中普遍存在以下常見問題。
1.1 教學(xué)過程中系統(tǒng)性思維把握不足
由于教學(xué)任務(wù)重、教學(xué)內(nèi)容多,在課堂教學(xué)中教師主要根據(jù)教材、教案來完成相關(guān)知識點的介紹。但是講授時往往局限于對教材指定內(nèi)容的靜態(tài)演繹,忽視系統(tǒng)思維的把握,缺乏系統(tǒng)的教學(xué)設(shè)計,造成學(xué)生的思維容易局限在指定的教學(xué)內(nèi)容上,缺乏對問題的深入思考與探索,對各個知識點間的聯(lián)系以及知識架構(gòu)的全局把握較為茫然。
1.2 學(xué)生綜合運用專業(yè)知識的能力有待提高
計算機網(wǎng)絡(luò)編程以多門專業(yè)課程為基礎(chǔ),包括計算機網(wǎng)絡(luò)、操作系統(tǒng)和程序設(shè)計等。網(wǎng)絡(luò)編程涉及多門專業(yè)知識的綜合應(yīng)用,學(xué)生雖然學(xué)習(xí)了各門專業(yè)課程,但知識體系處于分散狀態(tài),不知如何綜合運用多門專業(yè)知識來分析和解決實際問題,對各門專業(yè)知識的綜合性、系統(tǒng)性應(yīng)用缺乏實戰(zhàn)經(jīng)驗。
1.3 實驗內(nèi)容較局限
目前課程的實驗內(nèi)容主要限定在基礎(chǔ)的編程原理、基本的客戶端算法和服務(wù)算法的設(shè)計和實現(xiàn),實驗層次較單一,學(xué)生依據(jù)基本實驗步驟就能輕松完成實驗。實驗內(nèi)容與實際需求存在一定差距,缺乏對系統(tǒng)分析問題和創(chuàng)新能力的鍛煉。導(dǎo)致學(xué)生在后續(xù)畢業(yè)設(shè)計、課題參與以及工作實踐中,面對實際的問題和項目難以盡快入手,不易學(xué)以致用。
針對課程教學(xué)目前存在的問題,結(jié)合多年的教學(xué)實踐,我們對計算機網(wǎng)絡(luò)編程的課堂教學(xué)方法進行了深入分析和探索,力求在教學(xué)過程中重視系統(tǒng)思想的貫穿,突出對問題分析和解決能力的培養(yǎng)。
2.1 教學(xué)設(shè)計要重視系統(tǒng)思想的貫穿
教材內(nèi)容是以網(wǎng)絡(luò)編程中基本的知識點、知識的進階層次來分章節(jié)模塊介紹。教材內(nèi)容是靜態(tài)的,而教學(xué)過程則是動態(tài)的[2-3],教師不能僅僅局限在對教材內(nèi)容按部就班地講授。具體而言,教學(xué)過程中,教師不僅要關(guān)注問題本身,還要注重問題的來龍去脈的引入,注重知識點間內(nèi)在邏輯聯(lián)系的分析,注重局部到整體的歸納。借助于實例分析、問題表述、問題引申以及歸納演繹等多種教學(xué)方法,培養(yǎng)學(xué)生以系統(tǒng)化的思維模式學(xué)習(xí),實現(xiàn)對問題的宏觀把握和微觀分析,進而提高學(xué)習(xí)效率。這種教學(xué)方式對其他課程的也是適用的。
2.2 以具體案例、課題驅(qū)動教學(xué)
為了讓學(xué)生形成完整的知識架構(gòu),培養(yǎng)他們系統(tǒng)性的思維能力和問題分析能力,可以采用具體案例和課題驅(qū)動教學(xué)的方法[4-5]。具體操作如下:根據(jù)教學(xué)的進度,適時引入具體案例加以分析,案例可來源于實際項目或典型應(yīng)用,案例應(yīng)該包括對所學(xué)的多個知識點的綜合應(yīng)用。通過探討案例的解決辦法,讓學(xué)生分析該案例涉及的知識點,分析這些知識點之間的聯(lián)系,進而綜合運用這些知識點來解決問題。
例如,當(dāng)講授了客戶的基本算法和并發(fā)服務(wù)器的基本算法后,可以給定一個具體的案例,如并發(fā)的面向連接的Echo服務(wù)的設(shè)計實現(xiàn)。這個案例包括了多個知識點的有機融合,包括套接字函數(shù)使用、客戶端的算法、服務(wù)器端的算法、客戶和服務(wù)器的通信流程、模塊封裝的思想以及服務(wù)器的選型等。在對實際的案例分析和解決的過程中,學(xué)生掌握了之前所學(xué)各個知識點間的有機聯(lián)系,實現(xiàn)了知識從點到面的擴充。
2.3 注重與其他專業(yè)知識的融會貫通
教學(xué)中不僅要注重網(wǎng)絡(luò)編程的知識點到知識面的擴充,還應(yīng)注重與其他多門專業(yè)課程的融會貫通,進而才能實現(xiàn)知識面到知識體的演化。由于計算機網(wǎng)絡(luò)編程涉及多門專業(yè)知識的綜合應(yīng)用,該課程開設(shè)在相關(guān)的基礎(chǔ)課程開設(shè)之后,這些基礎(chǔ)課程包括計算機網(wǎng)絡(luò)、操作系統(tǒng)和程序設(shè)計等。為了讓學(xué)生建立完整的知識體系,在教學(xué)中注重網(wǎng)絡(luò)編程的原理與其他專業(yè)知識的融會貫通,對各門專業(yè)知識在網(wǎng)絡(luò)程序設(shè)計中的結(jié)合應(yīng)用作深入分析,讓學(xué)生對問題的綜合分析及應(yīng)用能力得到真正提升。
例如,學(xué)生在本課程之前通過學(xué)習(xí)計算機網(wǎng)絡(luò)已經(jīng)掌握了客戶/服務(wù)器的通信原理,通過學(xué)習(xí)操作系統(tǒng)已經(jīng)了解了進程、線程的概念,了解了同步機制的基本原理,但是對實踐卻缺乏直觀感受,對網(wǎng)絡(luò)通信和操作系統(tǒng)知識的綜合應(yīng)用沒有實際經(jīng)驗。因此在講授網(wǎng)絡(luò)中并發(fā)的服務(wù)器的設(shè)計時,不僅要對網(wǎng)絡(luò)服務(wù)器算法流程進行深入分析,還要注意與操作系統(tǒng)知識的結(jié)合,結(jié)合多進程、多線程、單線程三種并發(fā)方式各自的原理和特點,具體實現(xiàn)技術(shù)、系統(tǒng)資源的占用情況、優(yōu)缺點、實際應(yīng)用場合以及進程/線程同步機制等多個方面進行深入的剖析,力求做到融會貫通,這樣才能讓學(xué)生知其然并知其所以然,進而形成完整的知識架構(gòu)。
對于網(wǎng)絡(luò)編程這門實踐性和應(yīng)用性非常強的課程,實驗的重要性不言而喻,理論上所學(xué)的知識最終要在具體案例中得到應(yīng)用才具有實際意義[6-7]。我們在設(shè)計實驗時,力求學(xué)生能通過實驗,掌握基本的網(wǎng)絡(luò)應(yīng)用軟件開發(fā)技術(shù),積累一定的網(wǎng)絡(luò)程序編寫經(jīng)驗,最終能夠?qū)W以致用。為了達到這一目的,我們以課程內(nèi)容為基礎(chǔ),從實驗開設(shè)的多方位、多元化出發(fā)[8],遵循從簡單到復(fù)雜,從基礎(chǔ)到提高,面向?qū)嶋H應(yīng)用的原則,將實驗內(nèi)容設(shè)計分解為三個層次,如表1所示。
3.1 專題類實驗
學(xué)生通過這類實驗,鞏固對客戶/服務(wù)器通信的原理、基本通信流程和算法的掌握。這類實驗包括教材上的主要專題內(nèi)容,如TCP/UDP客戶端的設(shè)計、循環(huán)的TCP/UDP服務(wù)器的設(shè)計、并發(fā)的TCP/UDP服務(wù)器的設(shè)計、多種并發(fā)方式(如多進程、多線程、單線程)的具體實現(xiàn)等。作為基礎(chǔ)性的實驗,這些實驗的主要目的是能夠掌握網(wǎng)絡(luò)編程的基本原理,懂得基本套接字函數(shù)的應(yīng)用,能夠編程設(shè)計完成基本的客戶/服務(wù)器通信,設(shè)計簡單的各種類型服務(wù)器,理解模塊封裝的概念和優(yōu)點并懂得具體應(yīng)用。由于具體服務(wù)不是這類實驗的重點,因此可以選擇Time、 Daytime和 Echo等簡單的網(wǎng)絡(luò)服務(wù)來完成上述各個實驗。
表1 實驗內(nèi)容設(shè)計
鑒于實驗課時有限且這類實驗難度不高,可選擇部分專題實驗作為實驗課的基本內(nèi)容,而部分則由教師在理論課上根據(jù)教學(xué)進度適時穿插,進行分析和演示。
3.2 綜合類實驗
為了加強學(xué)生對知識的綜合理解和應(yīng)用能力,綜合類實驗應(yīng)該作為實驗的重點內(nèi)容。綜合類實驗不再局限于具體的某些章節(jié)知識或簡單的某種基本算法,而是對多個章節(jié)知識的綜合應(yīng)用,是對若干基礎(chǔ)類實驗的有機合并和深入。例如,設(shè)計一個多服務(wù)服務(wù)器。要求同一個服務(wù)器能同時提供對多種服務(wù)的響應(yīng),在同一個服務(wù)器中能同時提供Time、Echo、Daytime和Chargen等多種服務(wù)。該多服務(wù)服務(wù)器的設(shè)計綜合了以下基礎(chǔ)知識點:
(1) 對多服務(wù)服務(wù)器的理解。單服務(wù)服務(wù)器即一個服務(wù)器只能處理某一種服務(wù)的客戶請求,而多服務(wù)器則要對多個單服務(wù)服務(wù)器進行有機合并。
(2) 服務(wù)器的選型。選擇以哪種并發(fā)的方式來實現(xiàn)讓同一個服務(wù)器能同時提供多個服務(wù)。
(3) 各種服務(wù)的基礎(chǔ)協(xié)議選擇。針對各種服務(wù),逐一確定服務(wù)器是以TCP方式還是UDP方式來響應(yīng)客戶請求。
(4) 各種服務(wù)的處理方式。針對各種服務(wù),逐一確定是服務(wù)器以循環(huán)還是并發(fā)的方式來響應(yīng)客戶。如果以并發(fā)方式響應(yīng),則還要進一步考慮同步問題。
(5) 客戶端的設(shè)計。 對各服務(wù)的客戶端進行設(shè)計,以便最終能對服務(wù)器提供的服務(wù)加以驗證。
(6) 各個服務(wù)的設(shè)計。設(shè)計服務(wù)器對各個服務(wù)的響應(yīng)過程。
(7) 模塊的封裝。服務(wù)器設(shè)計中如何劃分模塊并注意模塊間的聯(lián)系,以形成系統(tǒng)。
從這個例子可以看出,綜合類實驗考查了學(xué)生的系統(tǒng)分析能力和對基礎(chǔ)知識的綜合應(yīng)用。學(xué)生要從整體上對系統(tǒng)功能加以分析,進一步對系統(tǒng)功能進行分解,分成不同的基礎(chǔ)模塊加以設(shè)計實現(xiàn),最終將各個模塊進行有機合并加以測試,才能成功完成這類實驗。
3.3 應(yīng)用類實驗
與前兩類實驗相比,應(yīng)用類實驗涉及的知識面更廣,來源于實際項目或具體案例[9]。與具體應(yīng)用結(jié)合更為緊密,對學(xué)生的問題分析能力和知識綜合運用能力要求更高,在有限的實驗課時內(nèi)難以完成,可作為本課程的課外實驗或課程設(shè)計,學(xué)生完成后給予創(chuàng)新學(xué)分激勵。
這類實驗由教師給出一系列題目,如設(shè)計簡單的郵件服務(wù),即時聊天軟件、Web 服務(wù)、FTP服務(wù)等。學(xué)生自由組成實驗小組,根據(jù)熟悉課題的情況自主選擇題目,通過小組內(nèi)的分工協(xié)作來完成任務(wù)。應(yīng)用類的實驗要求學(xué)生具有系統(tǒng)性的問題分析和解決能力,從軟件工程的角度出發(fā),考慮系統(tǒng)的功能需求、總體設(shè)計、模塊劃分和各模塊的詳細設(shè)計與集成,最終還要根據(jù)功能需求完成相關(guān)測試,分析問題并改進。這類實驗涉及的知識面較廣,包括相關(guān)的網(wǎng)絡(luò)協(xié)議、客戶/服務(wù)器的通信方式以及客戶軟件/服務(wù)器軟件的設(shè)計算法等。除此之外,還需考慮服務(wù)器對客戶的認(rèn)證、鑒別、授權(quán)、服務(wù)器資源保護等問題,且在具體應(yīng)用環(huán)境中還要考慮對服務(wù)器性能進行優(yōu)化。
學(xué)生通過開展此類實驗?zāi)軌蛏罨瘜λ鶎W(xué)知識的靈活掌握,真正做到學(xué)以致用。同時了解項目運作的原理,學(xué)會分工和協(xié)作,培養(yǎng)團隊精神。實驗過程中教師要和學(xué)生多溝通,了解實驗的進度,及時發(fā)現(xiàn)問題并給出指導(dǎo)。
面對社會對計算機專業(yè)人才的需求,培養(yǎng)具有較強的專業(yè)知識綜合應(yīng)用能力的學(xué)生是專業(yè)教學(xué)的最終目標(biāo)。我們經(jīng)過多年的探索和實踐,從傳統(tǒng)的教學(xué)方式和實驗設(shè)計存在的問題出發(fā),探討了計算機網(wǎng)絡(luò)編程課程的教學(xué)新思路和實驗設(shè)計方法,致力于通過系統(tǒng)的教學(xué)方法和豐富的實驗內(nèi)容提升教學(xué)效果,讓學(xué)生形成完整的知識體系,真正做到學(xué)以致用。
[1]Commer D E, Stevens D L.用TCP/IP進行網(wǎng)際互連第三卷-客戶-服務(wù)器編程與應(yīng)用(Linux/POSIX套接字版)[M].趙剛,譯.北京:電子工業(yè)出版社,2008.
[2]馬寧,白燕.系統(tǒng)化程序設(shè)計思想培養(yǎng)模式初探[J].計算機教育,2005(3):25-28.
[3]沈軍.對本科“計算機網(wǎng)絡(luò)”課程教學(xué)的一點認(rèn)識和思考[J].計算機教育,2008,11(22):105-107.
[4]錢雪忠.實例化教學(xué)法在計算機類課程中的應(yīng)用[J].中國電力教育,2008(9):108-110.
[5]楊瀟瀟,李光文.任務(wù)驅(qū)動教學(xué)法在計算機基礎(chǔ)教學(xué)中的應(yīng)用[J].中國信息技術(shù)教育,2010(12):14-15.
[6]張科,馬立香,雷維禮,等.《接入網(wǎng)技術(shù)》實驗教學(xué)研究與探索[J].實驗科學(xué)與技術(shù),2011,9(5):227-229.
[7]阮尚全,邱艷,劉凱,等.實驗教學(xué)能力培養(yǎng)探索[J].實驗科學(xué)與技術(shù),2010,8(5):79-81.
[8]劉杰彥,易發(fā)勝.“計算機網(wǎng)絡(luò)”課程的實驗教學(xué)探索[J].計算機教育,2008,11(22):57-58.
[9]李紅梅,張紅延.面向能力培養(yǎng)的軟件工程實踐教學(xué)體系[J].高等工程教育研究,2009(2):84-87.
Discussion of Teaching and Experiment Methods on Network Programming
LIU Jieyan, XIANG Yu, ZHAN Siyu
(School of Computer Science and Engineering, University of Electronic Science and Technology of China, Chengdu 611731, China)
Network programming is a practical-oriented curriculum which comprises multiple specialist courses of computer discipline. To solve the common problems existing in the teaching and experiment process of this course, this paper makes a discussion on the teaching methods and the experiment construction. Firstly, the systematic teaching method should be adopted through the teaching process. Secondly, the appropriate projects or examples are useful in improving the efficiency of teaching. Thirdly, teachers should focus on how to help students to make a comprehensive understanding of multiple specialist courses. And lastly, it is important to enrich the contents and levels of the experiment. These approaches are useful in helping students to build up the global knowledge architecture to solve problems with multiple expertises.
network programming; systematic thought; project; experiment
2013-11-23
電子科技大學(xué)教改項目資助(2013XJYSL013)。
劉杰彥(1978-),女,博士,講師,研究方向:計算機網(wǎng)絡(luò)。
G642.4; TP399
A
10.3969/j.issn.1672-4550.2015.01.036