何進(jìn)英
摘要:從應(yīng)用型本科院校的人才培養(yǎng)目標(biāo)出發(fā),分析了數(shù)據(jù)結(jié)構(gòu)這門(mén)課程在教學(xué)中存在的一些問(wèn)題,并從如何上好數(shù)據(jù)結(jié)構(gòu)第一堂課、案例法教學(xué)、線(xiàn)上線(xiàn)下相結(jié)合等方面進(jìn)行教學(xué)研究和探討。實(shí)踐證明,這些教學(xué)方法能有效提高學(xué)生學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的積極性和實(shí)踐能力。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);教學(xué)研究;案例教學(xué)法;線(xiàn)上線(xiàn)下結(jié)合
中圖分類(lèi)號(hào):G642? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)09-0110-03
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
Teaching Research and Reform of Data Structure Course in Application-oriented Universities
HE Jin-ying
(Guangdong Ocean University Cunjin College, Zhanjiang 524094, China)
Abstract: Based on the talent training objectives of application-oriented universities, this paper analyzes some problems existing in the teaching of data structure, and conducts teaching research and reform from the aspects of how to better the first class of data structure, case method teaching, combination of online and offline teaching, etc. The practice proves that the teaching method can effectively improve students' enthusiasm and practical ability in learning data structure.
Key words:data structure; educational reform; case teaching methodology; combination of online and offline
1 引言
“數(shù)據(jù)結(jié)構(gòu)”是計(jì)算機(jī)專(zhuān)業(yè)及相關(guān)專(zhuān)業(yè)的一門(mén)重要專(zhuān)業(yè)基礎(chǔ)課,也是一門(mén)必修的核心課程,并且已經(jīng)成為其他理工專(zhuān)業(yè)的熱門(mén)選修課[1]。學(xué)生通過(guò)學(xué)習(xí)該課程,應(yīng)當(dāng)學(xué)會(huì)分析實(shí)際問(wèn)題中涉及的數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系,選擇合適的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)來(lái)建立數(shù)據(jù)類(lèi)型,進(jìn)而設(shè)計(jì)出相應(yīng)的算法解決問(wèn)題。該課程的教學(xué)目標(biāo)是培養(yǎng)學(xué)生解決實(shí)際問(wèn)題的能力以及創(chuàng)造性思維。雖然數(shù)據(jù)結(jié)構(gòu)在理工科各專(zhuān)業(yè)中具有非常重要的地位,然而在教學(xué)過(guò)程中普遍有學(xué)生反映該課程抽象、難學(xué),在學(xué)習(xí)和解決實(shí)際問(wèn)題時(shí)遇到很多挫折,學(xué)習(xí)過(guò)程積極性不高,甚至學(xué)完之后依舊不知道如何應(yīng)用。為了提高數(shù)據(jù)結(jié)構(gòu)的課程教學(xué)效果,很多教學(xué)工作者提出了一些針對(duì)性的思路,并將其應(yīng)用在實(shí)際的教學(xué)中,也取得了不錯(cuò)的效果[2-9]。但由于每個(gè)學(xué)校的差異和學(xué)生層次的差異等原因,在學(xué)習(xí)他人教學(xué)經(jīng)驗(yàn)的同時(shí),也有必要針對(duì)自身的教學(xué)情況進(jìn)行研究,以提高教學(xué)質(zhì)量。對(duì)于應(yīng)用型本科高校,目標(biāo)是培養(yǎng)具備知識(shí)面廣、實(shí)踐能力強(qiáng)、可以靈活應(yīng)用所學(xué)知識(shí)解決實(shí)際問(wèn)題的應(yīng)用型人才。因此,如何培養(yǎng)具有廣知識(shí)面、實(shí)踐能力強(qiáng)的創(chuàng)新應(yīng)用型人才就成為應(yīng)用型本科教育工作者的重要任務(wù)。
2 教學(xué)現(xiàn)狀存
2.1 學(xué)生編程基礎(chǔ)薄弱和實(shí)踐能力差
目前,大多數(shù)數(shù)據(jù)結(jié)構(gòu)課程的教材采用的是C或者C++語(yǔ)言描述。許多學(xué)生對(duì)于C/C++語(yǔ)言的基礎(chǔ)掌握不牢固,編程能力也有限,對(duì)于C語(yǔ)言的指針、函數(shù)、結(jié)構(gòu)體的知識(shí)更是薄弱,特別是對(duì)于指針的理解更是一知半解,而這些知識(shí)點(diǎn)恰好是數(shù)據(jù)結(jié)構(gòu)中鏈表、樹(shù)、圖等結(jié)構(gòu)的實(shí)現(xiàn)的基礎(chǔ)。上述薄弱的程序設(shè)計(jì)基礎(chǔ)導(dǎo)致學(xué)生在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的過(guò)程中存在很多困難。此外,數(shù)據(jù)結(jié)構(gòu)是應(yīng)用型很強(qiáng)的一門(mén)課程,課程實(shí)踐是其重要組成部分。由于學(xué)生平時(shí)缺少上機(jī)編程鍛煉,在設(shè)計(jì)程序過(guò)程中思路不清晰,調(diào)試程序的能力欠缺,特別是由于對(duì)指針的理解不夠透徹,錯(cuò)誤使用指針,導(dǎo)致編寫(xiě)的程序運(yùn)行時(shí)經(jīng)常崩潰。這些問(wèn)題使得學(xué)生在實(shí)際應(yīng)用中很難找到成就感,于是逐漸失去對(duì)數(shù)據(jù)結(jié)構(gòu)課程的興趣。甚至有些學(xué)生在上機(jī)實(shí)踐時(shí),按照課本上偽代碼實(shí)現(xiàn)程序或者直接按部就班的錄入源代碼,僅僅做著翻譯和抄寫(xiě)的工作,當(dāng)代碼的搬運(yùn)工,最終導(dǎo)致需要用數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識(shí)解決實(shí)際問(wèn)題時(shí),部分學(xué)生無(wú)從下手,對(duì)算法的設(shè)計(jì)更是畏懼和不知所措,上機(jī)調(diào)試程序更加困難。
2.2? 教學(xué)環(huán)節(jié)中學(xué)生遇到問(wèn)題沒(méi)有及時(shí)解決
第一種情況:學(xué)生認(rèn)真聽(tīng)講,但是對(duì)個(gè)別知識(shí)點(diǎn)有疑問(wèn)卻不好意思提問(wèn)。這種情況一般出現(xiàn)在學(xué)習(xí)成績(jī)中等偏上的學(xué)生身上。這類(lèi)學(xué)生的特點(diǎn)是學(xué)習(xí)態(tài)度認(rèn)真,上課時(shí)候也基本能跟上老師的教學(xué)進(jìn)度,并且在能夠理解知識(shí)點(diǎn)的情況下,給予老師“點(diǎn)頭”的反饋,但是當(dāng)這些學(xué)生有疑惑時(shí),卻通常擺出“若有所思”的狀態(tài),不敢把自己的問(wèn)題和困惑講出來(lái),老師只能通過(guò)猜測(cè)他們哪里有疑惑并再次解釋?zhuān)@非常不利于針對(duì)性地解決問(wèn)題。
第二種情況:學(xué)生前面有知識(shí)漏洞,到后面遇到問(wèn)題不懂的時(shí)候,不知道問(wèn)題到底出在了哪個(gè)地方,提不出問(wèn)題。這種情況一般出現(xiàn)在學(xué)生成績(jī)偏下的學(xué)生身上。這類(lèi)學(xué)生的特點(diǎn)是先修課程中有許多知識(shí)點(diǎn)不熟、不會(huì),導(dǎo)致新的知識(shí)點(diǎn)很難聽(tīng)懂。他們知道自己不懂,但是不知道從哪里入手解決,只愿意與熟悉的同學(xué)討論,如果一起討論問(wèn)題的同學(xué)水平也差不多則無(wú)法解決問(wèn)題。這樣隨著教學(xué)的進(jìn)展,積累的問(wèn)題就越來(lái)越多,整個(gè)課程對(duì)這些學(xué)生而言就更加難。
2.3 教材偏理論、枯燥,并且實(shí)踐操作相對(duì)較少
數(shù)據(jù)結(jié)構(gòu)課程內(nèi)容包括線(xiàn)性表、棧和隊(duì)列、串、數(shù)組和廣義表、樹(shù)、圖等基本數(shù)據(jù)結(jié)構(gòu)和查找、排序等基本操作部分,每種數(shù)據(jù)結(jié)構(gòu)又包括順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),不同的存儲(chǔ)結(jié)構(gòu)又有各種算法的設(shè)計(jì)和算法分析。課程內(nèi)容豐富并且需要掌握的知識(shí)點(diǎn)較多,部分知識(shí)點(diǎn)非常抽象、枯燥,這就給學(xué)生的學(xué)習(xí)帶來(lái)了一定的困難。嚴(yán)格意義上說(shuō),教材是促進(jìn)教學(xué)質(zhì)量以及提升效果的關(guān)鍵和基礎(chǔ)。眾多出版的數(shù)據(jù)結(jié)構(gòu)課程教材,其中不乏許多特色較強(qiáng)的教材,但是這些教材都普遍過(guò)于側(cè)重理論教學(xué),難度大,并且課程教學(xué)比較枯燥。對(duì)于應(yīng)用型本科院校的學(xué)生而言,缺乏針對(duì)性和實(shí)用性,不能有效地促進(jìn)學(xué)生綜合能力及提高實(shí)踐能力。此外,為了完成教學(xué)任務(wù),教師在教學(xué)過(guò)程中需要花費(fèi)大量時(shí)間講授理論知識(shí),不得不減少實(shí)驗(yàn)教學(xué)課時(shí),數(shù)據(jù)結(jié)構(gòu)課程一般是64理論學(xué)時(shí)+16實(shí)踐學(xué)時(shí),直接影響培養(yǎng)學(xué)生的動(dòng)手能力,學(xué)生對(duì)課堂上的知識(shí)點(diǎn)難以消化,導(dǎo)致教學(xué)進(jìn)度緩慢,從而形成惡性循環(huán)。
3 教學(xué)探討
3.1 上好第一堂課和做好C/C++的復(fù)習(xí)
人與人見(jiàn)面的第一印象非常重要,學(xué)習(xí)亦是如此。當(dāng)學(xué)生第一次上數(shù)據(jù)結(jié)構(gòu)這門(mén)課程時(shí),教師應(yīng)當(dāng)想辦法引導(dǎo)學(xué)生對(duì)數(shù)據(jù)結(jié)構(gòu)產(chǎn)生興趣。先用生動(dòng)有趣的生活案例讓同學(xué)們對(duì)數(shù)據(jù)結(jié)構(gòu)有感性的認(rèn)識(shí)。學(xué)生在前期學(xué)習(xí)C/C++程序設(shè)計(jì)時(shí),已經(jīng)學(xué)習(xí)到基本的數(shù)據(jù)類(lèi)型和用結(jié)構(gòu)體去構(gòu)造一些相對(duì)復(fù)雜的數(shù)據(jù)類(lèi)型,比如學(xué)生信息。教師可以通過(guò)簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)問(wèn)題一步一步慢慢把學(xué)生引導(dǎo)到復(fù)雜的數(shù)據(jù)結(jié)構(gòu)上。比如,一開(kāi)始可以先問(wèn)學(xué)生如何存儲(chǔ)一個(gè)整數(shù),到如何存儲(chǔ)多個(gè)整數(shù),到如何存儲(chǔ)多個(gè)姓名,再問(wèn),如果這些姓名之間存在著父子、兄弟的關(guān)系,又應(yīng)該如何存儲(chǔ)呢?從而引出樹(shù)形結(jié)構(gòu)的概念。通過(guò)家族族譜姓名、成員之間的關(guān)系,可以讓學(xué)生快速理解樹(shù)形結(jié)構(gòu)。在學(xué)生感性理解了線(xiàn)性結(jié)構(gòu)、樹(shù)形結(jié)構(gòu)和圖形結(jié)構(gòu)之后,教師再去介紹數(shù)據(jù)結(jié)構(gòu)的概念。避免一上課就講數(shù)據(jù)結(jié)構(gòu)的基本概念,比如數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)對(duì)象、數(shù)據(jù)類(lèi)型、抽象數(shù)據(jù)類(lèi)型這種概念性的知識(shí)。知識(shí)點(diǎn)過(guò)于抽象,學(xué)生可能一下子就會(huì)對(duì)數(shù)據(jù)結(jié)構(gòu)失去了興趣導(dǎo)致后續(xù)的課程再也沒(méi)心聽(tīng)進(jìn)去。此外,對(duì)于應(yīng)用型本科院校,教師也應(yīng)避免太過(guò)深入的講解算法的時(shí)間復(fù)雜度概念和嚴(yán)格的求解過(guò)程。在學(xué)生掌握了數(shù)據(jù)結(jié)構(gòu)的概念并理解了數(shù)據(jù)結(jié)構(gòu)的3個(gè)方面內(nèi)容:邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和對(duì)數(shù)據(jù)施加的運(yùn)算之后,再去講解整書(shū)的知識(shí)框架,以線(xiàn)性結(jié)構(gòu)、樹(shù)形結(jié)構(gòu)、圖形結(jié)構(gòu)展開(kāi)教材的所有章節(jié),讓學(xué)生對(duì)數(shù)據(jù)結(jié)構(gòu)要學(xué)習(xí)什么內(nèi)容,如何學(xué)習(xí)有個(gè)大概的了解,只有搭好了框架,才能更好地向知識(shí)框架里面補(bǔ)充知識(shí),學(xué)生的學(xué)習(xí)也才會(huì)更加牢固。此外,C語(yǔ)言的結(jié)構(gòu)體和指針知識(shí)點(diǎn)是學(xué)好C/C++版本數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ),特別是指針,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)大量使用到指針知識(shí)點(diǎn),需要預(yù)留時(shí)間給學(xué)生復(fù)習(xí)C或C++的基礎(chǔ)知識(shí)。只有編程語(yǔ)言的基礎(chǔ)打牢,后面的學(xué)習(xí)才會(huì)更加順利。
3.2 借助微信答題小程序進(jìn)行在線(xiàn)測(cè)試,實(shí)時(shí)了解學(xué)生的學(xué)習(xí)效果
針對(duì)教學(xué)環(huán)節(jié)中學(xué)生遇到問(wèn)題沒(méi)有及時(shí)解決,教師的提問(wèn)只能了解到少數(shù)同學(xué)掌握知識(shí)的情況,而作業(yè)由于是學(xué)生課后完成,老師修改并統(tǒng)計(jì)之后才能了解學(xué)生的學(xué)習(xí)情況,信息相對(duì)滯后,兩種傳統(tǒng)方法都無(wú)法實(shí)時(shí)了解學(xué)生在課堂上的學(xué)習(xí)效果。借助市面上免費(fèi)的微信答題小程序,以 “答題考試王”為例,該微信小程序具有添加考題、添加考卷等功能,可以添加選擇題、填空題,并設(shè)置正確答案,最重要的是具有各種數(shù)據(jù)統(tǒng)計(jì)功能,比如學(xué)生的答題時(shí)間、分?jǐn)?shù)段報(bào)表、每一道題的答題正確率、對(duì)錯(cuò)考生名單。教師在上課之前,以重要的知識(shí)點(diǎn)設(shè)置部分的選擇題和填空題,在教學(xué)過(guò)程中,講解完某個(gè)重要知識(shí)點(diǎn)后,讓學(xué)生掃描二維碼進(jìn)行答題,教師可以實(shí)時(shí)查看數(shù)據(jù)統(tǒng)計(jì),了解每位學(xué)生各個(gè)知識(shí)點(diǎn)的掌握情況,如果某道題錯(cuò)誤率較高,說(shuō)明大部分同學(xué)沒(méi)有掌握好相應(yīng)的知識(shí)點(diǎn),教師可以重新講解易錯(cuò)知識(shí)點(diǎn),讓學(xué)生在課堂期間就消化所學(xué)知識(shí)。此外,教師還可以通過(guò)數(shù)據(jù)統(tǒng)計(jì),具體了解到每一位同學(xué)所遇到的問(wèn)題,進(jìn)行因材施教。
3.3 巧用案例提升教學(xué)效果
巧妙地應(yīng)用案例可通過(guò)引導(dǎo)學(xué)生開(kāi)發(fā)小軟件來(lái)激發(fā)學(xué)生的學(xué)習(xí)興趣,同時(shí)培養(yǎng)學(xué)生學(xué)以致用的能力,下面就以幾個(gè)簡(jiǎn)單的案例為例探究分階段實(shí)施案例教學(xué)的方法,通過(guò)在對(duì)應(yīng)章節(jié)中有針對(duì)性的引入案例,培養(yǎng)學(xué)生靈活應(yīng)用的能力,從而提升學(xué)生的編程技能和學(xué)習(xí)興趣。其一,圖書(shū)管理系統(tǒng)。實(shí)現(xiàn)一個(gè)小型書(shū)店的圖書(shū)信息管理系統(tǒng),其功能包括圖書(shū)信息的添加、刪除、更新和查詢(xún)。該案例對(duì)應(yīng)著線(xiàn)性表的課程教學(xué)內(nèi)容。其二,迷宮游戲。從入口開(kāi)始,不斷地對(duì)周?chē)牡缆愤M(jìn)行試探,若能走通,則進(jìn)入該位置,繼續(xù)對(duì)周?chē)M(jìn)行試探,反之則后退一步,繼續(xù)尋求其他的可行路徑。此案例的后進(jìn)先出規(guī)則可用于棧的教學(xué)。其三,貪吃蛇游戲。該游戲中,蛇移動(dòng)時(shí)的特點(diǎn)是,蛇尾消失,并且在移動(dòng)方向上加上一段蛇頭。隊(duì)列的特點(diǎn)就是先進(jìn)先出,因此可以利用這個(gè)特點(diǎn)來(lái)模擬蛇的移動(dòng)。用隊(duì)尾表示蛇頭,隊(duì)頭表示蛇尾。蛇的移動(dòng)就對(duì)應(yīng)著數(shù)據(jù)結(jié)構(gòu)中隊(duì)列的一個(gè)元素先出隊(duì)列,然后再將一個(gè)元素入隊(duì)。其四,編碼解碼系統(tǒng)。哈夫曼樹(shù)在數(shù)據(jù)編碼中的應(yīng)用是數(shù)據(jù)的最小冗余編碼問(wèn)題,將哈夫曼樹(shù)編碼/解碼放在二叉樹(shù)章節(jié)的案例中講解,有助于學(xué)生進(jìn)一步理解二叉樹(shù)。其五、校園導(dǎo)游模擬系統(tǒng)。設(shè)計(jì)一個(gè)校園導(dǎo)游程序,要求景點(diǎn)不少于6個(gè),以圖中頂點(diǎn)表示景點(diǎn),用邊來(lái)表示路徑,為來(lái)訪(fǎng)客人提供圖中任意景點(diǎn)問(wèn)路查詢(xún)。將此案例應(yīng)用到圖和最短路徑求解中,讓學(xué)生對(duì)所學(xué)知識(shí)有更直觀(guān)的理解。
4 結(jié)語(yǔ)
總而言之,應(yīng)用型本科數(shù)據(jù)結(jié)構(gòu)課程教學(xué)盡管存在諸多有待提升的地方,但只要找準(zhǔn)存在問(wèn)題并認(rèn)真分析其原因,就能針對(duì)性的通過(guò)相應(yīng)的教學(xué)改革激發(fā)學(xué)生的學(xué)習(xí)興趣,助力教育改革順利進(jìn)行。
參考文獻(xiàn):
[1] 李根強(qiáng).數(shù)據(jù)結(jié)構(gòu):C++版[M].北京:中國(guó)水利水電出版社,2005.
[2] 戎麗霞.基于CDIO理念的數(shù)據(jù)結(jié)構(gòu)課程教學(xué)研究[J].電腦知識(shí)與技術(shù),2011,7(10):2473-2474.
[3] 殷曉玲,夏啟壽.應(yīng)用型本科院?!皵?shù)據(jù)結(jié)構(gòu)”課程教學(xué)研究[J].池州學(xué)院學(xué)報(bào),2016,30(6):131-134.
[4] 徐新.基于案例驅(qū)動(dòng)的數(shù)據(jù)結(jié)構(gòu)課程教學(xué)方法研究[J].計(jì)算機(jī)教育,2019(3):44-47.
[5] 張?jiān)∪A.基于應(yīng)用型人才培養(yǎng)目標(biāo)的數(shù)據(jù)結(jié)構(gòu)教學(xué)研究[J].科技視界,2015(4):51-52.
[6] 翟宏宇.數(shù)據(jù)結(jié)構(gòu)與算法課程實(shí)踐教學(xué)改革的探討[J].重慶與世界(學(xué)術(shù)版),2013,30(11):93-95.
[7] 劉鑫.應(yīng)用型本科院校數(shù)據(jù)結(jié)構(gòu)課程教學(xué)改革與實(shí)踐[J].教育現(xiàn)代化(電子版), 2016(20):21-22.
[8] 阮儀,吳佳憶,曾柒龍.新工科背景下地方應(yīng)用型本科院校數(shù)據(jù)結(jié)構(gòu)教學(xué)改革與研究[J].高教學(xué)刊,2019(18):141-143.
[9] 寧正元,王秀麗,鐘一文,等.應(yīng)用型本科“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)改革的研究與實(shí)踐[J].計(jì)算機(jī)教育,2009(17):119-121.
【通聯(lián)編輯:王力】