摘要:從網(wǎng)絡(luò)工程專(zhuān)業(yè)“網(wǎng)絡(luò)程序設(shè)計(jì)”課程的教學(xué)特點(diǎn)入手,在案例設(shè)計(jì)、上課講解、上機(jī)實(shí)踐、總結(jié)評(píng)價(jià)等環(huán)節(jié)中詳細(xì)闡述案例教學(xué)的具體實(shí)施過(guò)程。
關(guān)鍵詞:網(wǎng)絡(luò)工程專(zhuān)業(yè);網(wǎng)絡(luò)程序設(shè)計(jì);案例教學(xué)
在網(wǎng)絡(luò)工程專(zhuān)業(yè)中開(kāi)設(shè)“網(wǎng)絡(luò)程序設(shè)計(jì)”課程是為了讓該專(zhuān)業(yè)的學(xué)生在學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)理論知識(shí)的基礎(chǔ)上,理解網(wǎng)絡(luò)程序設(shè)計(jì)的基本原理,掌握基本的網(wǎng)絡(luò)程序設(shè)計(jì)模型,具備網(wǎng)絡(luò)應(yīng)用軟件與系統(tǒng)開(kāi)發(fā)的能力。然而,在筆者多年的教學(xué)過(guò)程中發(fā)現(xiàn),這門(mén)課程內(nèi)容多、學(xué)時(shí)少、實(shí)踐性強(qiáng),而編程調(diào)試的難度又令很多動(dòng)手能力差的學(xué)生失去了學(xué)好這門(mén)課程的信心。如何充分利用有限的課堂教學(xué)時(shí)間使學(xué)生完成理論與實(shí)踐的有機(jī)結(jié)合,掌握網(wǎng)絡(luò)程序的設(shè)計(jì)思想和開(kāi)發(fā)方法,是亟待解決的問(wèn)題。因此,筆者提出以案例為主線,將案例教學(xué)法應(yīng)用于課程的多個(gè)教學(xué)環(huán)節(jié)中的教學(xué)方法,取得了良好的教學(xué)效果。
1 教學(xué)現(xiàn)狀
1.1課程地位
作為本科院校的網(wǎng)絡(luò)工程專(zhuān)業(yè),培養(yǎng)目的不能局限于“組網(wǎng)工程”,而要根據(jù)各種類(lèi)型的用人單位對(duì)網(wǎng)絡(luò)工程專(zhuān)業(yè)人才需求的不同層次,堅(jiān)持理論和工程實(shí)踐結(jié)合,知識(shí)與能力并重,強(qiáng)化工程素養(yǎng)訓(xùn)練,培養(yǎng)基礎(chǔ)知識(shí)扎實(shí)的,具有較強(qiáng)的分析問(wèn)題和動(dòng)手解決問(wèn)題能力的,能從事和網(wǎng)絡(luò)相關(guān)的科研、工程和應(yīng)用工作的多層次綜合性人才。因此,該專(zhuān)業(yè)不僅要求學(xué)生掌握與網(wǎng)絡(luò)工程相關(guān)的基礎(chǔ)知識(shí)與理論,以及各種網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)、建設(shè)與維護(hù)技術(shù),如網(wǎng)絡(luò)協(xié)議體系、網(wǎng)絡(luò)互聯(lián)技術(shù)、網(wǎng)絡(luò)服務(wù)、信息安全、組網(wǎng)實(shí)踐、網(wǎng)絡(luò)測(cè)試與管理等相關(guān)知識(shí),也要求學(xué)生掌握基本的網(wǎng)絡(luò)應(yīng)用軟件與系統(tǒng)開(kāi)發(fā)的知識(shí)與技術(shù),這樣才能滿足學(xué)生在以后的工作與學(xué)習(xí)過(guò)程中的多元化需要。
在網(wǎng)絡(luò)工程專(zhuān)業(yè)的課程體系中,“網(wǎng)絡(luò)程序設(shè)計(jì)”這門(mén)課程屬于專(zhuān)業(yè)選修課,目的是讓學(xué)生在學(xué)習(xí)了“計(jì)算機(jī)網(wǎng)絡(luò)”等理論課程和“C#程序設(shè)計(jì)”或“JAVA程序設(shè)計(jì)”等基本編程技術(shù)的基礎(chǔ)上,了解網(wǎng)絡(luò)程序設(shè)計(jì)的基本概念,深入系統(tǒng)地學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)編程技術(shù),從網(wǎng)絡(luò)編程實(shí)現(xiàn)的角度更深層次地理解計(jì)算機(jī)網(wǎng)絡(luò)的理論和協(xié)議,同時(shí),培養(yǎng)學(xué)生開(kāi)發(fā)實(shí)用且具有網(wǎng)絡(luò)通信功能系統(tǒng)的能力。
1.2課程內(nèi)容
“網(wǎng)絡(luò)程序設(shè)計(jì)”課程與一般的程序設(shè)計(jì)課程不一樣。一個(gè)網(wǎng)絡(luò)通信程序必須由客戶端與服務(wù)端相互通信來(lái)實(shí)現(xiàn),因此,“網(wǎng)絡(luò)程序設(shè)計(jì)”課程側(cè)重于“網(wǎng)絡(luò)通信”,在教學(xué)上不能像一般的程序設(shè)計(jì)課程那樣偏重于程序設(shè)計(jì)語(yǔ)言的基本語(yǔ)法和用法,而應(yīng)強(qiáng)調(diào)網(wǎng)絡(luò)程序的編程思想和開(kāi)發(fā)方法。
從課程內(nèi)容來(lái)說(shuō),本門(mén)課程以某種具體的程序設(shè)計(jì)語(yǔ)言為基礎(chǔ)(如c≠}程序設(shè)計(jì)語(yǔ)言),結(jié)合一些高級(jí)編程技術(shù),如多線程編程、數(shù)據(jù)流處理、異常處理機(jī)制等,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)中的各類(lèi)協(xié)議進(jìn)行編程開(kāi)發(fā),如圖1所示。
1.3存在問(wèn)題
1)學(xué)時(shí)有限。
由課程內(nèi)容可以看出,“網(wǎng)絡(luò)程序設(shè)計(jì)”課程涉及多種網(wǎng)絡(luò)編程技術(shù),涵蓋的知識(shí)點(diǎn)非常多。同時(shí),隨著技術(shù)的不斷進(jìn)步,內(nèi)容還在不斷地加深和豐富。但由于這門(mén)課程屬于專(zhuān)業(yè)選修課,學(xué)時(shí)安排一般比較少(大部分院校該課程安排在48學(xué)時(shí)左右),其中還包括學(xué)生上機(jī)實(shí)驗(yàn),因此課堂講授時(shí)應(yīng)盡可能兼顧編程思想、開(kāi)發(fā)方法和各種網(wǎng)絡(luò)編程的技術(shù),以最少的學(xué)時(shí)讓學(xué)生掌握盡可能多的知識(shí)。
2)學(xué)生動(dòng)手能力差。
這門(mén)課程的工程實(shí)踐性非常強(qiáng),對(duì)學(xué)生使用程序設(shè)計(jì)語(yǔ)言的能力要求非常高。前期的“C#程序設(shè)計(jì)語(yǔ)言”課程中,教師受學(xué)時(shí)限制,往往會(huì)降低難度,在高級(jí)程序設(shè)計(jì)技術(shù)方面介紹較少,大部分學(xué)生只局限于掌握老師上課講的內(nèi)容,不會(huì)課后主動(dòng)花大量時(shí)間深入研究,動(dòng)手調(diào)試程序的能力比較弱,不具備軟件項(xiàng)目開(kāi)發(fā)所需要的各項(xiàng)綜合能力,理論與實(shí)踐嚴(yán)重脫節(jié)。
2 案例教學(xué)的可行性
案例教學(xué)法是指教師根據(jù)教學(xué)內(nèi)容及目標(biāo),通過(guò)創(chuàng)設(shè)案例,組織學(xué)生開(kāi)展分析、研究、表達(dá)等活動(dòng),讓學(xué)生在具體的問(wèn)題情境中積極思考、主動(dòng)探索,從而培養(yǎng)學(xué)生綜合素質(zhì)的一種教學(xué)方法。起初,案例教學(xué)主要應(yīng)用在管理學(xué)、法學(xué)等學(xué)科的課堂教學(xué)中。目前,案例教學(xué)在程序設(shè)計(jì)語(yǔ)言課程中也有很多應(yīng)用,但主要集中在對(duì)一些具體技術(shù)的講解,在案例處理及選擇方面缺乏連續(xù)性,各章節(jié)知識(shí)點(diǎn)的案例相互割裂,無(wú)法體現(xiàn)各知識(shí)點(diǎn)之間的聯(lián)系,在“網(wǎng)絡(luò)程序設(shè)計(jì)”課程中的應(yīng)用仍然較少。
在設(shè)計(jì)網(wǎng)絡(luò)程序時(shí),不再是簡(jiǎn)單的單機(jī)程序,而是由多個(gè)用戶程序互相通信來(lái)實(shí)現(xiàn)。因此,一個(gè)網(wǎng)絡(luò)程序更類(lèi)似于一個(gè)小型項(xiàng)目系統(tǒng)的設(shè)計(jì)。案例教學(xué)對(duì)于幾乎沒(méi)有項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn)的學(xué)生來(lái)說(shuō),是掌握這門(mén)課程的最佳途徑。設(shè)計(jì)好的案例可以將學(xué)生引入特定的情境中,啟發(fā)學(xué)生思考,拓寬學(xué)生分析問(wèn)題的思路,培養(yǎng)學(xué)生解決問(wèn)題的能力、實(shí)際動(dòng)手能力與創(chuàng)新能力,讓學(xué)生最終學(xué)會(huì)網(wǎng)絡(luò)程序的設(shè)計(jì)思想和開(kāi)發(fā)方法,符合“網(wǎng)絡(luò)程序設(shè)計(jì)”這門(mén)課程理論與實(shí)踐并重的基本要求。
3 案例教學(xué)的實(shí)施
本課程內(nèi)容多、學(xué)時(shí)少、工程實(shí)踐要求非常高。因此,在教學(xué)過(guò)程中,要以解決實(shí)際的網(wǎng)絡(luò)程序設(shè)計(jì)問(wèn)題為中心,立足協(xié)議的運(yùn)用,設(shè)計(jì)合理的案例,注重理論與實(shí)踐的緊密結(jié)合。
3.1案例設(shè)計(jì)
在案例設(shè)計(jì)時(shí)要兼顧以下幾點(diǎn):
1)一個(gè)案例中要包含盡可能多的知識(shí)點(diǎn),兼顧知識(shí)點(diǎn)之間的聯(lián)系。例如,設(shè)計(jì)一個(gè)網(wǎng)絡(luò)聊天的案例,由客戶端和服務(wù)器端進(jìn)行通信,功能包含打字聊天、語(yǔ)音對(duì)話、傳送文件等。這個(gè)案例中包含了Socket編程技術(shù),TCP、UDP、FTP協(xié)議編程,以及多線程編程技術(shù)、數(shù)據(jù)流和異常處理機(jī)制等知識(shí)點(diǎn),在這些知識(shí)點(diǎn)和技術(shù)的配合下實(shí)現(xiàn)這個(gè)網(wǎng)絡(luò)聊天系統(tǒng)。
2)在設(shè)計(jì)案例時(shí)要從實(shí)際應(yīng)用的項(xiàng)目中尋找,激發(fā)學(xué)生的學(xué)習(xí)興趣。例如,設(shè)計(jì)一個(gè)網(wǎng)絡(luò)管理的案例,包括ping、主機(jī)掃描、端口掃描、活動(dòng)主機(jī)發(fā)現(xiàn)等功能。這個(gè)案例的功能在“360安全衛(wèi)士”中都有,容易使學(xué)生產(chǎn)生主觀感受,激起開(kāi)發(fā)熱情。
本課程的教學(xué)中,設(shè)計(jì)的案例如表1所示,6個(gè)案例涵蓋了圖1中的所有知識(shí)點(diǎn)。
3.2實(shí)施步驟
設(shè)計(jì)好合理的課程案例后,整個(gè)教學(xué)過(guò)程以案例為主線進(jìn)行,具體的教學(xué)實(shí)施分3個(gè)階段:上課講解、上機(jī)實(shí)踐、總結(jié)評(píng)價(jià)。下面從3個(gè)教學(xué)環(huán)節(jié)具體介紹案例教學(xué)法在整個(gè)授課過(guò)程中的應(yīng)用。
3.2.1上課講解
在理論教學(xué)時(shí),首先通過(guò)案例引出授課內(nèi)容,演示案例的運(yùn)行效果,讓學(xué)生對(duì)案例有個(gè)全局認(rèn)識(shí),引起學(xué)生的興趣。然后,教師以項(xiàng)目開(kāi)發(fā)的方式,對(duì)案例進(jìn)行分析和設(shè)計(jì),以軟件工程的思想畫(huà)出案例的設(shè)計(jì)框圖,為學(xué)生日后進(jìn)行項(xiàng)目開(kāi)發(fā)打下基礎(chǔ)。再針對(duì)案例中涉及的知識(shí)點(diǎn)逐個(gè)進(jìn)行理論講解,將先修課程中的計(jì)算機(jī)網(wǎng)絡(luò)及協(xié)議的理論知識(shí)應(yīng)用于程序設(shè)計(jì)中,讓學(xué)生在網(wǎng)絡(luò)程序設(shè)計(jì)的過(guò)程中進(jìn)一步加深對(duì)理論知識(shí)的理解。在講課時(shí)要注意以下幾點(diǎn):
1)由淺入深、循序漸進(jìn)。
例如,在網(wǎng)絡(luò)聊天案例中,介紹TCP編程的知識(shí)點(diǎn)時(shí),首先結(jié)合TCP協(xié)議的理論,歸納TCP編程的一般步驟;然后以C#語(yǔ)言為例,介紹實(shí)現(xiàn)TCP編程所用到的類(lèi);根據(jù)編程步驟,由C#類(lèi)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的客戶端發(fā)送“hello”消息給服務(wù)器端的小程序,利用投影儀當(dāng)堂演示小程序的編寫(xiě)和調(diào)試。在調(diào)試時(shí),可以故意設(shè)置一些障礙,例如不運(yùn)行服務(wù)器端,故意造成客戶端連接失敗,從而逐步培養(yǎng)學(xué)生的程序調(diào)試能力。同時(shí),可以在此基礎(chǔ)上引申出異常處理這個(gè)知識(shí)點(diǎn),循序漸進(jìn)地引出TCP消息邊界問(wèn)題、多線程編程、數(shù)據(jù)流等知識(shí)點(diǎn)。
2)注意知識(shí)點(diǎn)的融合與比較。
課程設(shè)計(jì)的案例往往包含較多的知識(shí)點(diǎn),要注意不要將知識(shí)點(diǎn)相互孤立,要加強(qiáng)對(duì)這些知識(shí)點(diǎn)的融合和比較aaeW8CcU6iYKW87vdPw7VneFrRZ1uJjUI+8br16pJyo=。例如,在文件傳輸?shù)陌咐?,F(xiàn)TP編程知識(shí)點(diǎn)和數(shù)據(jù)流知識(shí)點(diǎn)就要融合起來(lái)講,不能割裂。在講計(jì)算機(jī)編程時(shí),結(jié)合FTP文件傳輸協(xié)議仔細(xì)講解FTP協(xié)議傳輸?shù)木W(wǎng)絡(luò)數(shù)據(jù)流和文件數(shù)據(jù)流之間的區(qū)別和聯(lián)系,并實(shí)際編寫(xiě)課堂小程序展示兩者之間的關(guān)聯(lián),加深學(xué)生對(duì)這些知識(shí)點(diǎn)的融合與比較。另外,在后面的課程中,介紹網(wǎng)絡(luò)下載案例時(shí),可以與之前的文件傳輸案例進(jìn)行比較,從實(shí)際編程的角度比較分析P2P技術(shù)的文件傳輸與FTP協(xié)議的文件傳輸,并用多臺(tái)機(jī)器配合演示兩個(gè)案例的實(shí)際運(yùn)行效果,讓學(xué)生在掌握P2P技術(shù)與FTP協(xié)議的理論知識(shí)后,從實(shí)際編程項(xiàng)目的角度加深對(duì)理論知識(shí)的理解。
3)理論聯(lián)系實(shí)際、培養(yǎng)動(dòng)手能力。
在理論課講授過(guò)程中注意理論知識(shí)的講授與程序的編程、調(diào)試的演示要交叉進(jìn)行,給學(xué)生一個(gè)良好的起點(diǎn),激發(fā)學(xué)生自己動(dòng)手的興趣。在講課時(shí)要注意控制好節(jié)奏,留給學(xué)生一定的思考時(shí)間與空間;在編程或調(diào)試的過(guò)程中要不斷地拋出問(wèn)題,引導(dǎo)學(xué)生思考、分析和討論,從而幫助學(xué)生逐漸增強(qiáng)在編程時(shí)分析問(wèn)題、解決問(wèn)題的能力。由于講課課時(shí)有限,對(duì)每個(gè)案例不可能都盡善盡美地在課堂上講解調(diào)試完成,因此,每節(jié)課結(jié)束后都要留幾個(gè)問(wèn)題,讓學(xué)生課后去思考,主動(dòng)查找資料完善程序,然后在上機(jī)實(shí)踐環(huán)節(jié)中編程調(diào)試。學(xué)生上機(jī)的內(nèi)容,由傳統(tǒng)的驗(yàn)證型編程改為綜合型、設(shè)計(jì)型項(xiàng)目的編程。這樣可以引導(dǎo)學(xué)生的發(fā)散性思維,進(jìn)一步激發(fā)學(xué)生的學(xué)習(xí)興趣,讓學(xué)生課后主動(dòng)探索,尋找問(wèn)題的解決方案。
3.2.2上機(jī)實(shí)踐
在程序設(shè)計(jì)類(lèi)課程中,上機(jī)實(shí)踐環(huán)節(jié)是必不可少的。讓學(xué)生親自動(dòng)手編程,學(xué)會(huì)程序的分析、設(shè)計(jì)、編程以及調(diào)試,提高實(shí)際動(dòng)手的能力。本門(mén)課程涉及比較難的程序設(shè)計(jì)內(nèi)容,在調(diào)試程序時(shí)又需要多個(gè)通信主機(jī)配合,因此,在上機(jī)實(shí)踐環(huán)節(jié),可以打破傳統(tǒng),由3~4個(gè)學(xué)生組成一個(gè)小組,共同完成每個(gè)案例的編程調(diào)試,這樣做有幾個(gè)優(yōu)點(diǎn):
1)增強(qiáng)團(tuán)隊(duì)意識(shí),提高上機(jī)效率。
學(xué)生的動(dòng)手能力參差不齊,有的善于查找資料,有的善于編寫(xiě)代碼,有的善于程序測(cè)試等。讓他們3~4人組成一個(gè)小組,由組長(zhǎng)帶領(lǐng),發(fā)揮各人的特長(zhǎng),共同討論,互幫互助,相互配合,可以在有限的上機(jī)課時(shí)中更好地完成案例內(nèi)容,提高上機(jī)的效率。
2)激發(fā)學(xué)生的編程興趣和斗志。
傳統(tǒng)的上機(jī)課時(shí)有限,上機(jī)內(nèi)容一般是每個(gè)學(xué)生獨(dú)立完成,而網(wǎng)絡(luò)程序設(shè)計(jì)的編程、調(diào)試難度比較大,大部分動(dòng)手能力差的學(xué)生遇到錯(cuò)誤無(wú)法找到出錯(cuò)的地方,產(chǎn)生極大的失落感,慢慢地就失去了對(duì)網(wǎng)絡(luò)程序設(shè)計(jì)的開(kāi)發(fā)熱情。采用小組合作的方式,小組內(nèi)成員互相探討共同完成一個(gè)項(xiàng)目的開(kāi)發(fā),容易產(chǎn)生成就感,激發(fā)編程的興趣。小組之間還可以互相競(jìng)爭(zhēng),比比看誰(shuí)的系統(tǒng)更好,這樣,又避免了上機(jī)抄襲的現(xiàn)象,比傳統(tǒng)的獨(dú)立完成驗(yàn)證型實(shí)驗(yàn)?zāi)苁盏礁玫男Ч?/p>
3.2.3總結(jié)評(píng)價(jià)
在每個(gè)案例的上機(jī)實(shí)踐環(huán)節(jié)結(jié)束后,要求每個(gè)小組撰寫(xiě)提交實(shí)踐總結(jié)報(bào)告,內(nèi)容包括:案例的功能描述、總體設(shè)計(jì)思路與框圖、詳細(xì)設(shè)計(jì)、問(wèn)題及解決方案、編程技巧與心得體會(huì)等。撰寫(xiě)總結(jié)報(bào)告一來(lái)是對(duì)每個(gè)案例的總結(jié)與回顧,加深學(xué)生對(duì)案例及相關(guān)理論知識(shí)的理解;二來(lái)是為日后撰寫(xiě)畢業(yè)設(shè)計(jì)論文做準(zhǔn)備,鍛煉學(xué)生的寫(xiě)作能力。
在最后評(píng)定成績(jī)時(shí),不再以傳統(tǒng)的卷面考試方式來(lái)評(píng)判,而是結(jié)合同學(xué)們的理論和實(shí)踐能力,綜合考評(píng),成績(jī)以?xún)?yōu)、良、中、及格、不及格5個(gè)級(jí)別給出。因?yàn)樯蠙C(jī)實(shí)踐是以小組的形式進(jìn)行的,因此在考評(píng)時(shí)也以小組為單位進(jìn)行考核。在此基礎(chǔ)上,綜合考量每個(gè)學(xué)生在小組中的角色和工作量的多少,最終評(píng)定出每個(gè)同學(xué)的成績(jī)。
3.3效果分析
“網(wǎng)絡(luò)程序設(shè)計(jì)”課程選擇具有啟發(fā)性、典型性且來(lái)源于實(shí)際的案例,將理論知識(shí)應(yīng)用于具體的編程實(shí)踐,讓學(xué)生在上機(jī)編程的過(guò)程中進(jìn)一步體會(huì)理論知識(shí),提高了學(xué)生的學(xué)習(xí)興趣和學(xué)習(xí)主動(dòng)性。在上機(jī)實(shí)踐環(huán)節(jié)以小組形式加強(qiáng)互助合作,增強(qiáng)編程成就感的同時(shí),提高了學(xué)生的編程、調(diào)試能力,培養(yǎng)了學(xué)生分析問(wèn)題、解決問(wèn)題的能力和進(jìn)一步學(xué)習(xí)新的網(wǎng)絡(luò)編程知識(shí)與技術(shù)的能力。
4 結(jié)語(yǔ)
在“網(wǎng)絡(luò)程序設(shè)計(jì)”這門(mén)課程中采用案例教學(xué)的方式,是一次有益的嘗試。讓教師在有限的課堂教學(xué)時(shí)間里講授更多的知識(shí)點(diǎn),將理論與實(shí)踐更緊密結(jié)合,促進(jìn)學(xué)生構(gòu)建良好的知識(shí)體系;在上機(jī)實(shí)踐環(huán)節(jié)采用小組方式,充分發(fā)揮學(xué)生的主觀能動(dòng)性,增強(qiáng)學(xué)生的動(dòng)手能力、寫(xiě)作能力,有效地解決了以往教學(xué)中存在的學(xué)時(shí)少、學(xué)生動(dòng)手能力差、理論與實(shí)踐脫節(jié)等教學(xué)難題,取得了良好的教學(xué)效果,對(duì)規(guī)范網(wǎng)絡(luò)工程專(zhuān)業(yè)“網(wǎng)絡(luò)程序設(shè)計(jì)”課程的教學(xué)和實(shí)踐具有重要的指導(dǎo)意義。
(見(jiàn)習(xí)編輯:劉麗麗;編輯:郭田珍)