趙晉陵
摘要:針對傳統(tǒng)c++程序設(shè)計與學(xué)科專業(yè)特點脫節(jié)的現(xiàn)象,重點討論c++程序設(shè)計在遙感影像處理中的教學(xué)特點,提出從教學(xué)方法、教學(xué)內(nèi)容和實踐環(huán)節(jié)3個方面革新現(xiàn)有物聯(lián)網(wǎng)工程專業(yè)c++課程教學(xué)體系,對提高課程的教學(xué)效果具有重要的指導(dǎo)和借鑒意義。
關(guān)鍵詞:物聯(lián)網(wǎng)工程;遙感影像處理;教學(xué)改革;c++程序設(shè)計
1、背景
物聯(lián)網(wǎng)(The Intemet ofThings)作為21世紀(jì)我國戰(zhàn)略性新興產(chǎn)業(yè),有著廣闊的應(yīng)用領(lǐng)域和巨大的市場需求?!段锫?lián)網(wǎng)“十二五”發(fā)展規(guī)劃》圈定9大領(lǐng)域重點示范工程,包括智能工業(yè)、智能農(nóng)業(yè)、智能物流、智能交通、智能電網(wǎng)、智能環(huán)保、智能安防、智能醫(yī)療、智能家居。作為培養(yǎng)物聯(lián)網(wǎng)應(yīng)用技術(shù)專業(yè)人才的學(xué)科,物聯(lián)網(wǎng)工程專業(yè)在20:10年被教育部批準(zhǔn)成立。物聯(lián)網(wǎng)涉及的研究與應(yīng)用領(lǐng)域非常廣泛,如何在高校的教學(xué)實踐環(huán)節(jié)中設(shè)置與高校特色相匹配的課程體系,成為我們必須考慮的首要問題。作為智慧地球應(yīng)用可持續(xù)發(fā)展的技術(shù)保障,GNSS(GlobalNavigation Satellite System,衛(wèi)星導(dǎo)航,地理信息,遙感)與物聯(lián)網(wǎng)結(jié)合被用于多個專業(yè)領(lǐng)域。
遙感信息技術(shù)是空間信息科學(xué)技術(shù)的重要組成部分,也是物聯(lián)網(wǎng)應(yīng)用中的重要組成部分。近年來,隨著空間技術(shù)、大測繪技術(shù)、計算機技術(shù)、軟件技術(shù)、信息技術(shù)、數(shù)字圖像處理技術(shù)等相關(guān)領(lǐng)域的進(jìn)展,遙感技術(shù)得到了快速發(fā)展,全國眾多高校先后開設(shè)了與遙感相關(guān)的專業(yè)和課程。在圖像處理方面,由于C++代碼執(zhí)行效率高,有著豐富的類庫可供程序直接調(diào)用,被廣泛用于物聯(lián)網(wǎng)工程的應(yīng)用研究中。此外,VC++提供了各種功能強大的開發(fā)向?qū)В怪蔀檫b感圖像預(yù)處理、色彩增強和專題地類解譯的最佳選擇。圖1所示為基于c++程序設(shè)計的遙感影像處理流程。眾多科技工作者已經(jīng)采用C++或VC與其他編程語言混合的模式開展遙感信息提取、影像處理等研究工作。針對傳統(tǒng)c++語言的教學(xué)與改革,有教育工作者作了相應(yīng)的研究,并對非計算機專業(yè)的C++教學(xué)工作進(jìn)行了探索。然而,針對物聯(lián)網(wǎng)工程專業(yè)中的遙感信息處理,如何將C++課程教學(xué)與本專業(yè)的應(yīng)用領(lǐng)域相結(jié)合成為亟須解決的問題。
2、教學(xué)方法革新
良好的教學(xué)方法是提高教學(xué)質(zhì)量的重要保障。傳統(tǒng)的c++教學(xué)中,教師側(cè)重于講授,而學(xué)生則被動接受。當(dāng)整個課程結(jié)束時,雖然教師已講授了所有要點和關(guān)鍵點,但學(xué)生掌握的只是大量的離散知識點,無法系統(tǒng)學(xué)習(xí)到課程的體系結(jié)構(gòu)和精髓,更不會自如地應(yīng)用c++去解決實際問題。同時,學(xué)生對為什么要學(xué)習(xí)編程技術(shù),學(xué)完有什么用并不明確,導(dǎo)致學(xué)習(xí)的主動性不高。因此,革新傳統(tǒng)教學(xué)方法是提高本課程教學(xué)效果的前提。
2.1 編程興趣培養(yǎng)
在遙感影像的處理和分析過程中,有許多現(xiàn)成的應(yīng)用軟件可供選擇,如著名的ERDAS、ENVI、PCI、ArcGIS等。學(xué)生在實際操作這些軟件時,只是選取特定的集成模塊,輸入規(guī)定的參數(shù)后便可得到最終的處理結(jié)果,且容易被每一次影像處理后的效果所吸引,但并不明白具體的處理細(xì)節(jié)如何實現(xiàn)。教師可以根據(jù)學(xué)生普遍感興趣的操作模塊,選擇其中有代表性的應(yīng)用案例,講明c++關(guān)鍵程序原理和具體實現(xiàn)流程,讓學(xué)生自己動手去編程實現(xiàn);并說明這些功能模塊并不是最優(yōu),尚有很多改進(jìn)空間,以此激發(fā)學(xué)生自己研究算法并編程實現(xiàn)。最終,讓學(xué)生明白所學(xué)專業(yè)和編程語言之間的緊密關(guān)系,增強專業(yè)興趣和編程興趣,增加學(xué)習(xí)的積極性和主動性。
2.2 互動教學(xué)方法
現(xiàn)階段,各高校都已經(jīng)實現(xiàn)了多媒體輔助教學(xué)。教師通過PPT將所講授內(nèi)容展示給學(xué)生,節(jié)約了大量板書時間,提高了工作效率,增加了單位課時的信息量。但是,編程是一門循序漸進(jìn)的課程,C++語言從語法上有對C語言的繼承,但也有大量的變化。這些變化的部分可以通過PPT直觀展現(xiàn)給學(xué)生,但要加深印象效果卻不佳。在一些市場化的計算機軟件培訓(xùn)中,培訓(xùn)師采取的是動手演示操作過程,讓學(xué)員跟著模仿操作,進(jìn)而學(xué)會實際操作步驟,加深流程的實現(xiàn)環(huán)節(jié)。同理,可以將這種教學(xué)方法引入到課堂教學(xué)中。教師講授完一個知識點后,不要直接用PPT顯示一個完整的實例程序段,而是直接打開c++編程環(huán)境,手工輸入這個程序段,一邊輸入一邊解釋每一個變量是怎么定義的,每一個程序片段要實現(xiàn)哪些功能,其中涉及哪些語法和變量;最后,顯示編程效果,驗證程序段的可靠性。在整個互動的教學(xué)過程中,學(xué)生直觀看到了一段程序的實現(xiàn)過程,理解了輸入?yún)?shù)、運算過程和輸出結(jié)果的相互關(guān)系,會加深其記憶和理解。同時,采用互動的方式,挑選學(xué)生到講臺上實現(xiàn)一個編程過程,并在敲打代碼的時候給臺下的學(xué)生講解,加深知識點的掌握和記憶。經(jīng)過這個鍛煉過程,學(xué)生在編程時會不由自主地模仿編程細(xì)節(jié),達(dá)到靈活掌握相應(yīng)知識點,養(yǎng)成良好編程習(xí)慣的目的。
2.3 理論聯(lián)系實際
傳統(tǒng)教學(xué)中,受限于學(xué)時、教學(xué)條件等因素,教師無法將每一個知識點都與實際應(yīng)用相聯(lián)系,而是中規(guī)中矩地講授語法知識,導(dǎo)致學(xué)生學(xué)完所有知識點后,不能將其組合起來實現(xiàn)一些基本功能,更別說解決復(fù)雜的實際問題。學(xué)習(xí)編程的目的是為了解決實際問題,而這種講授方式顯然違背了編程語言學(xué)習(xí)的初衷。因此,教師在講解每一個知識點的過程中,應(yīng)該與專業(yè)背景和實際應(yīng)用聯(lián)系起來。比如:對矩陣的處理是c++語言的一項基本操作,而遙感影像的數(shù)字化存儲采取的就是矩陣存儲方式;還有指針的操作,對影像數(shù)據(jù)的顏色操作就有基于指針的檢索。通過這種理論聯(lián)系實際的教學(xué)方式,學(xué)生自然而然就將所學(xué)的C++語言知識點與本專業(yè)知識聯(lián)系起來,對提高編程水平和解決專業(yè)問題都很有幫助。
3、教學(xué)內(nèi)容革新
3.1 基礎(chǔ)語法教學(xué)革新
在C++教學(xué)中,因語法的繼承性,很多教師花費了大量時間在重復(fù)講授c語言的基礎(chǔ)語法知識。從編程語言的集成和擴展方面,c語言讓大家學(xué)會了程序設(shè)計的方法,而c++則提出了面向?qū)ο蟪绦蛟O(shè)計的新風(fēng)格。因此,在c++程序設(shè)計課程教學(xué)中,教師應(yīng)該只占用少量的時間去介紹C語言與C++語言的繼承部分,而把大量時間投入c++面向?qū)ο蟪绦蛟O(shè)計的思想與語法教學(xué)中,如類與對象、重載與模版、繼承與派生等。
3.2 良好編程規(guī)范培養(yǎng)
傳統(tǒng)教學(xué)中,教師很少對編程規(guī)范作出要求,致使學(xué)生所寫的程序段只有自己認(rèn)識,甚至一段時間后,有些代碼連自己都不認(rèn)識,這都是因為編寫不規(guī)范所致。編程規(guī)范同時也是良好的編程習(xí)慣,對增加程序段共享、移植、修改等有重要的制約作用。教學(xué)過程中和布置課后作業(yè)時,可從變量定義、程序段格式、語法選擇、注釋等幾個方面去注意培養(yǎng),具體如下:(1)變量定義采用可識別的英文名稱或縮寫表示;(2)程序段中每一對{}都要保證上下對齊,且每一對{}都對應(yīng)于段首和段尾;(3)每一對{}內(nèi)的語句左對齊;(4)每一程序行上只寫一條語句;(5)不同的語句段采用縮進(jìn)格式以示區(qū)別;(6)盡量選擇程序段精簡、執(zhí)行效率高的程序方式去實現(xiàn)相應(yīng)功能;(7)關(guān)鍵語句及程序段均要作出注釋。
3.3 案例程序庫建設(shè)
C++教學(xué)是一個循序漸進(jìn)的過程,配合案例程序會增加對相應(yīng)知識點的掌握。教師可以針對不同的知識點設(shè)計相應(yīng)的基礎(chǔ)案例,用于驗證該知識點。由教師講解一部分,學(xué)生自行練習(xí)一部分。隨著教學(xué)深入,開始設(shè)計包括幾個知識點的小型程序,同樣由教師講解一部分,學(xué)生課后自行練習(xí)一部分。當(dāng)一個大的知識塊學(xué)完后,可以設(shè)計綜合案例,用于驗證整塊知識的掌握程度和靈活運用能力,由學(xué)生自行完成后教師講評。因此,教師可以針對各知識點建立起案例程序庫,每講完一部分,即從程序庫中抽取案例進(jìn)行講解與練習(xí),提高教學(xué)效果。
4、實踐環(huán)節(jié)革新
C++語言的靈活性較大,對動手能力要求較高,要求學(xué)生必須加大練習(xí)量。對實踐環(huán)節(jié)的改革可從實驗課改革和課后實踐交流2個方面展開。
4.1 實踐過程指導(dǎo)
傳統(tǒng)c++教學(xué)中,分為教師課堂講授和實驗練習(xí)課。通常情況下,教師在課堂上講授相應(yīng)知識點,在實驗課時指導(dǎo)學(xué)生進(jìn)行編程實踐,重在編程結(jié)果,而輕于過程指導(dǎo)。對于學(xué)生來說,實驗課上完成了所學(xué)知識點的驗證,但并不能發(fā)現(xiàn)編程過程中隱藏的各種問題,如變量命名不規(guī)范、程序風(fēng)格較差、選用方法效率低等。
作為課程的主導(dǎo)者,教師在實踐課上可以選取一位學(xué)生為代表,令其完成程序編制,其他同學(xué)在旁觀看。在該學(xué)生編寫程序的過程中,逐一指出問題所在,直至一個規(guī)范的程序段編寫完畢,運行正常為止。這一過程中,學(xué)生對自己存在的問題有了明確的認(rèn)識,而其他同學(xué)存在的共性問題也能得到集中解決,經(jīng)實踐驗證效果良好。
4.2 實踐交流平臺建設(shè)
隨著網(wǎng)絡(luò)交流平臺的發(fā)展,網(wǎng)站、博客、QQ空間、QQ聊天工具等成為當(dāng)前不可缺少的交流工具。由于每一門課程都有其規(guī)定的教學(xué)課時,在課堂外,教師基本不再與學(xué)生接觸,使得學(xué)生有問題時很難及時得到幫助。為了增強與學(xué)生之間的實踐交流,教師可以選擇一種網(wǎng)絡(luò)交流平臺作為課后交流方式。當(dāng)學(xué)生在自我編程中遇到問題時,可隨時與教師進(jìn)行交流。同時,教師可以在交流平臺上發(fā)布編程經(jīng)驗類文章,供學(xué)生參考學(xué)習(xí)。采取這種實時的交流方式,既可以提高學(xué)生學(xué)習(xí)編程技術(shù)的興趣,又可以豐富教師的教學(xué)手段和內(nèi)容,同時也增強了教學(xué)效果。
5、結(jié)語
c++程序設(shè)計是物聯(lián)網(wǎng)工程專業(yè)基礎(chǔ)課程之一,在教學(xué)過程中難免遇到非計算機專業(yè)學(xué)生學(xué)習(xí)編程技術(shù)基礎(chǔ)不足、興趣不高、教學(xué)效果不好等難題,加之c++語言本身語法內(nèi)容多,使用靈活等特點,加大了這門課程的教學(xué)難度。通過本研究的深入分析和案例支撐,為物聯(lián)網(wǎng)工程專業(yè)如何提高C++程序設(shè)計的教學(xué)效果提供了有益參考,也為該課程教學(xué)效果的再提高提供了實踐探索。