廖國富
摘? 要: “數(shù)據(jù)結(jié)構(gòu)”是計算機(jī)類專業(yè)的核心課程,學(xué)好數(shù)據(jù)結(jié)構(gòu)有利于抽象思維的鍛煉和編程能力的提高。文章從“教”與“學(xué)”兩個角度分析了當(dāng)前應(yīng)用型本科數(shù)據(jù)結(jié)構(gòu)課程教學(xué)中的主要問題,結(jié)合應(yīng)用型本科教學(xué)實際,提出了提高該課程教學(xué)效果的具體方法。
關(guān)鍵詞: 數(shù)據(jù)結(jié)構(gòu); 應(yīng)用型本科; 教學(xué)效果; 方法
中圖分類號:G642? ? ? ? ? 文獻(xiàn)標(biāo)識碼:A? ? ? 文章編號:1006-8228(2020)12-88-03
Abstract: "Data Structure" is the core course of computer specialty. Learning data structure is beneficial to improve the abilities of abstract thinking and programming. This paper analyzes the main problems existing in the current teaching of "Data Structure" course for applied undergraduate from the angles of "teaching" and "learning", and combined with the practice of the applied undergraduate teaching, the specific methods to optimize the teaching effect of the course are put forward.
Key words: data structure; applied undergraduate; teaching effect; method
0 引言
提高“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)效果一直是計算機(jī)類專業(yè)教學(xué)的一個難點。對于應(yīng)用型本科“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)改革,鐘美從教學(xué)內(nèi)容、教學(xué)方法、教學(xué)手段和考核方式四個方面提出了教改措施[1]。殷曉玲等提出了因材施教,兼顧全面,形象教學(xué)與啟發(fā)式教學(xué)相結(jié)合[2]。楊利英等提出了提升數(shù)據(jù)結(jié)構(gòu)課堂教學(xué)效果的六種方法[3]。這些論文主要從學(xué)生基礎(chǔ)、教學(xué)方法兩方面分析問題,提出了對應(yīng)的改進(jìn)措施和方法。本文力求從“教”與“學(xué)”兩個角度深入地分析該課程教學(xué)中存在的主要問題,系統(tǒng)地總結(jié)能提高該課程教學(xué)效果的方法。
1 當(dāng)前應(yīng)用型本科“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)中的主要問題
當(dāng)前應(yīng)用型本科“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)中存在的主要問題,首先是課程定位不準(zhǔn)的問題,其次是前序課程的銜接問題,當(dāng)然,關(guān)鍵還是授課方法的問題。
1.1 課程定位不準(zhǔn),動力不足
教:應(yīng)用型本科計算機(jī)課程設(shè)置,重點放在實用技術(shù)上,如果一味地追求實用技術(shù)而忽略基礎(chǔ)理論會使學(xué)生的后期發(fā)展受阻,很難達(dá)到較高的水平。因此,應(yīng)用型本科可拋棄基礎(chǔ)理論課程。個別應(yīng)用型大學(xué)大幅度壓縮“數(shù)據(jù)結(jié)構(gòu)”總學(xué)時,這是短視行為;而有的學(xué)校又走向另一個極端,要求向雙一流高??待R,教材難度大,內(nèi)容多,超出學(xué)生能力范圍,人才培養(yǎng)方案和教學(xué)大綱不符合學(xué)生實際情況。在實際教學(xué)中,教師沒能積極強調(diào)學(xué)習(xí)“數(shù)據(jù)結(jié)構(gòu)”的重要性,缺少對學(xué)生興趣的有效引導(dǎo)。
學(xué):以津橋?qū)W院為例,錄取平均分?jǐn)?shù)一般只超過二本線幾分,也就是差一本線近百分,基礎(chǔ)比較薄弱。這類學(xué)生大多學(xué)習(xí)主動性不強、自學(xué)能力和學(xué)習(xí)習(xí)慣欠佳。相當(dāng)一部分學(xué)生因為認(rèn)識不到“數(shù)據(jù)結(jié)構(gòu)”的地位、作用,導(dǎo)致學(xué)習(xí)動力不足,態(tài)度不積極。很多學(xué)生是到應(yīng)聘的時候,甚至是工作后才認(rèn)識到“數(shù)據(jù)結(jié)構(gòu)”的重要性,后悔當(dāng)初不好好學(xué)習(xí)。
1.2 前置課程基礎(chǔ)不牢,課程銜接不好
教:例如為了提高C語言的及格率,降低了C語言考核標(biāo)準(zhǔn),如不考核指針等。這樣就為“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)留下了一個大隱患,C語言函數(shù)、結(jié)構(gòu)體、指針等基礎(chǔ)知識掌握不牢,到上“數(shù)據(jù)結(jié)構(gòu)”課程時又必須花時間來惡補。
學(xué):編寫程序、調(diào)試程序的能力偏弱、實踐動手能力較差,大多數(shù)學(xué)生沒有主動利用假期進(jìn)行補差的意識和行動。學(xué)習(xí)吃力,易產(chǎn)生挫敗感,畏難情緒比較重。
1.3 教法呆板,效果不佳
教:一是過度依賴PPT,照屏宣科,缺少黑板推演,學(xué)生易產(chǎn)生疲勞感,跟不上,提不起興趣。滿堂灌,講授內(nèi)容偏多、偏雜,拓展知識點偏難。最致命的是教學(xué)方法不靈活,“數(shù)據(jù)結(jié)構(gòu)”本來理論性強,教學(xué)方法如果一成不變,容易導(dǎo)致課堂學(xué)生思維不活躍。如何把枯燥的理論變得有趣、生動,是教授“數(shù)據(jù)結(jié)構(gòu)”必須解決的問題。二是師生比偏低,老師與學(xué)生面對面交流少,師生感情疏遠(yuǎn),缺乏跟蹤指導(dǎo),課堂上學(xué)生有時候跟不上思路,難以消化,而課后學(xué)習(xí)疑問又得不到及時解決,這會讓學(xué)生逐漸失去學(xué)習(xí)興趣。三是上機(jī)實驗效果不佳,解決實際問題的能力沒有得到有效訓(xùn)練。
學(xué):學(xué)習(xí)自覺性差,主動預(yù)習(xí)、主動復(fù)習(xí)的少,課后作業(yè)抄襲成風(fēng),沒有達(dá)到復(fù)習(xí)鞏固的效果。很多學(xué)生隨波逐流,等靠思想重。少數(shù)學(xué)生自暴自棄,厭學(xué)情緒重。學(xué)生普遍比較“獨”、比較自我,同學(xué)間缺乏相互學(xué)習(xí)和交流。在學(xué)習(xí)上花的時間少,不用心,不用力,這樣是學(xué)不好“數(shù)據(jù)結(jié)構(gòu)”的。
2 如何提高“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)效果
提高“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)效果必須立足應(yīng)用型本科教學(xué)實際。筆者認(rèn)為,最重要的實際就是學(xué)生的實際情況,否則,任何方法都是無的放矢。立足實際,找準(zhǔn)課程定位是提高課程教學(xué)效果的前提,無縫銜接是基礎(chǔ),靈活運用教學(xué)方法是關(guān)鍵。
2.1 找準(zhǔn)定位,明確目標(biāo)
教:制定符合學(xué)生實際情況的人才培養(yǎng)方案和教學(xué)大綱,兼顧實用技術(shù)和基礎(chǔ)理論,要多參考同類學(xué)校而不是參考雙一流建設(shè)高校、高職高專院校?!皵?shù)據(jù)結(jié)構(gòu)”是計算機(jī)類專業(yè)的核心課程,是為算法邏輯服務(wù)的[4],學(xué)好“數(shù)據(jù)結(jié)構(gòu)”有利于抽象思維的鍛煉和編程能力的提高。教師有責(zé)任讓每一個學(xué)生真正認(rèn)識到“數(shù)據(jù)結(jié)構(gòu)”的重要性。每次課、每節(jié)課都要引導(dǎo)學(xué)生明確教學(xué)的目標(biāo)、意義。在此基礎(chǔ)上,針對應(yīng)用型本科學(xué)生特點,以“線性表”、“樹”、“圖”、“查詢”、“排序”為主線,設(shè)計好具體教學(xué)內(nèi)容,突出重點。比如“排序”重點是直接插入排序、希爾排序、快速排序。
學(xué):通過“專業(yè)導(dǎo)論”課程學(xué)習(xí),對專業(yè)的發(fā)展過程有了比較全面的了解、對自身的職業(yè)發(fā)展前景要充滿信心,通過C語言的學(xué)習(xí),培養(yǎng)了程序設(shè)計的興趣。弄明白了學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的重要意義,才會主動面對學(xué)習(xí)困難,勤奮學(xué)習(xí)。
2.2 無縫銜接,準(zhǔn)備充分
教:教好“C語言程序設(shè)計”,有意識的為“數(shù)據(jù)結(jié)構(gòu)”課程作好準(zhǔn)備。突出函數(shù)、結(jié)構(gòu)體、指針等重點,加強程序設(shè)計和調(diào)試訓(xùn)練。對C語言考核成績較差的學(xué)生利用假期補差提供一定的幫助和支持。
學(xué):必須解決掉畏難情緒。學(xué)好C語言要循序漸進(jìn),代碼要多寫、多讀、多調(diào)試。要主動利用線上學(xué)習(xí)資源補差,課程資源推薦中國大學(xué)MOOC開設(shè)的C語言課程,技術(shù)論壇推薦CSDN論壇的“C語言”版塊。
2.3 教法靈活,實用有效
找準(zhǔn)了定位,做好了課程銜接,接下來最重要的就是“怎樣教”了。教學(xué)方法的合理選擇和靈活運用,必須要以教學(xué)目標(biāo)為依據(jù),以學(xué)生為出發(fā)點。針對應(yīng)用型本科學(xué)生特點,因材施教,循循善誘,靈活的優(yōu)化組合和綜合運用?!皵?shù)據(jù)結(jié)構(gòu)”教學(xué)效果好不好,關(guān)鍵看學(xué)生是否“聽得懂”、“會應(yīng)用”。而有效的教學(xué)關(guān)鍵在于營造一個生動、活潑、民主、和諧的課堂氛圍[5]。筆者總結(jié)了近幾年的“數(shù)據(jù)結(jié)構(gòu)”教學(xué)實踐經(jīng)驗,除了逆向教學(xué)法、反芻教學(xué)法[6]以外,比較有效的教學(xué)方法還有問題導(dǎo)入法、演示法、講授法和比較法。
2.3.1 問題導(dǎo)入法
通過講解貼近學(xué)生生活的故事,創(chuàng)設(shè)問題情境,啟發(fā)學(xué)生理解學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的好處,感受數(shù)據(jù)結(jié)構(gòu)和算法的趣味性。數(shù)據(jù)結(jié)構(gòu)課程里的每一種邏輯結(jié)構(gòu)都有和現(xiàn)實世界相通的地方,如棧的概念和現(xiàn)實生活中的子彈夾、死胡同類似,隊列和食堂、銀行等地方的排隊服務(wù)類似,樹型結(jié)構(gòu)可以和家族譜、學(xué)校、公司的組織圖作比較,圖狀結(jié)構(gòu)則可以應(yīng)用于解決哥德斯堡七橋問題、最短路徑、拓?fù)渑判虻葐栴}[3]。
2.3.2 演示法
充分利用實物、動畫演示算法的基本思想,讓講解更直觀、更生動。比如,講授直接插入排序和基數(shù)排序算法,可以先用撲克牌演示,或者用B站的動畫演示,也可直接演示程序的運行結(jié)果,有助于學(xué)生理解問題本身,帶著問題帶著目標(biāo)聽課更專心。
2.3.3 講授法
數(shù)據(jù)結(jié)構(gòu)這門課程不僅是計算機(jī)類專業(yè)的重要基礎(chǔ)課,實際上也是在軟件開發(fā)過程中承上啟下的課程,對培養(yǎng)學(xué)生的編程能力具有很重要的作用[7]。為了提高程序設(shè)計、分析能力,要少用PPT,因為PPT缺乏邏輯推導(dǎo),學(xué)生不容易跟上老師的思路,容易走神。要擅于用黑板來推導(dǎo)算法思路和關(guān)鍵步驟,層次、邏輯更清晰。知識點講授,要點、線、面結(jié)合,既有系統(tǒng)性,又抓基礎(chǔ)和重點。突破難點,一個一個來,絕不貪多。要適度拓展,比如計數(shù)排序,既簡單又易理解,學(xué)生如果領(lǐng)會到算法的妙處,就會增強學(xué)習(xí)的信心。
2.3.4 比較法
各種數(shù)據(jù)結(jié)構(gòu)和算法本身具有很強的規(guī)律性、相似性和相關(guān)性。例如,對于幾種主要的排序算法,在時間復(fù)雜度、空間復(fù)雜度、穩(wěn)定性等方面進(jìn)行比較,便于學(xué)生對幾種排序算法的優(yōu)缺點進(jìn)行對比理解和記憶,在實際應(yīng)用中才能根據(jù)具體情況做出最優(yōu)的選擇。對順序表與鏈表、普里姆算法與克魯斯卡爾算法、幾種查找算法進(jìn)行比較,都會收到很好的教學(xué)效果。
2.3.5 其他方法
教師要充分利用課堂時間建立良好的、和諧的師生關(guān)系,鼓勵學(xué)生提問,輔導(dǎo)耐心、評價公正。通過微信公眾號、QQ群指導(dǎo)學(xué)生學(xué)習(xí)和共享交流,拉近師生之間的距離。上機(jī)實驗除了算法驗證性實驗,還要布置一定數(shù)量的實際應(yīng)用題目。建立健全助教崗位制度。助教崗位承擔(dān)課堂教輔、批改作業(yè)、輔導(dǎo)答疑、協(xié)助上機(jī)實踐等教學(xué)輔助任務(wù)[8]。
學(xué)生要主動融入課堂,培養(yǎng)協(xié)作精神,自覺預(yù)習(xí),認(rèn)真聽講、上機(jī)、作業(yè),自覺復(fù)習(xí),勤于總結(jié),培養(yǎng)終身學(xué)習(xí)的意識和能力。
3 結(jié)束語
經(jīng)過上述課程教學(xué)改革實踐,學(xué)生的學(xué)習(xí)興趣更濃,主動性更強,抽象思維和編程能力有明顯的提高。近幾年,越來越多的學(xué)校選用Java或者Python作為“數(shù)據(jù)結(jié)構(gòu)”的描述語言,上述方法也有一定的借鑒作用。今后,還要進(jìn)一步結(jié)合Java、Python語言自身特點來創(chuàng)新“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué)方法。
參考文獻(xiàn)(References):
[1] 鐘美.以培養(yǎng)應(yīng)用型人才為目標(biāo)的數(shù)據(jù)結(jié)構(gòu)教學(xué)改革[J].計算機(jī)教育,2014.14:26-29
[2] 殷曉玲等.應(yīng)用型本科院?!皵?shù)據(jù)結(jié)構(gòu)”課程教學(xué)研究[J].池州學(xué)院學(xué)報,2016.30(6):131-134
[3] 楊利英,盛立杰.提升數(shù)據(jù)結(jié)構(gòu)課堂教學(xué)效果的六種方法[J].計算機(jī)教育,2015.13:86-89
[4] 李曉明.為什么會有“數(shù)據(jù)結(jié)構(gòu)”?[J].計算機(jī)教育,2019.1:3-4
[5] 胡守強.有效的教學(xué)關(guān)鍵在于課堂氛圍[N].中國教育報,2019-11-04.
[6] 張景祥等.專業(yè)基礎(chǔ)課如何走出理論與實用的兩難困境[J].計算機(jī)教育,2015.3:80-83
[7] 劉志,趙明珠,劉端陽.面向編程能力培養(yǎng)的數(shù)據(jù)結(jié)構(gòu)課程教學(xué)方法研究[J].計算機(jī)教育,2015.8:66-69
[8] 教育部.教育部關(guān)于深化本科教育教學(xué)改革全面提高人才培養(yǎng)質(zhì)量的意見[EB/OL].http://www.moe.gov.cn/srcsite/A08/s7056/201910/t20191011_402759.html,2019-10-08.