摘要:在具體分析數(shù)據(jù)結(jié)構(gòu)實踐教學(xué)現(xiàn)狀的基礎(chǔ)上,重點闡述近幾年來針對數(shù)據(jù)結(jié)構(gòu)實踐教學(xué)進行的教學(xué)改革和調(diào)整措施以及下一步實踐教學(xué)中的改革探索要點。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);實踐教學(xué);分層教學(xué);微課
中圖分類號:G642.0 文獻標(biāo)識碼:A 文章編號:1009-3044(2018)15-0019-03
Data Structures Practice Teaching Exploration
MU Cui-xia
(China Womens University, Beijing 100101, China)
Abstract:On the basis of analyzing the present status of the practice teaching of data structures in China Womens University, the teaching reform and adjustment measures for the practical teaching in recent years are introduced. And the key points of future reform are pointed out..
Key words:Data Structures; practice teaching; hierarchical teaching; Micro-Course Video
1 引言
數(shù)據(jù)結(jié)構(gòu)課程是計算機科學(xué)與技術(shù)專業(yè)的專業(yè)基礎(chǔ)課和核心課,也是計算機程序設(shè)計的重要理論和實踐基礎(chǔ),其學(xué)習(xí)效果直接影響到學(xué)生的數(shù)據(jù)抽象能力和程序設(shè)計能力[1]。數(shù)據(jù)結(jié)構(gòu)實踐課與理論課相輔相成,是學(xué)生驗證、掌握和應(yīng)用數(shù)據(jù)結(jié)構(gòu)理論的重要途徑[2]。,但是課程特點、學(xué)生的整體素質(zhì)水平和基本程序設(shè)計能力等多因素影響了實踐教學(xué)進度和效果,進而影響了整個課程的教學(xué)效果。
2 數(shù)據(jù)結(jié)構(gòu)實踐教學(xué)現(xiàn)狀
1)首先,要客觀地認(rèn)識到,不同層次高校的學(xué)生整體素質(zhì),尤其是學(xué)習(xí)能力確實存在一定差距。只有坦然地承認(rèn)差距,才能認(rèn)真、耐心地了解學(xué)生學(xué)習(xí)過程中的困難和需求,才能坦然地采取一些雖不夠“高大上”,卻符合教學(xué)對象實際情況的教學(xué)措施,從而實實在在地提高教學(xué)質(zhì)量。
2)數(shù)據(jù)結(jié)構(gòu)教學(xué)是在第3學(xué)期,學(xué)生在第2學(xué)期剛學(xué)完C程序設(shè)計基礎(chǔ)。但學(xué)生在C程序設(shè)計基礎(chǔ)課程中主要學(xué)習(xí)和接觸的是簡單數(shù)據(jù)類型和單個函數(shù)程序,側(cè)重于基本語法學(xué)習(xí),而對數(shù)據(jù)結(jié)構(gòu)實踐中大量用到的頭文件、結(jié)構(gòu)體、指針、遞歸、多個函數(shù)的定義調(diào)用及在主函數(shù)里測試等實踐得相對少,理解較淺。因而對于數(shù)據(jù)結(jié)構(gòu)課程,不少學(xué)生覺得上課能聽懂,上機時無從下手或者程序錯誤很多。
3)傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)實踐教學(xué)形式,教師布置實驗任務(wù),適當(dāng)指導(dǎo),學(xué)生獨立完成,然后由教師驗收。這種方法的優(yōu)點是能夠充分發(fā)揮學(xué)生在算法設(shè)計方面的主觀能動性,不足是數(shù)據(jù)結(jié)構(gòu)設(shè)計和程序設(shè)計的難度較大,學(xué)生可能會感到無從下手,教師進行指導(dǎo)難度較大,實踐進度和效果不好控制[2-3]。
4)教材的選擇上,最初選擇了大部分高校采用的經(jīng)典教材嚴(yán)蔚敏C語言版,也是考慮到考研參考書目需求。在教學(xué)過程中,也發(fā)現(xiàn)教材不適合我們學(xué)生的實際情況,比如類C的算法描述,使得程序設(shè)計思想和實踐能力還不太成熟的學(xué)生在理解上有困難,在實踐時覺得難以開始[4]。
5)另外,新實施的教學(xué)計劃中課時減少也是一大挑戰(zhàn),需要對理論教學(xué)內(nèi)容和實踐內(nèi)容進行調(diào)整,首先抓好數(shù)據(jù)結(jié)構(gòu)的基本和重點內(nèi)容,而不能面面俱到。
3 數(shù)據(jù)結(jié)構(gòu)實踐教學(xué)改革和調(diào)整措施
在具體分析數(shù)據(jù)結(jié)構(gòu)實踐教學(xué)現(xiàn)狀的基礎(chǔ)上,可增設(shè)C程序課程設(shè)計,加強基礎(chǔ)知識實踐要求,調(diào)整課程大作業(yè)安排,發(fā)掘貼近實際案例和知識背后的故事,靈活運用微課等措施,進一步增強學(xué)生實踐積極性,提高實踐教學(xué)質(zhì)量。
3.1增設(shè)C程序課程設(shè)計環(huán)節(jié),彌補課程銜接問題
為了進一步提高學(xué)生動手編程實踐能力,一定程度上解決因?qū)W生基礎(chǔ)薄弱導(dǎo)致的課程銜接問題,可增設(shè)兩周共16學(xué)時的C程序課程設(shè)計。
在數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)中,學(xué)生覺得在理論課上算法思想能聽明白,一到上機就感覺無從下手;覺得代碼出錯誤時,調(diào)試修改難。這說明三方面有待加強:一是從分析問題到給出解決問題算法步驟的能力,二是從理清算法步驟對應(yīng)到編寫源代碼的能力,三是程序調(diào)試實踐能力。因此,在此課程設(shè)計環(huán)節(jié)中要加強問題分析訓(xùn)練,根據(jù)給出的問題,分析出解決的主要思路,進而給出細(xì)化的偽代碼或者流程圖。要加強編碼和調(diào)試訓(xùn)練,學(xué)生根據(jù)細(xì)化流程圖編寫出源代碼,調(diào)試測試程序。因此,教學(xué)中采取具體改革措施如下:
1)時間和內(nèi)容安排:在第3學(xué)期的前兩周,開展C程序課程設(shè)計,數(shù)據(jù)結(jié)構(gòu)從第3周開始。結(jié)合多年來的教學(xué)經(jīng)驗,針對學(xué)生上學(xué)期C程序設(shè)計實踐的薄弱點和數(shù)據(jù)結(jié)構(gòu)實踐的具體需要,專門編寫了課程設(shè)計指導(dǎo)書。為了進一步強化學(xué)生編碼規(guī)范,指導(dǎo)書中給出了明確的代碼書寫要求和編碼原則,在實踐過程中進行督促并納入考核點。為了讓學(xué)生復(fù)習(xí)和掌握基礎(chǔ)的知識要點,并能靈活運用在實踐案例中,設(shè)計了基礎(chǔ)和提高層次的例題和實訓(xùn)題目。在例題中強調(diào)算法分析,采用偽代碼或者流程圖進行算法分析訓(xùn)練,并給出參考源碼。在掌握例題的基礎(chǔ)上,要求學(xué)生獨立完成實訓(xùn)題目。涉及的知識要點包括輸入輸出、常用數(shù)據(jù)類型和函數(shù)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)、數(shù)組、函數(shù)、結(jié)構(gòu)體、指針以及文件等。然后進行分組合作完成一個綜合課程設(shè)計,讓學(xué)生從軟件開發(fā)的角度開始分析問題、解決問題,教師對開發(fā)過程進行適當(dāng)指導(dǎo)。另外,指導(dǎo)書中給出了兩個完整案例給學(xué)生參考,拓展案例由小到大、由淺入深,使設(shè)計的功能越來越完善。指導(dǎo)書努力做到幫助學(xué)生從低到高的逐步提高編程和動手能力。
2)實踐考核方式:以考核方式引導(dǎo)整個實踐過程。考核總成績由基礎(chǔ)練習(xí)(例題和實訓(xùn)題)和綜合課程設(shè)計兩部分組成。根據(jù)銜接數(shù)據(jù)結(jié)構(gòu)課程教學(xué)需要以及學(xué)生的具體學(xué)習(xí)基礎(chǔ)情況,為了最大程度調(diào)動學(xué)生實踐積極性和能動性,基礎(chǔ)練習(xí)比例從40%逐步調(diào)整到70%,課程設(shè)計比例從60%調(diào)整到30%;從只有綜合課程設(shè)計答辯,調(diào)整為當(dāng)前的基礎(chǔ)練習(xí)也進行抽查答辯,答辯內(nèi)容包括設(shè)計思想、代碼分析、結(jié)果分析、經(jīng)驗體會等,進一步突出基礎(chǔ)的重要性。四次共16節(jié)課中都明確給出任務(wù)清單,并及時了解每次課的任務(wù)完成情況,針對具體問題及時集中或者個別指導(dǎo)??紤]到實踐內(nèi)容較多,基礎(chǔ)練習(xí)答辯一般安排在第2和3周,另外由于跟數(shù)據(jù)結(jié)構(gòu)內(nèi)容的連貫性,答辯可適當(dāng)占用前2周數(shù)據(jù)結(jié)構(gòu)上機時間和課外時間。但是,綜合課程設(shè)計的答辯會適當(dāng)延長到第5周,為了促進分組合作的有效性,每個人對合作都要負(fù)責(zé)任,采取當(dāng)天隨機抽取一人負(fù)責(zé)答辯的方式。另外,下一步計劃嘗試基礎(chǔ)練習(xí)采取2人一組,共同討論分析完成,以應(yīng)對任務(wù)多時間短、基礎(chǔ)薄弱學(xué)生壓力大等問題。還將設(shè)計細(xì)化的課程教學(xué)效果調(diào)查問卷,深入了解學(xué)生需求,調(diào)整教學(xué)內(nèi)容和方式等。
3.2在數(shù)據(jù)結(jié)構(gòu)教學(xué)中不斷加強基礎(chǔ)知識的上機實踐要求
考慮到學(xué)生的實際情況,在課堂教學(xué)中主要采取源碼形式來講解各種結(jié)構(gòu)和算法(線性表、棧、隊列、二叉樹、查找、排序等)的實現(xiàn),基礎(chǔ)實踐就是要求編寫函數(shù)代碼實現(xiàn)并在主函數(shù)中測試各種數(shù)據(jù)結(jié)構(gòu)的基本算法,完成后提交源碼即可。為了夯實基礎(chǔ)知識,提高基礎(chǔ)編程能力,不斷調(diào)整對基礎(chǔ)知識實踐的要求,加強對基礎(chǔ)知識進行復(fù)習(xí)的書面作業(yè)要求,重要基礎(chǔ)知識點都留書面作業(yè),將書面作業(yè)成績計入平時成績,并提高分值比例,這樣可以引導(dǎo)學(xué)生重視并加強。然后,將基礎(chǔ)知識的實踐作業(yè)提交情況和抽查答辯情況都計入平時成績,并調(diào)整分值比例。通過期末考試試卷平均成績能較明顯看到重視基礎(chǔ)的效果。另外,學(xué)生學(xué)習(xí)基礎(chǔ)和能力確實存在差異,明確分層要求哪些是必須掌握的基礎(chǔ),哪些是可以擴展選做的,也是很有必要的[3-4]。
3.3調(diào)整課程大作業(yè)的安排和要求,讓不同基礎(chǔ)和能力的同學(xué)都能有所收獲[3]
在數(shù)據(jù)結(jié)構(gòu)教學(xué)過程中,會有同學(xué)疑問,學(xué)了數(shù)據(jù)結(jié)構(gòu)到底有什么用。雖然概論一章曾經(jīng)講授過一些實例,但終究不如自己實踐體驗來得深刻。通過課程大作業(yè),利用掌握的基礎(chǔ)知識,實現(xiàn)一個貼近生活的實例,是加深理解和提高能力的有效途徑。利用堆棧實現(xiàn)迷宮游戲,很多同學(xué)答辯完后表示很有成就感,但也確實經(jīng)歷了克服困難的過程,而這一克服困難逐步解決問題的過程,也正是學(xué)生能力提高最快的階段。但也不可避免地出現(xiàn)了問題,比如基礎(chǔ)比較弱的同學(xué),完成基礎(chǔ)練習(xí)都很吃力,大作業(yè)就會覺得太難,最后效果也就不理想。因此,在大作業(yè)的難度設(shè)置上,首先要考慮大部分同學(xué)的能力情況,還可以考慮有適當(dāng)難度差異的題目供學(xué)生選擇。同時,如何避免學(xué)生趨向選擇小難度以及考核公平性,這是需要繼續(xù)探討的問題[5]。
這幾年教學(xué)中,有個思路調(diào)整,就是首先夯實基礎(chǔ)、抓好主線,在此基礎(chǔ)上進行拓展。比如,有學(xué)生在大作業(yè)答辯過程中,能很清晰表達(dá)算法思想、分析代碼等,但平時基礎(chǔ)練習(xí)卻做得不好,期末考試成績也不理想。因此,課程大作業(yè)在總成績中占分比例調(diào)整降低。另外,為了滿足基礎(chǔ)好的同學(xué)的學(xué)習(xí)需求,可以適當(dāng)提供完整的有趣或者貼近生活的擴展案例代碼,進行讀代碼這種形式的學(xué)習(xí),也可提供同學(xué)間分享交流機會。
3.4小舉措增強學(xué)生自信心,提高學(xué)習(xí)積極性
1)在教學(xué)中多從正面引導(dǎo)和肯定,增強學(xué)生自信心。如果學(xué)生有抵觸或者畏難情緒,肯定會影響學(xué)生的學(xué)習(xí)效果。教師在教學(xué)中確實需要正視學(xué)生的學(xué)習(xí)基礎(chǔ)和能力的現(xiàn)實情況,必須承認(rèn)不同層次學(xué)校的學(xué)生之間學(xué)習(xí)基礎(chǔ)和能力差距的存在,才能理直氣壯地安排合適的教學(xué)內(nèi)容和方式方法。作為中華女子學(xué)院唯一的工科系,較大比例學(xué)生不是第一志愿入學(xué)計算機專業(yè)。經(jīng)過一年的學(xué)習(xí)時間,每位學(xué)生對計算機專業(yè)了解和接受程度不同,大學(xué)二年級更是關(guān)鍵的一年。因此,老師在實踐教學(xué)過程中更需要細(xì)致的情緒關(guān)懷,及時了解學(xué)生在實踐過程中碰到問題,給予積極回應(yīng)或幫助。尤其在學(xué)生學(xué)習(xí)困難或者壓力大時,更要理解和尊重,耐心疏解,正面引導(dǎo),具體指導(dǎo),多正面肯定每次哪怕小小進步。同時,在教學(xué)進度安排上要考慮整體學(xué)生情況,抓牢主線夯實基礎(chǔ)為先,并注意教學(xué)內(nèi)容的螺旋式進展,這樣可以一定程度上減小學(xué)生心理壓力,進而增強自信心[4]。
2)聯(lián)系實際應(yīng)用,,關(guān)注技術(shù)背后的故事,激發(fā)學(xué)生學(xué)習(xí)興趣。比如,實現(xiàn)了隊列的基本操作之后,帶著學(xué)生一起分析和實現(xiàn)醫(yī)院就診排隊?wèi)?yīng)用,加深對隊列邏輯結(jié)構(gòu)特點的理解以及數(shù)據(jù)結(jié)構(gòu)在解決較復(fù)雜問題中的應(yīng)用。實現(xiàn)堆棧的基本操作之后,帶著學(xué)生先玩迷宮游戲,再一起分析利用堆棧如何實現(xiàn)走迷宮。在講赫夫曼編碼前,先引入赫夫曼當(dāng)初發(fā)明赫夫曼編碼的背景故事,引起學(xué)生的好奇心和求知欲。類似這些小舉措?yún)s可以激發(fā)學(xué)生的學(xué)習(xí)興趣。
3)一起營造分享、合作、互助和積極的學(xué)習(xí)氛圍。鼓勵學(xué)生在實踐過程中多討論,大作業(yè)合作完成,遇到困難互相幫助。發(fā)現(xiàn)有優(yōu)化算法的例子,老師及時表揚并讓學(xué)生跟大家一起分享討論,從而營造積極的集體學(xué)習(xí)氛圍。
3.5發(fā)揮微課在數(shù)據(jù)結(jié)構(gòu)實踐教學(xué)中作用
互聯(lián)網(wǎng)+時代的教育改革,將以學(xué)生和學(xué)習(xí)為中心,創(chuàng)造性地利用信息技術(shù),提高教與學(xué)的效率,改善教與學(xué)的體驗,更好地滿足個性化的學(xué)習(xí)需求。“翻轉(zhuǎn)課堂”模式中,學(xué)生在課外通過看視頻講座、閱讀功能增強的電子書等形式,自主規(guī)劃學(xué)習(xí)內(nèi)容、學(xué)習(xí)節(jié)奏、風(fēng)格和呈現(xiàn)知識的方式來完成知識的學(xué)習(xí)。而在課堂上教師答疑解惑,有更多的時間與每個人交流,學(xué)生之間也可以討論,可以開展知識運用的實驗實踐等,最大程度地滿足學(xué)生的個性化學(xué)習(xí)需要。微課是實現(xiàn)“翻轉(zhuǎn)課堂”教學(xué)組織形式的一種常用的課件設(shè)計方案,它基于學(xué)科的核心知識點設(shè)計而成,以短小教學(xué)視頻為核心的、具有明確教學(xué)環(huán)節(jié)的結(jié)構(gòu)化和微型化在線教學(xué)課件?;谖⒄n的翻轉(zhuǎn)課堂教學(xué)模式能更好地做到分層教學(xué)、因材施教,而且更有利于學(xué)生的個性發(fā)展。
分析女院計算機專業(yè)學(xué)生的具體情況,結(jié)合數(shù)據(jù)結(jié)構(gòu)課程本身的特點,完全實現(xiàn)翻轉(zhuǎn)課堂難度極大,但是將微課作為傳統(tǒng)課堂的一種延伸和補充,將會更好地滿足學(xué)生的學(xué)習(xí)需求,改善教學(xué)效果。在算法設(shè)計實踐過程中,最容易發(fā)現(xiàn)學(xué)生的不同學(xué)習(xí)能力和需求,也更適宜開展微課應(yīng)用,也利于教師不斷總結(jié)和完善重點和難點的教學(xué)方法方式[6-7]。比如稍慢于實踐進度的,有疑問可通過微課進行回顧,自行安排學(xué)習(xí)和實踐進度??煊趯嵺`進度的,可通過補充視頻自學(xué)來加大實踐力度,拓展學(xué)習(xí)和實踐內(nèi)容。
另外,本學(xué)期選擇了李春葆版的數(shù)據(jù)結(jié)構(gòu)教程,屬于升級微課版,書中附帶了一些微課,直接掃描二維碼即可看視頻,方便了學(xué)生預(yù)習(xí)和復(fù)習(xí)。另外總結(jié)學(xué)生實踐過程的常見問題等需求,自行制作相應(yīng)微課資源,比如vs2010使用指南微課,常見錯誤調(diào)試方法,赫夫曼編碼預(yù)習(xí)微課等。這樣可以更好地補充和輔助學(xué)生的課堂內(nèi)外的學(xué)習(xí)與實踐,滿足學(xué)生個性化需求。
4 結(jié)語
在數(shù)據(jù)結(jié)構(gòu)實踐教學(xué)中,堅持夯實基礎(chǔ)和抓住主線,根據(jù)學(xué)生實際情況及時調(diào)整實踐內(nèi)容、進度安排和考核方式等,努力激發(fā)學(xué)生學(xué)習(xí)興趣,營造積極學(xué)習(xí)氛圍。適當(dāng)引入微課資源,也將更好地進行分層教學(xué),滿足個性化的需求。
參考文獻:
[1]穆翠霞.女院數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)探索與體會[J].計算機教育,2008(19):67-70+77.
[2]李東暉,申聰,戴小鵬,等.數(shù)據(jù)結(jié)構(gòu)實踐教學(xué)體系與教學(xué)設(shè)計研究[J].課程教育研究,2017(33):34-36.
[3]陳姝穎,陳雷,石艷榮,等.面向應(yīng)用型本科教育的數(shù)據(jù)結(jié)構(gòu)課程實踐改革初探[J].高教學(xué)刊,2017(12):99-100+103.
[4]劉小飛,李社蕾,李明杰.應(yīng)用型本科高校數(shù)據(jù)結(jié)構(gòu)教學(xué)改革初探——以三亞學(xué)院為例[J].科教導(dǎo)刊(上旬刊),2017(07):130-131.
[5]崔彩霞,菅小艷,龐天杰.地方高校計算機類專業(yè)“算法與數(shù)據(jù)結(jié)構(gòu)”實踐教學(xué)改革[J].計算機教育,2016(07):52-54.
[6]徐翀.微課在數(shù)據(jù)結(jié)構(gòu)課程中的應(yīng)用[J].中國教育信息化,2014(12):37-39.
[7]張瑞霞,文益民,周婭,等.數(shù)據(jù)結(jié)構(gòu)課程微課設(shè)計與應(yīng)用研究[J].計算機教育,2015(16):59-62.