陳 光
(臺(tái)州學(xué)院電子與信息工程學(xué)院 浙江·臺(tái)州 318000)
隨著現(xiàn)代計(jì)算機(jī)技術(shù)朝著通用化、集成化、小型化方向快速發(fā)展,越來越多的電子產(chǎn)品依賴具備代碼執(zhí)行能力的半導(dǎo)體芯片作為系統(tǒng)驅(qū)動(dòng)或控制的核心。對(duì)于電子信息工程專業(yè)的教師而言,為了保證高校教育符合社會(huì)需求,在培養(yǎng)學(xué)生掌握電路設(shè)計(jì)、信息處理等方面的知識(shí)之余,培養(yǎng)他們具備良好的軟件編程能力變得越發(fā)重要。電子信息工程相關(guān)的電子產(chǎn)品多使用例如MCU、DSP、SOC 等嵌入式微機(jī)開發(fā),不同于基于高級(jí)操作系統(tǒng)的軟件開發(fā),面向嵌入式微機(jī)的軟件開發(fā)需要考慮如何在有限的計(jì)算、存儲(chǔ)資源上高效地實(shí)現(xiàn)既定的功能,這對(duì)編程過程中合理使用數(shù)據(jù)結(jié)構(gòu)提出了較高的要求。另一方面,隨著電子產(chǎn)品功能日趨多樣化、智能化,支撐它們運(yùn)行的代碼規(guī)模也在快速膨脹,C 語言之余,C++、Java 等面向?qū)ο缶幊陶Z言由于其良好的代碼組織與復(fù)用特性越來越多地被引入相關(guān)產(chǎn)品的軟件開發(fā)。在上述背景下,在電子信息工程專業(yè)課程體系中越來越多的高校以選修或必修的形式開設(shè)了數(shù)據(jù)結(jié)構(gòu)與面向?qū)ο缶幊谭矫娴恼n程,如筆者所在的臺(tái)州學(xué)院電子系從2015 級(jí)開始在學(xué)生培養(yǎng)計(jì)劃中設(shè)置“數(shù)據(jù)結(jié)構(gòu)與C++”課程,在每學(xué)年的第一學(xué)期針對(duì)大二學(xué)生授課,課程以C++語言為載體傳授學(xué)生面向?qū)ο缶幊膛c數(shù)據(jù)結(jié)構(gòu)方面的基礎(chǔ)知識(shí)。
近年來,地方高校積極朝著應(yīng)用型定位開展轉(zhuǎn)型,很多傳統(tǒng)的理論、實(shí)驗(yàn)教學(xué)模式已不再能很好地適應(yīng)應(yīng)用型人才培養(yǎng)的目標(biāo)。對(duì)于地方高校電子信息工程專業(yè)“數(shù)據(jù)結(jié)構(gòu)與C++” 課程,筆者在應(yīng)用型教學(xué)過程中體會(huì)到如下問題:
(1)理論教學(xué)課時(shí)壓縮對(duì)教學(xué)帶來不利影響:應(yīng)用型教學(xué)強(qiáng)調(diào)提升實(shí)踐環(huán)節(jié)在教學(xué)中的比重,在課程總課時(shí)不宜或不易改變的狀況下,這勢必導(dǎo)致理論教學(xué)課時(shí)的壓縮?!皵?shù)據(jù)結(jié)構(gòu)與C++”課程包含了大量的知識(shí)點(diǎn),在通過有限時(shí)間的理論教學(xué)為學(xué)生打好熟練應(yīng)用知識(shí)基礎(chǔ)方面,傳統(tǒng)的理論教學(xué)模式已捉襟見肘。
(2)實(shí)踐教學(xué)缺少有效的監(jiān)督與能力促進(jìn)機(jī)制:“數(shù)據(jù)結(jié)構(gòu)與C++”課程包含大量上機(jī)編程實(shí)驗(yàn),它們是課程實(shí)踐教學(xué)的主要載體,若不能有效對(duì)學(xué)生的實(shí)驗(yàn)過程進(jìn)行督促,那實(shí)踐教學(xué)的效果將大打折扣,應(yīng)用型教學(xué)的初衷也將淪為空談。然而,較為遺憾的是當(dāng)前地方高校大多缺失助教制度(在研究型高校中,助教多由碩士研究生承擔(dān)),任課教師沒有辦法以一己之力完成對(duì)每位學(xué)生每個(gè)實(shí)驗(yàn)的嚴(yán)格把關(guān)。
(3)大多數(shù)學(xué)生在主動(dòng)學(xué)習(xí)上的積極性不高:相較研究型高校學(xué)生,地方高校學(xué)生在高考成績上多屬于中間層次,進(jìn)入大學(xué)后,他們?cè)谡n程學(xué)習(xí)的過程中大多表現(xiàn)為按部就班,更局限于接受課內(nèi)知識(shí)、完成教師布置的任務(wù),缺乏主動(dòng)思考、自學(xué)等方面的積極性,這限制了他們靈活運(yùn)用知識(shí)的能力。
圖1 實(shí)驗(yàn)選題范例
針對(duì)地方高校電子信息工程專業(yè)“數(shù)據(jù)結(jié)構(gòu)與C++”教學(xué)中存在的問題及課程的特點(diǎn),筆者在近兩年的教學(xué)過程中開展了以下幾個(gè)方面的改革探索。
(1)改進(jìn)理論教學(xué)內(nèi)容與方式:為適應(yīng)理論教學(xué)課時(shí)壓縮的現(xiàn)狀,在教學(xué)內(nèi)容上,考慮到學(xué)生在大一已充分完成C 語言的學(xué)習(xí),針對(duì)C++語言的教學(xué)以其相較于C 語言的差異作為切入點(diǎn)開展教學(xué),著重講解命名空間、引用、類、模板等新概念及它們的基本使用;針對(duì)學(xué)生相對(duì)陌生的數(shù)據(jù)結(jié)構(gòu)內(nèi)容的教學(xué),避免或弱化相對(duì)枯燥的常見數(shù)據(jù)結(jié)構(gòu)在底層實(shí)現(xiàn)代碼上的講解,轉(zhuǎn)而強(qiáng)調(diào)它們的底層實(shí)現(xiàn)原理,同時(shí)強(qiáng)調(diào)它們的具體使用注意事項(xiàng),例如元素增刪改找等基本操作的時(shí)間復(fù)雜度、適合的應(yīng)用場合等。在教學(xué)方式上,選擇機(jī)房作為教學(xué)場所,采用教學(xué)主機(jī)屏幕分享至學(xué)生從機(jī)的模式,并盡量使用對(duì)知識(shí)理解更為友好的圖像或動(dòng)畫方式開展教學(xué),以使學(xué)生能清晰、快速地接受知識(shí)。同時(shí),每次課通過釘釘進(jìn)行直播錄制,課后及時(shí)向?qū)W生公布回放視頻、PPT 與擴(kuò)展閱讀資料,方便學(xué)生在課后能夠獨(dú)立進(jìn)行知識(shí)的查漏補(bǔ)缺與鞏固。
(2)實(shí)現(xiàn)理論教學(xué)與實(shí)驗(yàn)教學(xué)的環(huán)節(jié)串聯(lián):打破理論與實(shí)驗(yàn)安排在不同時(shí)間教學(xué)的傳統(tǒng),在每次課的前半時(shí)段進(jìn)行理論教學(xué),在后半時(shí)段進(jìn)行實(shí)驗(yàn)教學(xué),實(shí)現(xiàn)微?;R(shí)教學(xué),使學(xué)生能夠及時(shí)練習(xí)理論知識(shí),并在課內(nèi)進(jìn)行一定的練習(xí),達(dá)到有效鞏固知識(shí)的目的。以2017 級(jí)的教學(xué)為例,每周1 次排課,剔除節(jié)假日,共安排了14 次課,教學(xué)內(nèi)容的安排見表1。每次課為3 課時(shí),視理論內(nèi)容難度安排前一節(jié)或前兩節(jié)課進(jìn)行理論教學(xué),剩余節(jié)次進(jìn)行相應(yīng)的實(shí)驗(yàn)教學(xué),微?;c理論實(shí)驗(yàn)串聯(lián)的教學(xué)模式保證了學(xué)生能夠以“少量多餐”的形式練習(xí)本課程的大部分重要知識(shí)點(diǎn)。
(3)建立合理的實(shí)驗(yàn)考核機(jī)制:將實(shí)驗(yàn)課從課內(nèi)延伸至課外,每次實(shí)驗(yàn)課不強(qiáng)求學(xué)生必須在課內(nèi)完成實(shí)驗(yàn),并允許他們?cè)谡n后規(guī)定期限內(nèi)遞交實(shí)驗(yàn)代碼與實(shí)驗(yàn)報(bào)告,一般期限為一周。同時(shí),除根據(jù)學(xué)生遞交的實(shí)驗(yàn)代碼與報(bào)告對(duì)學(xué)生進(jìn)行考核外,每次實(shí)驗(yàn)課后在當(dāng)周還會(huì)利用學(xué)生空余時(shí)間安排一次隨機(jī)抽查驗(yàn)收環(huán)節(jié),一般隨機(jī)抽查10 位同學(xué),被抽查的學(xué)生會(huì)被問及代碼與原理上的細(xì)節(jié)。通過上述措施,可使得教師在實(shí)驗(yàn)課內(nèi)可以免于在答疑者與驗(yàn)收者兩個(gè)身份間來回切換,更加專注于課堂管理與現(xiàn)場答疑,同時(shí)課后抽查驗(yàn)收環(huán)節(jié)的引入也能對(duì)部分慣于實(shí)驗(yàn)抄襲的學(xué)生造成壓力,達(dá)到完善實(shí)驗(yàn)考核、提高實(shí)驗(yàn)教學(xué)質(zhì)量的目的。
表1 教學(xué)內(nèi)容安排
(4)探索提升學(xué)生學(xué)習(xí)積極性:主要通過引入如下兩種手段提升學(xué)生學(xué)習(xí)的積極性。首先,在理論和實(shí)驗(yàn)教學(xué)中積極引入如數(shù)學(xué)表達(dá)式求解、銀行排號(hào)、迷宮求解等實(shí)際應(yīng)用案例以及企業(yè)筆試、面試題的講解來展現(xiàn)課程的應(yīng)用性與重要性,提升學(xué)生對(duì)課程的興趣;其次,在實(shí)驗(yàn)題目安排時(shí)引入難度梯度與加分機(jī)制,每次實(shí)驗(yàn)包含必做題和附加題,形式如圖1 給出了鏈表實(shí)驗(yàn),其中必做題為圍繞課內(nèi)知識(shí)的簡單應(yīng)用題,附加題則要求能夠相對(duì)靈活地運(yùn)用課內(nèi)知識(shí)或需要自學(xué)教師提供的擴(kuò)展閱讀資料才能完成,完成附加題將給予一定的實(shí)驗(yàn)加分,由此在保證絕大部分同學(xué)能夠順利完成任務(wù)的同時(shí),激勵(lì)中前部的學(xué)生主動(dòng)思考、主動(dòng)學(xué)習(xí)。
(5)有效配合銜接后續(xù)課程:“數(shù)據(jù)結(jié)構(gòu)與C++”的后續(xù)課程主要包括“可視化程序設(shè)計(jì)”“移動(dòng)應(yīng)用程序開發(fā)”等及相關(guān)的實(shí)訓(xùn)課程。為配合后續(xù)課程的有效銜接,本課程選擇了免費(fèi)、易用且功能全面的Visual Studio 社區(qū)版作為編程環(huán)境,在教學(xué)過程中有意識(shí)地穿插代碼格式化、排錯(cuò)與調(diào)試方面方法與技巧的講解,并在與后續(xù)課程相關(guān)的知識(shí)點(diǎn)講解時(shí)予以說明與強(qiáng)調(diào)。
在地方高校電子信息工程專業(yè)“數(shù)據(jù)結(jié)構(gòu)與C++”課程教學(xué)改革的過程中,筆者從地方高校應(yīng)用型教學(xué)轉(zhuǎn)型的目的出發(fā),結(jié)合課程與學(xué)生的特點(diǎn),進(jìn)行了上述幾個(gè)方面積極的探索,在一定程度上解決或緩解了理論課時(shí)壓縮、實(shí)驗(yàn)考核空泛、學(xué)生學(xué)習(xí)積極性不高等現(xiàn)有問題,提高了教學(xué)質(zhì)量,后續(xù)將從理論知識(shí)點(diǎn)鏈接、實(shí)驗(yàn)選題優(yōu)化等方面進(jìn)一步探索本課程的改革。