蔣宗華
摘要:一些計算機類課程涉及協(xié)議等復雜內(nèi)容,即使是一個功能模塊,也難以在一次教學中完成原理的講解和項目的開發(fā)。該文提出了微模塊的方法,通過從模塊中凝練出一些微模塊,基于微模塊進行任務驅動式教學。由于微模塊的工作量合適,大多數(shù)同學在教師講解基本原理后能完成開發(fā),能及時鞏固相關知識、提高學習興趣和創(chuàng)新能力。教師給出微模塊的功能要求,提供底層函數(shù)、幀結構、寄存器說明等,提高學生的開發(fā)效率。該文給出了微模塊的具體實施方法和案例,該方法能適合涉及內(nèi)容較復雜的課程的教學。
關鍵詞:模塊;微模塊;任務驅動教學;教學模式;計算機網(wǎng)絡;物聯(lián)網(wǎng)
中圖分類號:G642. 0 文獻標識碼:A 文章編號:1009-3044(2018)19-0135-03
Abstract: Some computer courses involve complex content such as protocol, even if it is a functional module, it is difficult to complete the explanation of the principle and the development of the project in one teaching. In this paper, a method of micro module is proposed, some micro modules can be extracted from the module and task driven teaching can be carried on based on those micro ones. Because the workload of the micro module is suitable, most of the students can complete the development after the teachers explain the basic principles. It can consolidate the relevant knowledge, improve the learning interest and innovation ability in time. The teacher gives the functional requirements of the micro module, and provides the bottom function, frame structure and register instructions, so as to improve the development efficiency of students. This paper gives specific implementation methods and a case of micro module, which is suitable for teaching courses with complicated contents.
Key words: module; micro module; task driving teaching; teaching mode; computer network; Internet of things
1 引言
在計算機類課程的教學過程中,基于模塊的任務驅動教學法通過讓學生實現(xiàn)功能模塊來驅動學習,任務明確,能激發(fā)學生的學習興趣,發(fā)揮學習的主動性,有利于提高學生的創(chuàng)新能力[1][2]。
然而隨著計算機技術,特別是計算機網(wǎng)絡、物聯(lián)網(wǎng)的發(fā)展[3][4],軟件編程有的需要基于相關協(xié)議、器件說明文檔等,涉及內(nèi)容多,在一次課堂教學或實驗教學中,學生難以編寫完一個任務模塊,而課后的模塊設計和編寫由于缺少教師的指導,學習效率低。如何在一次教學中,在教師的指導下,讓學生高效地完成一個模塊的理論學習、軟件編寫和調(diào)試、體驗軟件運行效果,對提高學生的學習自信、學習興趣和學習效果有比較重要的作用。
基于微模塊的任務驅動能較好地適合課堂教學和實驗教學,一個微模塊對應的代碼較少,可能只有幾行或幾十行,但會涉及較多的理論和協(xié)議等,需要教師講解相關理論和技術并整理,作為注釋或附加文檔,學生在此基礎上設計和編寫軟件。通過模塊的微型化,并且提供相關底層函數(shù)、相關寄存器的概要說明等,使學生能在一次教學活動中較獨立地完成整個過程,及時鞏固相關理論和技術。同時通過提供除該微模塊外的完整軟件,讓微模塊能在整個系統(tǒng)中運行,有助于學生掌握該模塊和其他模塊的關系和在整個系統(tǒng)中的作用,同時能獲得成功的體驗,提升學習興趣。學生通過綜合相關知識積極參與微模塊開發(fā),能提高學生自主學習能力和自主開發(fā)能力,提升創(chuàng)新思維和創(chuàng)新能力。
2 微模塊任務驅動教學模式
2.1 微模塊任務驅動教學模式的優(yōu)點
2.1.1 充分發(fā)揮學生學習的主體性
在微模塊任務的開發(fā)中,教師指導處輔助地位,學生開發(fā)處主體地位,從而能充分調(diào)動學生的積極性[5]。在開發(fā)過程中,學生會認真研究微模塊中給出的相關知識和基本函數(shù),有時會進一步查閱相關知識和文檔、主動和同學討論和向教師提問,不但鞏固了相關知識、提高了開發(fā)能力,同時也逐漸養(yǎng)成研究型學習方式,培養(yǎng)了學生的創(chuàng)新能力。
2.1.2 工作量合適,能及時鞏固相關知識、提高學生的學習興趣和創(chuàng)新能力
如果學習較多的基本知識后再進行模塊或項目的開發(fā),這些基本知識往往沒能及時得到鞏固,難以使用它們進行較為深入的開發(fā)。另外,涉及知識較多時也會快速提高軟件開發(fā)的復雜度,對一個較大的功能,學生可能不知道運用那些知識去設計軟件。
微模塊任務驅動能在短時間內(nèi)完成基本知識的講解、給出微模塊的條件和任務并讓學生完成開發(fā)。微模塊軟件開發(fā)所用知識集中在當時講解的基本知識,覆蓋性好,學生印象深。由于知識較為集中,降低了開發(fā)難度,學生有可能對該微模塊進行較為深入的開發(fā)。
由于設計的微模塊會使多數(shù)同學能在規(guī)定時間內(nèi)完成開發(fā),剩下的少數(shù)學生在同學或教師的少量幫助下,也基本上能完成開發(fā)任務,從而克服了學生對復雜程序的畏難情緒。將微模塊放到教師提供的系統(tǒng)軟件中,整個系統(tǒng)能運行起來,學生的短時間開發(fā)就能讓整個系統(tǒng)運行起來,這進一步提升了學生的成就感和學習興趣,他們甚至會急與開發(fā)下一個微模塊。在整個系統(tǒng)的運行過程中,較容易找出微模塊隱藏的錯誤,通過糾錯,能幫助學生理解本微模塊的原理和在整個系統(tǒng)中的作用,不但對從微觀上對微模塊有比較深入的理解,也從宏觀上對模塊之間的關系和整個系統(tǒng)也有較全面的了解。
2.1.3 充分發(fā)揮教師的主導性,提高學習效率
由于模塊的編寫涉及的知識較多,到了程序設計環(huán)節(jié),學生查找相關文檔要花費較多時間,程序設計難度大,耗時多。對于微模塊,如果教師在知識講解后,再把該微模塊需要的相關知識凝練出來,一方面能重點突出,同時能加快學生的開發(fā)速度,大大提高學生的開發(fā)效率。通過提供除該微模塊外的整個系統(tǒng)軟件,學生設計的微模塊能在系統(tǒng)中運行,學生更容易發(fā)現(xiàn)設計錯誤,提高了軟件調(diào)試效率。
2.1.4 目標明確,易于評價
由于微模塊功能較為簡單,目標明確,一般能現(xiàn)場完成,容易形成較客觀評價標準,方便了教師對學生的評價,使得平時成績的考核更具有可操作性。對知識點的掌握程度將直接影響微模塊的開發(fā),并且能得到及時評價,從而促進了學生積極學習、積極實踐,形成良好的學習氛圍。
2.2 微模塊的構建
2.2.1 項目整體功能的設計
根據(jù)教學內(nèi)容,設計出能較好地涵蓋相關章節(jié)知識,開發(fā)難度和開發(fā)時間合適的項目,一般每個章節(jié)或內(nèi)聚性較強的幾個章節(jié)設計一個項目。選取的項目注重結合新技術,注重能較好地培養(yǎng)學生的創(chuàng)新能力,減少驗證性內(nèi)容,增加學生自主設計的內(nèi)容。精心選取相關講解內(nèi)容,注重啟發(fā)學生思考,在基本知識學習時就強調(diào)學生學習的主體性,通過討論等方式促進學生主動學習,努力培養(yǎng)學生自主學習、研究性學習的能力,使得學生在基本知識學習時就”躍躍欲試”想進行相關模塊的開發(fā)。
給出項目的目的、主要知識點、整體功能、模塊劃分以及和其他項目的關系等。教師課前進行項目的設計、編寫和調(diào)試,形成經(jīng)過反復測試的項目的源代碼。通過項目的開發(fā),教師更加熟悉開發(fā)過程中的常見問題,在知識講解時能重點加強,同時當學生開發(fā)時遇到問題也能快速解決。教師開完成項目設計后再次評估開發(fā)難度和開發(fā)時間,并對項目的設計進行必要的調(diào)整。
2.2.2 微模塊的提取
將項目的模塊進行進一步劃分,精心選取和設計一些微模塊,這些微模塊應該能較好地覆蓋相關知識點,重點突出,代碼量合適,在學生的能力范圍內(nèi),大多數(shù)學生在課堂上能夠完成。并不需要將一個功能模塊劃分成多個微模塊,只要選取和設計較少的幾個微模塊即可,模塊的其他部分將提供給學生測試用,只要學生將微模塊的代碼加入則整個模塊便可以運行。微模塊主要對應關鍵原理和方法,同時微模塊的設計應該能較好地培養(yǎng)學生的創(chuàng)新思維和創(chuàng)新能力。微模塊要和相關文檔結合起來,培養(yǎng)學生閱讀相關原理和協(xié)議的文檔的能力,這對創(chuàng)新能力的培養(yǎng)是非常重要的,相關文檔由教師給出或提供相關主題由學生通過網(wǎng)絡或圖書館獲取。教師給出微模塊的功能、它在模塊中的作用以及和其他模塊的關系,形成較為明確的規(guī)格說明。
2.2.3 微模塊的基礎知識注釋
課堂學習時間短,學生難以在短時間內(nèi)完全掌握相關原理和協(xié)議,難以快速界定微模塊所需知識并在文檔中找到對應知識點。對微模塊,教師整理出相關基礎知識,包括原理、算法、協(xié)議的數(shù)據(jù)區(qū)等相關區(qū)域的值對應的含義、協(xié)議區(qū)的計算方法等,便于同學提高開發(fā)效率。對于有些較長或需要詳細了解的知識點,可以指出相關參考文檔的頁碼。根據(jù)微模塊的難度,教師給出不同層次的微模塊流程圖,有的只給主流程圖,有的給出部分子流程圖,有的只給出功能需求說明和原理,不給流程圖。在開發(fā)時間可控的前提下,盡量提高學生自主開發(fā)的比例。
2.2.4 采用合作開發(fā)等方法提高學習效果
根據(jù)微模塊的難度和學生的開發(fā)能力,決定讓學生獨立開發(fā)還是獨立開發(fā)和小組開發(fā)相結合。對于代碼較少的微模塊,提倡學生獨立開發(fā)從而提高獨立開發(fā)能力,對難度較大的微模塊采用獨立開發(fā)和小組開發(fā)相結合,可以讓能力強一些的同學幫助弱一些的同學,同時能提高同學的協(xié)作開發(fā)能力。鼓勵同學討論,包括設計過程中的討論和糾錯過程中的討論,很多問題會隨著學生一邊開發(fā)一邊討論而逐漸明晰。
除了在一個模塊中選取較少的微模塊外,另一種方法是對模塊選取較多的微模塊,將學生分成學習小組[6],小組內(nèi)結對開發(fā),每兩名學生開發(fā)一個微模塊,小組共同完成一個模塊的開發(fā),充分發(fā)揮兩人合作學習以及小組合作學習的優(yōu)勢。在微模塊的調(diào)試和運行方面,首先將微模塊代碼加到教師給出的模塊中調(diào)試,各微模塊調(diào)試成功后,小組成員介紹各自微模塊的功能和主要開發(fā)過程,再將小組的各微模塊和成一個模塊,進行集成測試,小組成員共同調(diào)試和討論,從而能讓學生接觸更多微模塊的開發(fā),提高學習效率,發(fā)揮團隊合作優(yōu)勢。
2.2.5 微模塊開發(fā)經(jīng)典方法和反例的整理
學生開發(fā)后,教師對該微模塊的經(jīng)典開發(fā)方法進行點評,對常見的反例,特別是班級學生犯的較多的錯誤進行講解,分析出錯的原因,包括基本理論錯、算法錯、協(xié)議錯、編程錯等。對微模塊開發(fā)經(jīng)典方法的點評和反例的講解一般分為開發(fā)中期和后期兩個階段,其中以開發(fā)中期為主,可以較好地提高后期的開發(fā)效率,使得大多數(shù)同學能完成開發(fā)、提高開發(fā)的質量并在開發(fā)中能更好地鞏固知識點。教師對學生開發(fā)中遇到的常見困難和反例等進行積累和整理,提高對學生的開發(fā)過程的預見性,調(diào)整教學方法和教學內(nèi)容的時間分配,快速解決學生開發(fā)過程中的問題,同時對學生的開發(fā)過程進行預見性指導。
2.2.6 全功能運行和體驗
指導學生將微模塊加入整個模塊或項目中,觀察運行效果、理解程序功能,分析該微模塊所起的作用,分析和理解相關模塊的功能以及和本微模塊的關系,在全功能背景下理解各模塊、微模塊的功能關系,理解項目的總體功能的設計和微模塊的設計,理解相關微模塊的設計使用了哪些知識點,提高對相關理論和技術的理解深度。項目的全功能運行能提高學生的學習興趣,并對后繼章節(jié)的知識和功能模塊起到了預習的作用。
2.3 微模塊任務驅動案例
2.3.1 微模塊名稱
通過射頻識別讀寫芯片RC522讀卡序列號(防沖突階段)。
2.3.2 提供函數(shù)
1) 讀RC522寄存器。輸入:寄存器地址,輸出:寄存器值。
2) 寫RC522寄存器。輸入:寄存器地址、待寫入值。
3) 通過空中接口發(fā)送和接收數(shù)據(jù)。輸入:待發(fā)送數(shù)據(jù)、發(fā)送數(shù)據(jù)長度(以字節(jié)為單位)。
2.3.3 輸出
卡序列號、序列號位長度(以位為單位),函數(shù)返回0表示正確接收到數(shù)據(jù)。
2.3.4相關寄存器[7]
1) Status2Reg:狀態(tài)寄存器2,地址08h,默認值00h。
位3(MFCrypto1On),該位設為1將使得所有和Mifare卡的通訊被加密,僅在成功執(zhí)行MfAuthent(認證)時被置位,應該通過軟件清零。
2) FramingReg:面向位的幀寄存器,地址0Dh , 默認值 00h。
位7(startsend),置為1將發(fā)送輸入輸出緩沖區(qū)的數(shù)據(jù)。
位6-位5(RxAlign),定義接收到的第一位放在輸入輸出緩沖區(qū)中的什么位置。
位2-位0(TxLastBits),定義最后一個字節(jié)發(fā)送多少位,0代表最后一個字節(jié)都發(fā)送。
3) CollReg:沖突寄存器,地址0Eh , 默認值不定。
位 7(ValueAfterColl),置為0則當發(fā)生沖突時,正在接收的所有位將被清零。該位僅在106kb/s防沖突階段使用,否則應該置1。
2.3.4 流程[8]
設置好相關寄存器后,在RC522輸入輸出緩沖區(qū)填入防沖突命令字(93h)和發(fā)送數(shù)據(jù)字節(jié)數(shù)(20h,表示發(fā)送2個字節(jié),即命令字和字節(jié)數(shù),沒有發(fā)送卡序列號的任何部分),通過空中接口發(fā)送后,如果近場有卡并無沖突,接收到的卡序列號(4個字節(jié))將存在輸入輸出緩沖區(qū)中,讀取出該序列號并保存到數(shù)組cardSerialNO中,供以后各階段用。
2.3.5 相關微模塊
前驅微模塊:卡請求,如果近場有卡將返回卡的類型。
后繼微模塊:選擇卡、認證、讀卡數(shù)據(jù)等。
3 結論
微模塊目標明確,規(guī)模合適,對一些涉及內(nèi)容較復雜的計算機類課程,微模塊任務驅動教學能在一次教學中高效完成原理講解和微模塊開發(fā),提升學生的學習興趣和創(chuàng)新能力。給出了微模塊的具體實施方法和案例,下一步在更多的課程教學中實施并改進。
參考文獻:
[1] 李蕾,方明科.任務驅動教學法在計算機網(wǎng)絡課程教學中的應用[J].電腦知識與技術,2015,11(25):75-76.
[2] 郭銀章,王麗芳. 基于項目任務驅動的C語言程序設計課程教學[J].改革與實踐計算機教育,2017(2):41-44.
[3] 謝希仁.計算機網(wǎng)絡(第六版)[M].北京:電子工業(yè)出版社, 2013.
[4] 高建良,賀建飚. 物聯(lián)網(wǎng)RFID原理與技術[M].北京:電子工業(yè)出版社,2017.
[5] 楊斌,等.美國大學IPSP 課程混合式翻轉課堂分析與啟示[J].中國電化教育,2015(337):118-122, 128.
[6] 曲凌.任務驅動的小組教學法在實踐教學中應用[J].實驗室研究與探索,2014,33(6):200-203.
[7] NXP. MFRC522 datasheet[EB/OL]. https://www.nxp.com/docs/en/data-sheet/MFRC522.pdf?fsrch=1&sr;=2&pageNum;=1.
[8] 王愛英.智能卡技術(第四版)——IC卡、RFID標簽與物聯(lián)網(wǎng)[M].北京:清華大學出版社,2015.