區(qū)鐵毅
摘要:任務(wù)驅(qū)動(dòng)教學(xué)法是以任務(wù)為載體,把知識(shí)點(diǎn)融入任務(wù)中的一種教學(xué)方法。應(yīng)用任務(wù)驅(qū)動(dòng)教學(xué)法,在課程實(shí)訓(xùn)中令學(xué)生依照實(shí)訓(xùn)任務(wù)實(shí)現(xiàn)現(xiàn)實(shí)項(xiàng)目中可以用到的技術(shù),在課堂管理引導(dǎo)之下,可有效地提高多數(shù)學(xué)生對(duì)學(xué)習(xí)編程的熱情。采用任務(wù)驅(qū)動(dòng)教學(xué)法,結(jié)合Java應(yīng)用開(kāi)發(fā)課程實(shí)踐,講授Java封裝、繼成、多態(tài)、接口、異常、文件系統(tǒng)操作和線程等知識(shí)點(diǎn),能獲得較好的教學(xué)效果。
關(guān)鍵詞:Java應(yīng)用開(kāi)發(fā);任務(wù)驅(qū)動(dòng)教學(xué)法
1. 任務(wù)驅(qū)動(dòng)教學(xué)法
任務(wù)驅(qū)動(dòng)教學(xué)法是以任務(wù)為載體,把知識(shí)點(diǎn)融入任務(wù)中的一種教學(xué)方法。學(xué)生通過(guò)對(duì)任務(wù)進(jìn)行分析、合作和討論,遵循一定的規(guī)律完成任務(wù)。學(xué)生通過(guò)完成任務(wù)了解和掌握知識(shí),并將所學(xué)知識(shí)進(jìn)行歸納抽象乃至內(nèi)化。設(shè)計(jì)任務(wù)要充分考慮學(xué)生個(gè)體學(xué)習(xí)能力的差異、學(xué)生現(xiàn)有知識(shí)水平等因素,設(shè)計(jì)層次遞進(jìn)的任務(wù)。任務(wù)難度要適合學(xué)生的認(rèn)知發(fā)展規(guī)律,應(yīng)需要學(xué)生付出一定的努力才能完成。任務(wù)應(yīng)緊緊圍繞教學(xué)目標(biāo)進(jìn)行設(shè)計(jì)。要根據(jù)人才培養(yǎng)方案和課程標(biāo)準(zhǔn)設(shè)計(jì)難易適中的任務(wù)。任務(wù)要與課程內(nèi)容密切相關(guān)。運(yùn)用任務(wù)驅(qū)動(dòng)教學(xué)法的目的是使學(xué)生在完成任務(wù)過(guò)程中盡可能以較高參與度來(lái)掌握知識(shí)。
應(yīng)用任務(wù)驅(qū)動(dòng)教學(xué)法,在課程實(shí)訓(xùn)中令學(xué)生依照實(shí)訓(xùn)任務(wù)實(shí)現(xiàn)現(xiàn)實(shí)項(xiàng)目中可以用到的技術(shù),在課堂管理引導(dǎo)之下,可有效地提高多數(shù)學(xué)生對(duì)學(xué)習(xí)編程的熱情。教師依據(jù)每個(gè)教學(xué)知識(shí)點(diǎn)設(shè)計(jì)案例任務(wù),在教學(xué)過(guò)程展開(kāi)之前需要精心地準(zhǔn)備相應(yīng)的教學(xué)知識(shí)點(diǎn),將教學(xué)內(nèi)容融入到一個(gè)個(gè)小而精的案例任務(wù)中,由項(xiàng)目需求出發(fā),為實(shí)現(xiàn)滿足需求的功能引出教學(xué)內(nèi)容,讓學(xué)生帶著好奇心去學(xué)習(xí),堅(jiān)持以學(xué)生為主體的教學(xué)理念,激發(fā)學(xué)生的學(xué)習(xí)積極性。學(xué)生帶著項(xiàng)目的功能需求為依據(jù)來(lái)學(xué)習(xí),在學(xué)習(xí)過(guò)程中理解所學(xué)的知識(shí)點(diǎn)可以去解決哪一類型的工程問(wèn)題,相對(duì)更能代入未來(lái)的職業(yè)角色。新時(shí)代學(xué)生接觸電子設(shè)備通常較早,而傳統(tǒng)而純粹的案例教學(xué)法較難足夠引起學(xué)生的學(xué)習(xí)興趣。
2. 課程與任務(wù)驅(qū)動(dòng)教學(xué)法的聯(lián)系
在Java應(yīng)用開(kāi)發(fā)課程中,關(guān)鍵的概念便是面向?qū)ο蟮姆庋b、繼承與多態(tài)。封裝主要以方法、類和包三個(gè)層次進(jìn)行可見(jiàn)性限定,而可見(jiàn)性共有四種,自廣而微分別為public(包)、protected(保護(hù))、包可見(jiàn)和private(私有)。在講授的過(guò)程中,適度引入對(duì)軟件工程“高內(nèi)聚、低耦合”目標(biāo)的概要介紹。在實(shí)踐課以任務(wù)的形式,給出以Java方法、二維數(shù)組和可見(jiàn)性為主要應(yīng)用涉及的知識(shí)點(diǎn)的實(shí)訓(xùn)任務(wù),布置封裝一個(gè)能類表示三階行列式的類,并在該類中實(shí)現(xiàn)一個(gè)以對(duì)角線展開(kāi)法解三階行列式的值的方法。其中,二維數(shù)組不應(yīng)讓外界輕易修改,故應(yīng)設(shè)置為私有并利用IDE中的代碼生成器生成公有的setter和getter,并應(yīng)在setter中作數(shù)據(jù)輸入的合規(guī)校驗(yàn),而getter中可進(jìn)行訪問(wèn)權(quán)限的檢查,必要禁止訪問(wèn)是可返回null或拋出異常。并布置學(xué)生課后以利用求代數(shù)余子式和的方式封裝一個(gè)方法用于求解三階行列式值的問(wèn)題。
在有關(guān)輸入輸出和文件系統(tǒng)讀寫的方面,結(jié)合阿里巴巴出品的fastjson包以配置文件寫入作為任務(wù)令學(xué)生完成。在實(shí)訓(xùn)過(guò)程中,學(xué)生除了要認(rèn)識(shí)經(jīng)典的字節(jié)流和字符流的概念,同時(shí)也可以結(jié)合數(shù)組的靈活運(yùn)用作出能作為實(shí)際工程項(xiàng)目的組件。
將需求給到學(xué)生,學(xué)生依據(jù)課堂所講知識(shí)進(jìn)行詳細(xì)設(shè)計(jì)和編碼調(diào)試程序,測(cè)試模塊功能。在這個(gè)過(guò)程中多數(shù)學(xué)生的參與度較高,尤其是有關(guān)多線程的知識(shí)點(diǎn)的學(xué)習(xí)過(guò)程中同時(shí)可回顧面向?qū)ο蠖鄳B(tài)的特性,亦可了解對(duì)Thread類進(jìn)行實(shí)例化和利用Runnable接口實(shí)現(xiàn)多個(gè)線程。在此過(guò)程中學(xué)生除了習(xí)得線程相關(guān)的知識(shí),還能溫習(xí)到接口的作用,是對(duì)學(xué)過(guò)的內(nèi)容的有機(jī)整合,是能讓學(xué)生對(duì)昔日學(xué)過(guò)的知識(shí)點(diǎn)靈活運(yùn)用的活動(dòng)。
在異常處理相關(guān)的知識(shí)點(diǎn)相關(guān)的任務(wù)設(shè)計(jì)上,該任務(wù)首先表明了異常本身也是一種類。其次,在可能有異常拋出的語(yǔ)句上,應(yīng)當(dāng)至少以try-catch結(jié)構(gòu)進(jìn)行包裹,或在方法簽名處標(biāo)明throws Exception。并且在任務(wù)中對(duì)拋出異常和將異常向上層拋出特別說(shuō)明“throw”和“throws”關(guān)鍵字的區(qū)別。
在網(wǎng)絡(luò)編程有關(guān)的知識(shí)點(diǎn)方面設(shè)計(jì)的項(xiàng)目任務(wù)可以結(jié)合多線程進(jìn)行練習(xí)。同一個(gè)程序在分別作為服務(wù)端和客戶端時(shí),可分別監(jiān)聽(tīng)和連接一對(duì)或多對(duì)端口以進(jìn)行消息傳輸,并且在講解項(xiàng)目任務(wù)的過(guò)程中帶入計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)中有關(guān)OSI/RM和TCP/IP協(xié)議棧的基礎(chǔ)知識(shí)點(diǎn),并穿插講授InetAddress類的實(shí)例化對(duì)象的使用場(chǎng)景。進(jìn)而帶入基于Socket類和ServerSocket類的TCP通信和基于DatagramSocket類和DatagramPacket類的UDP通信的知識(shí)點(diǎn),并進(jìn)行對(duì)比。并在實(shí)訓(xùn)機(jī)房中讓學(xué)生在同一個(gè)子網(wǎng)中兩兩結(jié)對(duì)進(jìn)行消息相互傳送,該次實(shí)訓(xùn)任務(wù)實(shí)施之課堂多數(shù)學(xué)生能享受實(shí)現(xiàn)可相互傳輸消息的應(yīng)用之成果之樂(lè)趣。
在“云計(jì)算技術(shù)與應(yīng)用”開(kāi)設(shè)“Java程序開(kāi)發(fā)項(xiàng)目實(shí)訓(xùn)”實(shí)踐課上,則在基于多線程和網(wǎng)絡(luò)編程相關(guān)知識(shí)為基礎(chǔ),結(jié)合實(shí)現(xiàn)基于Swing的GUI作為期末大作業(yè),令學(xué)生完成圖形化的局域網(wǎng)消息傳遞工具軟件。多數(shù)學(xué)生能較好地完成該實(shí)訓(xùn)任務(wù),完成過(guò)程中給出充分的參考資料,包括DevDocs API Documentation(https://devdocs.io/)中所含關(guān)于Swing各組件的說(shuō)明,一定程度上亦鍛煉學(xué)生查找資料的能力。
結(jié)語(yǔ):
在Java應(yīng)用開(kāi)發(fā)課程中應(yīng)用任務(wù)驅(qū)動(dòng)教學(xué)法,對(duì)比案例講授法確能一定程度上切實(shí)地提高學(xué)生對(duì)課程內(nèi)容的興趣和參與度。在應(yīng)用該教學(xué)法的過(guò)程需要應(yīng)對(duì)學(xué)生的具體學(xué)習(xí)情況有針對(duì)性地設(shè)計(jì)項(xiàng)目任務(wù),并應(yīng)盡可能使各任務(wù)難度形成梯度,并在課程中后期的任務(wù)中盡可能融合課程前期的知識(shí)點(diǎn),并應(yīng)讓學(xué)生適時(shí)歸納總結(jié),課程后期的課程項(xiàng)目任務(wù)應(yīng)盡可能覆蓋較多知識(shí)點(diǎn)并應(yīng)有一定的現(xiàn)實(shí)意義和有基本的工程應(yīng)用價(jià)值,最好能形成學(xué)生簡(jiǎn)歷上的實(shí)際項(xiàng)目經(jīng)驗(yàn)。
參考文獻(xiàn):
[1]任務(wù)驅(qū)動(dòng)教學(xué)法在通用技術(shù)課程教學(xué)中的運(yùn)用,王金藤
[2]單機(jī)版記憶游戲的設(shè)計(jì)與實(shí)現(xiàn)——Java語(yǔ)言任務(wù)驅(qū)動(dòng)教學(xué)法應(yīng)用案例,周敏
[3]任務(wù)驅(qū)動(dòng)教學(xué)法在商務(wù)英語(yǔ)專業(yè)課程教學(xué)中的運(yùn)用——以綜合英語(yǔ)課程為例,杜麗紅