王云
(南京理工大學(xué)泰州科技學(xué)院,江蘇 泰州225300)
“數(shù)據(jù)結(jié)構(gòu)”課程是計(jì)算機(jī)類及相關(guān)專業(yè)的核心課程,在計(jì)算機(jī)學(xué)科的教學(xué)中占據(jù)重要的地位,各高校都十分重視該門課程的教學(xué)工作。但高校由于辦學(xué)性質(zhì)及人才培養(yǎng)定位的不同,對(duì)于“數(shù)據(jù)結(jié)構(gòu)”這門課程最終的培養(yǎng)要求及培養(yǎng)目標(biāo)顯然定位也不能完全相同。對(duì)于研究型高校,筆者認(rèn)為應(yīng)著重培養(yǎng)學(xué)生的創(chuàng)新思維,深入研究數(shù)據(jù)結(jié)構(gòu)關(guān)聯(lián)的算法,重在對(duì)算法的思考與改進(jìn),輔之以經(jīng)典算法的實(shí)現(xiàn);而對(duì)于非研究型高校,尤其針對(duì)應(yīng)用型本科高校,筆者認(rèn)為更多的是理解原有的經(jīng)典數(shù)據(jù)結(jié)構(gòu)算法,進(jìn)而在理解的基礎(chǔ)上運(yùn)用一門編程語言完整無誤地實(shí)現(xiàn)編程才是最重要的,因此如何有效開展該門課程的教學(xué)工作,切實(shí)提高學(xué)生的實(shí)踐動(dòng)手能力及提升學(xué)生的編程思維,值得每一個(gè)應(yīng)用型高校計(jì)算機(jī)相關(guān)教師的思考與探索?;谏鲜霰尘?,本文結(jié)合筆者“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)改革的實(shí)踐,就該門課程的教學(xué)現(xiàn)狀、教改思路等方面進(jìn)行了一些探討。
“數(shù)據(jù)結(jié)構(gòu)”課程整體難度較大,知識(shí)點(diǎn)較為抽象,尤其是樹及圖等章節(jié)的內(nèi)容,與數(shù)學(xué)聯(lián)系較為緊密,對(duì)學(xué)生的邏輯思維要求較高,這就決定了對(duì)該門課程的教學(xué)需要著重加強(qiáng)學(xué)生上機(jī)實(shí)踐環(huán)節(jié),只有通過不斷地上機(jī)演練和總結(jié)思考,才能在實(shí)踐中逐步理解掌握數(shù)據(jù)結(jié)構(gòu)的各知識(shí)點(diǎn)具體含義。而經(jīng)過調(diào)查,發(fā)現(xiàn)大部分應(yīng)用型高校教師在進(jìn)行該門課程教學(xué)時(shí),基本上都是以理論教學(xué)為主[1],課程的實(shí)踐學(xué)時(shí)普遍較少,大部分高校在實(shí)際的教學(xué)中,都是單純地在理論課教室授課,可能由于授課時(shí)間有限,或者部分教師自己對(duì)算法的理解與實(shí)現(xiàn)也不是很到位,這就造成了很多教師只是被動(dòng)地將數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)的相關(guān)算法通過PPT展示,然后對(duì)照著代碼很粗略地講解,很少能將代碼通過現(xiàn)場(chǎng)編程等方式,具體告知學(xué)生算法的基本原理及實(shí)現(xiàn)的過程,從而造成學(xué)生也只能被動(dòng)地聽,很少有時(shí)間或者有精力去思考算法的具體實(shí)現(xiàn)過程,這樣就無形中導(dǎo)致學(xué)生面對(duì)大量抽象的知識(shí)點(diǎn)一知半解,從而不能靈活應(yīng)用數(shù)據(jù)結(jié)構(gòu)知識(shí)解決實(shí)際的編程問題,課程教學(xué)效果大大折扣,也不利于應(yīng)用型人才的培養(yǎng),教學(xué)效果與應(yīng)用型高校實(shí)際的人才培養(yǎng)定位是相違背的。
經(jīng)過調(diào)研及查閱文獻(xiàn)可知,目前大部分應(yīng)用型本科高?;旧隙歼x用C語言版本進(jìn)行數(shù)據(jù)結(jié)構(gòu)的描述,也有部分院校選用C++版本描述[2],但無論是C語言還是C++語言描述數(shù)據(jù)結(jié)構(gòu),筆者認(rèn)為都不是很適合。采用C語言描述數(shù)據(jù)結(jié)構(gòu),編程思維繁雜且缺少面向?qū)ο笏季S,如C語言中的指針雖然編程較為靈活,但具體編程時(shí),學(xué)生不易掌握且會(huì)濫用,同時(shí)在描述相關(guān)數(shù)據(jù)結(jié)構(gòu)時(shí)使用的數(shù)據(jù)類型也較為抽象,也不利于學(xué)生的理解,久而久之造成學(xué)生對(duì)學(xué)習(xí)這門課產(chǎn)生了較大的畏難情緒。同時(shí)上機(jī)操作時(shí),單純用C語言去描述數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)算法的具體實(shí)現(xiàn)過程,也絕非是件容易的事。教學(xué)實(shí)踐中發(fā)現(xiàn),大部分同學(xué)都不能將程序從頭寫到尾,即完整地將一個(gè)算法描述出來,往往都需要教師將程序的大部分內(nèi)容預(yù)先給出,只留出一些空讓學(xué)生去填寫,這樣編程教學(xué)效果其實(shí)是打折扣的;而C++語言描述雖然具備面向?qū)ο笏季S,但語言的應(yīng)用前景不是很寬廣且語言自身的編程難度也很大,比如C++中的多重繼承機(jī)制、不能自動(dòng)進(jìn)行垃圾回收,也會(huì)讓學(xué)生產(chǎn)生畏難情緒,導(dǎo)致學(xué)習(xí)的效果也得不到保障。
研究型高校以培養(yǎng)學(xué)術(shù)型人才為目標(biāo),因此對(duì)于“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué),往往理論挖得很深,注重知識(shí)的廣度與深度,課程內(nèi)容講究面面俱到[3],如應(yīng)用型高校在介紹樹的相關(guān)內(nèi)容時(shí),一般只會(huì)介紹樹及二叉樹的基本內(nèi)容,而研究型高校除了介紹常規(guī)樹所對(duì)應(yīng)的基本知識(shí)外,還會(huì)著重介紹B+、B-樹等內(nèi)容。同時(shí)在具體授課時(shí),除了讓學(xué)生理解算法并實(shí)現(xiàn)算法外,教師往往還會(huì)額外布置學(xué)習(xí)任務(wù),如通過閱讀論文、查閱文獻(xiàn)、舉辦專題講座等形式,進(jìn)一步加深、拓展學(xué)生對(duì)數(shù)據(jù)結(jié)構(gòu)知識(shí)的理解與運(yùn)用。而應(yīng)用型高校以培養(yǎng)實(shí)踐技能型人才為目標(biāo),這就要求不能照搬研究型高校的教學(xué)內(nèi)容和教學(xué)方法,而應(yīng)挖掘適合應(yīng)用型人才培養(yǎng)的教學(xué)內(nèi)容和教學(xué)方法。但筆者發(fā)現(xiàn),大部分應(yīng)用型高校對(duì)“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué)內(nèi)容與研究型高?;緹o差別,也是注重對(duì)抽象知識(shí)點(diǎn)的深挖,而較少啟發(fā)學(xué)生對(duì)數(shù)據(jù)結(jié)構(gòu)編程的思考。課程內(nèi)容側(cè)重講解各類型數(shù)據(jù)結(jié)構(gòu)的特性及存儲(chǔ),而對(duì)數(shù)據(jù)結(jié)構(gòu)所對(duì)應(yīng)的算法要求偏低[4]。
目前,“數(shù)據(jù)結(jié)構(gòu)”課程基本上較少融入工程性教育理念,較多地是單純講解知識(shí)點(diǎn),這樣就不能很好地把握課程的工程化建設(shè)方向和重點(diǎn)[5]。有些院校即使引入相關(guān)工程化元素,也只是點(diǎn)到為止,未構(gòu)建工程化認(rèn)證體系;未提出“數(shù)據(jù)結(jié)構(gòu)”課程的工程化建設(shè)目標(biāo)[6];未嚴(yán)格按照工程教育認(rèn)證標(biāo)準(zhǔn)要求,統(tǒng)籌安排,提前部署,進(jìn)一步推進(jìn)以“學(xué)生中心、成果導(dǎo)向、持續(xù)改進(jìn)”教育教學(xué)理念的落實(shí);未堅(jiān)持以工程教育專業(yè)認(rèn)證標(biāo)準(zhǔn)為導(dǎo)向開展課程建設(shè),突出課程特色。從而造成培養(yǎng)的學(xué)生較難進(jìn)入工程化行業(yè)就業(yè),職業(yè)能力有較大欠缺,也不符合現(xiàn)在國家倡導(dǎo)的新工科教育理念。
筆者在實(shí)際的“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)中,選用Java語言描述數(shù)據(jù)結(jié)構(gòu)。Java語言是優(yōu)秀的面向?qū)ο缶幊陶Z言。該語言應(yīng)用范圍廣泛,是市場(chǎng)編程的主流語言之一。使用Java語言描述數(shù)據(jù)結(jié)構(gòu),編程思路清晰且靈活,如只需使用泛型類即可描述復(fù)雜的數(shù)據(jù)結(jié)構(gòu),從而使得程序的通用性、復(fù)用性大大提高,而且學(xué)生一般也具備Java的編程基礎(chǔ),利于學(xué)生學(xué)習(xí)掌握。筆者在教學(xué)實(shí)踐中發(fā)現(xiàn),只要啟發(fā)學(xué)生好好思考,并鼓勵(lì)他們勇于嘗試,大部分學(xué)生都能將程序完整地寫出來,這樣不僅讓學(xué)生切實(shí)掌握了數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)算法的精髓,也讓學(xué)生的學(xué)習(xí)信心和學(xué)習(xí)熱情得以較大程度的提升,學(xué)習(xí)效果還是非常不錯(cuò)的;再比如Java語言摒棄了多重繼承機(jī)制,并具備垃圾自動(dòng)回收機(jī)制,降低了學(xué)生編程的復(fù)雜性;同時(shí)Java語言提供了豐富的系統(tǒng)類和接口,如使用Java集合類就可以很方便地描述和操作鏈表,使得學(xué)生容易上手,并對(duì)描述復(fù)雜的數(shù)據(jù)結(jié)構(gòu)算法樹立信心,而不必糾結(jié)于如何去描述數(shù)據(jù)結(jié)構(gòu)或者分散學(xué)生的編程精力,使得學(xué)生可以從繁雜的數(shù)據(jù)結(jié)構(gòu)描述中解放出來,只要關(guān)注算法的核心實(shí)現(xiàn)思想即可,學(xué)生實(shí)際的編程效果得到保證。
筆者目前對(duì)于該門課程的教學(xué)全程在機(jī)房中進(jìn)行,同時(shí)課程的實(shí)踐學(xué)分比例占比在60%左右,改變了以往以理論為主的教學(xué)模式。實(shí)際教學(xué)中,通過PPT并輔之以其他教學(xué)軟件,先向?qū)W生初步講解各數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)及存儲(chǔ)方法;然后重點(diǎn)以實(shí)際的現(xiàn)場(chǎng)代碼演示來講解分析數(shù)據(jù)結(jié)構(gòu)的各操作及算法,演示過程中,會(huì)著重啟發(fā)學(xué)生的思考,如教師先給出部分代碼,讓學(xué)生思考后,再由學(xué)生完成后續(xù)代碼,再比如教師先用順序存儲(chǔ)完成代碼的編寫,然后要求學(xué)生再使用鏈?zhǔn)酱鎯?chǔ)去完成同樣的算法;最后一定會(huì)留有充足的時(shí)間,讓學(xué)生實(shí)際演練并給與及時(shí)的指導(dǎo)。同時(shí)對(duì)于學(xué)習(xí)有余力的同學(xué),會(huì)留有難度較高的習(xí)題讓他們思考并完成,針對(duì)有意向參與編程競(jìng)賽的同學(xué),也會(huì)融入編程競(jìng)賽的真題,并著重介紹編程競(jìng)賽中常用的算法,讓學(xué)生學(xué)完這門課后,能從容參與各項(xiàng)編程競(jìng)賽中;在上課過程中,針對(duì)學(xué)生普遍存在的共性問題,教師及時(shí)加以講評(píng),絕不把問題留在下節(jié)課,也絕不讓問題擠壓,充分保證了當(dāng)天的學(xué)習(xí)效果。教學(xué)實(shí)踐證明,學(xué)生學(xué)習(xí)的積極性有了顯著提高,學(xué)生運(yùn)用數(shù)據(jù)結(jié)構(gòu)解決實(shí)際編程需求的能力也得以增強(qiáng)。
針對(duì)應(yīng)用型人才培養(yǎng)的特點(diǎn)及學(xué)生學(xué)習(xí)基礎(chǔ)相對(duì)薄弱等現(xiàn)實(shí)因素,筆者在實(shí)際的教學(xué)中,摒棄了一些實(shí)踐性不是很強(qiáng)的教學(xué)內(nèi)容,如B+、B-樹、廣義表、堆排序等內(nèi)容,上述內(nèi)容一方面在實(shí)際的編程中應(yīng)用范圍不是很廣,另一方面后續(xù)課程如算法分析與設(shè)計(jì)也會(huì)涉及到上述內(nèi)容,這樣就能給學(xué)生充足的時(shí)間和精力去消化數(shù)據(jù)結(jié)構(gòu)中最基礎(chǔ)最核心的內(nèi)容,在一定程度上避免了貪多嚼不爛的情形,筆者認(rèn)為這種取舍對(duì)于應(yīng)用型高校來說還是合理的。教學(xué)中筆者保留實(shí)際編程中應(yīng)用范圍最廣的知識(shí)點(diǎn),如線性結(jié)構(gòu)中的線性表、棧、隊(duì)列、非線性結(jié)構(gòu)中的二叉樹、圖以及基本的排序及查找等。這樣既可以減輕學(xué)生的負(fù)擔(dān),又可以讓學(xué)生在有限的學(xué)時(shí)中切實(shí)掌握基本的數(shù)據(jù)結(jié)構(gòu)知識(shí)點(diǎn),達(dá)到夠用、會(huì)用即可。同時(shí)在實(shí)際的教學(xué)中,針對(duì)應(yīng)用型高校學(xué)生的特點(diǎn),不過多闡述相關(guān)知識(shí)點(diǎn)的推理過程,如介紹二叉樹的特性時(shí),只給出二叉樹的特點(diǎn),只讓學(xué)生記住這些性質(zhì)即可,一般較少涉及具體二叉樹性質(zhì)的證明與推導(dǎo)過程,這樣也能無形中能減少學(xué)生的學(xué)習(xí)壓力,而學(xué)生的學(xué)習(xí)效果并不會(huì)受到什么影響。
為了進(jìn)一步提高學(xué)生學(xué)習(xí)的積極性和主動(dòng)性,筆者在實(shí)際的“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)中,結(jié)合學(xué)校打造金課、一流課程等契機(jī),充分利用智慧教學(xué)手段,改進(jìn)傳統(tǒng)課堂教學(xué)方式,不斷創(chuàng)新改革教學(xué)方式與教學(xué)方法,如探索線上線下混合式教學(xué)模式,合理分配課程線上線下的內(nèi)容與學(xué)時(shí),尤其是在課程內(nèi)容分配時(shí),絕非簡單地利用章節(jié)來分配,而是根據(jù)具體的教學(xué)要求、教學(xué)內(nèi)容進(jìn)行模塊化分配,如對(duì)于線性表的講解,筆者將其順序存儲(chǔ)部分內(nèi)容置于線上教學(xué)環(huán)節(jié)中,讓學(xué)生通過視頻、課堂測(cè)驗(yàn)、討論等環(huán)節(jié)加以學(xué)習(xí),而線性表的鏈?zhǔn)酱鎯?chǔ)部分則置于線下教學(xué)環(huán)節(jié),在學(xué)生具備數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)思想的基礎(chǔ)上,進(jìn)行類比學(xué)習(xí),啟發(fā)學(xué)生對(duì)2種存儲(chǔ)類型的思考。教學(xué)中還積極利用中國大學(xué)MOOC平臺(tái)、慕課堂等多種教學(xué)手段,實(shí)現(xiàn)對(duì)學(xué)生學(xué)習(xí)過程的全程化監(jiān)督管理。如實(shí)際教學(xué)中,通過慕課堂發(fā)布課堂測(cè)驗(yàn),要求學(xué)生在課堂上現(xiàn)場(chǎng)完成,完成后自動(dòng)實(shí)現(xiàn)打分功能,并將每次慕課堂測(cè)試的考核嚴(yán)格納入最終成績的評(píng)定中;再比如,完成一個(gè)章節(jié)的教學(xué)后,就會(huì)及時(shí)通過MOOC平臺(tái)發(fā)布章節(jié)測(cè)驗(yàn),要求學(xué)生在規(guī)定時(shí)間內(nèi)完成,同時(shí)為了激勵(lì)學(xué)生,共設(shè)置有2次作答的機(jī)會(huì),如果第一次完成得不是很理想,可以申請(qǐng)進(jìn)行第二次作答,取較高的分?jǐn)?shù)進(jìn)行記錄;同時(shí)中國大學(xué)MOOC平臺(tái)還提供了話題討論等功能,教師可以就重要的知識(shí)點(diǎn)設(shè)置相關(guān)話題,讓每個(gè)學(xué)生都參與討論,學(xué)生在討論的過程中,取長補(bǔ)短。實(shí)踐表明,學(xué)生的學(xué)習(xí)熱情及學(xué)習(xí)效果有了很大的提高,尤其是課后作業(yè)環(huán)節(jié),學(xué)生自主完成度及完成質(zhì)量較改革前傳統(tǒng)的教學(xué)手段有了明顯提升,教學(xué)效果得以保證。圖1為一學(xué)期課程教學(xué)的慕課堂線下課堂數(shù)據(jù),圖2為線上課堂數(shù)據(jù)。
圖1 線下課堂數(shù)據(jù)
圖2 線上課堂數(shù)據(jù)
針對(duì)傳統(tǒng)“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)中存在著缺乏工程化教育理念的問題,筆者也在積極探索“數(shù)據(jù)結(jié)構(gòu)”課程的工程化建設(shè)問題。嚴(yán)格按照工程教育認(rèn)證標(biāo)準(zhǔn)要求,統(tǒng)籌安排,提前部署,進(jìn)一步推進(jìn)“學(xué)生中心、成果導(dǎo)向、持續(xù)改進(jìn)”教育教學(xué)理念的落實(shí),堅(jiān)持以工程教育專業(yè)認(rèn)證標(biāo)準(zhǔn)為導(dǎo)向開展課程建設(shè)。遵循OBE教育理念,開展基于成果導(dǎo)向的育人模式創(chuàng)新與實(shí)踐研究,解決教育教學(xué)改革與創(chuàng)新型人才培養(yǎng)中的重點(diǎn)問題和難點(diǎn)問題。針對(duì)“數(shù)據(jù)結(jié)構(gòu)”課程的工程性特點(diǎn),與合作企業(yè)共同研討符合工程化的教學(xué)內(nèi)容和教學(xué)大綱,同時(shí)利用專業(yè)現(xiàn)有的實(shí)驗(yàn)實(shí)訓(xùn)資源,依托行業(yè)學(xué)院,構(gòu)建虛擬實(shí)驗(yàn)平臺(tái),為培養(yǎng)學(xué)生的數(shù)據(jù)結(jié)構(gòu)工程化提供堅(jiān)實(shí)的保障。筆者在實(shí)際的教學(xué)中還創(chuàng)新了“數(shù)據(jù)結(jié)構(gòu)”課程的考核方式,以能力考核為導(dǎo)向,倡導(dǎo)過程化成績?cè)u(píng)價(jià),采用答辯、大作業(yè)、項(xiàng)目演示等考核方式,凸顯對(duì)學(xué)生工程實(shí)踐能力考核。
本文在闡述應(yīng)用型本科“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)相關(guān)問題的基礎(chǔ)上,著重探討了“數(shù)據(jù)結(jié)構(gòu)”課程的教改方向,應(yīng)用上述教學(xué)手段和方法對(duì)應(yīng)用型高校提高“數(shù)據(jù)結(jié)構(gòu)”的教學(xué)質(zhì)量及提升學(xué)生的軟件編程思維具有一定的積極作用。參考文獻(xiàn):
[1]史婷婷,劉衛(wèi)華,賀超波.《數(shù)據(jù)結(jié)構(gòu)與算法》課程改革中應(yīng)用微信公眾平臺(tái)的實(shí)踐效果研究[J].信息記錄材料,2019(7):137-139.
[2]唐瑞雪.融入計(jì)算思維的數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探索[J].福建電腦,2019(8):107-109.
[3]魚靜,夏良,王秀珍.數(shù)據(jù)結(jié)構(gòu)課程教學(xué)改革的探索與實(shí)踐[J].計(jì)算機(jī)教育,2019(11):77-80.
[4]趙力衡,李麗華.數(shù)據(jù)結(jié)構(gòu)課程中面試式教學(xué)模式探索與實(shí)踐[J].電腦知識(shí)與技術(shù),2021(14):152-153.
[5]趙存有,陳國晶,常祿.基于OBE理念的課程教學(xué)設(shè)計(jì)研究[J].黑龍江教育(理論與實(shí)踐),2020(8):70-71.
[6]李金玲,李華新.工程教育視閾下基于OBE理念的混合式教學(xué)模式研究[J].軟件導(dǎo)刊(教育技術(shù)),2019(9):36-37.