前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇數(shù)據(jù)結(jié)構(gòu)與算法范文,相信會為您的寫作帶來幫助,發(fā)現(xiàn)更多的寫作思路和靈感。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu)與算法;教學(xué)改革;應(yīng)用型人才培養(yǎng)
中圖分類號:G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號:1674-9324(2017)23-0128-02
一、引言
1.地方高等院校應(yīng)用型人才培養(yǎng)改革。地方高等院校的教學(xué)目標(biāo)正逐步轉(zhuǎn)型為以培養(yǎng)應(yīng)用型人才為目標(biāo),課程教學(xué)方法及設(shè)置要求學(xué)生在學(xué)習(xí)過程中能學(xué)到與社會接軌的知識,從而能提高學(xué)生的學(xué)習(xí)興趣,且在系統(tǒng)學(xué)習(xí)后,即畢業(yè)后進(jìn)入社會能較快上手,從而培養(yǎng)出適應(yīng)社會需求的應(yīng)用型人才。
2.《數(shù)據(jù)結(jié)構(gòu)與算法》課程地位?!稊?shù)據(jù)結(jié)構(gòu)與算法》是信息與計(jì)算科學(xué)專業(yè)的核心基礎(chǔ)課程。數(shù)據(jù)結(jié)構(gòu)的研究范圍主要涉及數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和操作的實(shí)現(xiàn),內(nèi)容是程序設(shè)計(jì)(特別是非數(shù)值計(jì)算的程序設(shè)計(jì))的基礎(chǔ),也是設(shè)計(jì)和實(shí)現(xiàn)編譯程序、操作系統(tǒng)、數(shù)據(jù)系統(tǒng)及其他系統(tǒng)程序和大型應(yīng)用程序的重要基礎(chǔ),是一門理論性強(qiáng)且實(shí)踐性強(qiáng)的課程。通過這門課程的學(xué)習(xí),學(xué)生在程序編寫的過程中能夠正確、合理地選擇數(shù)據(jù)的存儲結(jié)構(gòu),有效地設(shè)計(jì)算法,從而提高軟件整體質(zhì)量和效率。
3.本文研究方向。本文著重研究如何針對信息與計(jì)算科學(xué)專業(yè)的特點(diǎn),地方院校培養(yǎng)應(yīng)用型人才的教育模式,學(xué)生基礎(chǔ)相對薄弱的情況,設(shè)計(jì)合理的教學(xué)方法,達(dá)到應(yīng)用型人才培養(yǎng)的目的。
二、傳統(tǒng)教學(xué)中存在的問題
筆者多年從事數(shù)據(jù)結(jié)構(gòu)與算法課程的教學(xué),經(jīng)與學(xué)生進(jìn)行溝通后,總結(jié)出傳統(tǒng)教學(xué)中存在的問題有如下幾點(diǎn):
1.理論性強(qiáng),知識點(diǎn)多。數(shù)據(jù)結(jié)構(gòu)與算法課程的知識點(diǎn)多,理論性和實(shí)踐性均較強(qiáng),且有高度抽象的特點(diǎn)。故要求學(xué)生對程序設(shè)計(jì)語言和相應(yīng)的數(shù)學(xué)知識掌握要足夠深入,才能較好地學(xué)習(xí)。信息計(jì)算科學(xué)專業(yè)的學(xué)生數(shù)學(xué)基礎(chǔ)較薄弱,學(xué)生反映,理論過于抽象且內(nèi)容較多,越學(xué)后面越不懂,內(nèi)容枯燥不易理解。
2.上機(jī)動(dòng)手能力差。數(shù)據(jù)結(jié)構(gòu)與算法課程中一個(gè)重要部分是上機(jī)編寫程序?qū)崿F(xiàn)算法,學(xué)生由于上一門程序設(shè)計(jì)課程還未理解,難將算法實(shí)現(xiàn),體會不到編程的樂趣、算法的優(yōu)美,在學(xué)習(xí)中易失去信心。
在上機(jī)實(shí)踐觀察中學(xué)生常出現(xiàn)兩種情形:一種是理論尚未理解透徹,后續(xù)上機(jī)實(shí)踐根本毫無頭緒,不能靈活應(yīng)用推廣;一種是理論可以明白,但程序設(shè)計(jì)的能力跟不上,無法獨(dú)立完現(xiàn)算法編寫實(shí)現(xiàn)和調(diào)試,甚至無從入手去完成偽代碼的書寫。這兩類學(xué)生占絕大多數(shù),只有少部分學(xué)生可以較順利地掌握教學(xué)內(nèi)容并實(shí)現(xiàn)完整算法。
3.學(xué)生對數(shù)據(jù)結(jié)構(gòu)的認(rèn)識不夠。外面有些培訓(xùn)機(jī)構(gòu)的速成模式對學(xué)生的影響大,它們往往針對某一具體工具軟件的使用,工具軟件已經(jīng)將許多知識進(jìn)行了集成封裝,使用者只需調(diào)用即可,不用關(guān)心具體實(shí)現(xiàn)步驟、方法和效率。而這些步驟、方法、算法效率的討論都是數(shù)據(jù)結(jié)構(gòu)中要學(xué)習(xí)的內(nèi)容。學(xué)生認(rèn)識不到數(shù)據(jù)結(jié)構(gòu)的重要性,于是覺得這門課程沒有應(yīng)用的前途和學(xué)習(xí)的動(dòng)力,不肯多花時(shí)間在上面去練習(xí)和實(shí)踐,從而限制了自己后續(xù)能力的提高,比如改進(jìn)算法的效率,優(yōu)化程序等。
三、改革方法探討
1.以理論教學(xué)為主,案例式教學(xué)為輔。針對應(yīng)用型人才培養(yǎng)的目的和學(xué)生普遍反映的課本內(nèi)容過于抽象的問題,可以選擇一本以案例式教學(xué)為主的教材作為教學(xué)輔助教材。在講授某個(gè)知識點(diǎn)前,布置學(xué)生在輔助教材中閱讀,了解相關(guān)的應(yīng)用背景。在預(yù)習(xí)過程中學(xué)生往往能發(fā)現(xiàn)一些問題,于是在課堂學(xué)習(xí)中將更有目的性和積極性去學(xué)習(xí)理論知識,有能力者甚至可以在課外嘗試實(shí)現(xiàn)案例、發(fā)現(xiàn)問題。通過案例學(xué)習(xí)可以提高學(xué)生的學(xué)習(xí)興趣,符合應(yīng)用型人才改革的目標(biāo)。學(xué)生也通過案例學(xué)習(xí)了解現(xiàn)實(shí)中出現(xiàn)的問題有哪些解決方法。當(dāng)理論具體化后,在工作或后續(xù)學(xué)習(xí)中遇上實(shí)際問題將更有解決的方法和思路,而且再進(jìn)行類比推廣應(yīng)用就比較容易。
但教學(xué)中又不能簡單的以案例式教學(xué)為主。因?yàn)榘咐浇虒W(xué)的一個(gè)缺點(diǎn)是案例中涉及到的應(yīng)用理論未必完全,而是某種模型結(jié)構(gòu)的某些方面的具體應(yīng)用。如樹的教學(xué),一般的課本對樹的應(yīng)用講了六七方面,采用案例教學(xué)法,可能只面對幾種應(yīng)用。故教師在課堂上要將案例抽象出對應(yīng)的結(jié)構(gòu),與理論結(jié)合在一起,詳細(xì)講解理論,即課堂上仍是以理論教學(xué)為主。
2.理論教學(xué)中知識點(diǎn)的篩選和難易處理。考慮到學(xué)院的學(xué)生基礎(chǔ)問題,學(xué)生相應(yīng)的數(shù)學(xué)知識掌握不夠深入,若面面俱到地將所有理論全部講完,將知其然而不知其所以然,也不符合應(yīng)用型人才培養(yǎng)的目標(biāo),故課程內(nèi)容要進(jìn)行一定的篩選,后續(xù)課程中將出現(xiàn)的問題,不妨留到后續(xù)課程后再詳細(xì)討論。
比如,圖的關(guān)鍵路徑問題,對于基礎(chǔ)掌握好的學(xué)生經(jīng)過課堂學(xué)習(xí)確實(shí)可以掌握,但大部分學(xué)生或是不理解,或是理解后不能上機(jī)實(shí)現(xiàn),而這一問題在離散數(shù)學(xué)課程中圖論一章后有詳細(xì)論述,那在數(shù)據(jù)結(jié)構(gòu)中有限的課時(shí)中就不妨先簡講,多花時(shí)間在圖的存儲、遍歷算法、最小生成樹等算法上,效果會更好。
另外,教師在理論講解中注意難易的處理。學(xué)生要是產(chǎn)生了畏難情緒,就容易造成前面的知識未消化,后面的知識更無從理解的學(xué)習(xí)障礙。據(jù)過往經(jīng)驗(yàn),數(shù)據(jù)結(jié)構(gòu)線性表一章是比較簡單的,其難點(diǎn)在于鏈表,接著的隊(duì)和棧一章與線性表是一致的,僅操作方法不同。若學(xué)生在線性表上卡住了,再學(xué)棧和隊(duì)列會覺得更難。于是教師授課時(shí)對一些基礎(chǔ)又簡單的問題,講深入、講透徹,配合傳統(tǒng)的黑板結(jié)合粉筆效果更好,學(xué)生能有效跟著教師進(jìn)行思考,注意歸納總結(jié),雖然花時(shí)間多,但再學(xué)習(xí)后續(xù)知識時(shí)會觸類旁通,學(xué)習(xí)自信心能提高,有利于形成良性的促進(jìn)作用。
3.上機(jī)實(shí)踐的難易處理和互動(dòng)改革。上機(jī)實(shí)踐主要是將偽代碼的算法用具體程序語言實(shí)現(xiàn)、運(yùn)行。應(yīng)用型人才培養(yǎng)的目的就是要培養(yǎng)學(xué)生將理論知識用于實(shí)踐,即能實(shí)現(xiàn)運(yùn)行具體算法。故培養(yǎng)學(xué)生的動(dòng)手能力是學(xué)好這門課程的關(guān)鍵。
在整個(gè)學(xué)期的實(shí)踐處理上,實(shí)踐難度安排由易至難。在前面的章實(shí)踐作業(yè)中,給出的可運(yùn)行代碼應(yīng)該較完整,留下關(guān)鍵部分讓學(xué)生去編寫,尤其是學(xué)會調(diào)試。隨著章節(jié)的推進(jìn),給出的可運(yùn)行代碼逐步減少至不給。這樣處理是可以讓學(xué)生在初學(xué)時(shí)不至于無從入手,而且可以讓程序設(shè)計(jì)基礎(chǔ)不牢的學(xué)生有時(shí)間通過實(shí)踐強(qiáng)化鞏固,讓學(xué)生獲得編程樂趣。
另外,上機(jī)實(shí)踐時(shí)可將學(xué)生分成若干小組,每個(gè)小組選出一個(gè)學(xué)習(xí)較好的學(xué)生為組長,上機(jī)中組長可以幫助組員進(jìn)行程序的調(diào)試和講解,使學(xué)生能夠閱讀程序理解程序所表達(dá)的意義。學(xué)生對知識點(diǎn)理解的角度和教師的角度可能不同,有時(shí)候同學(xué)請教比教師更能讓他們接受,從現(xiàn)實(shí)課堂中反映,學(xué)生確實(shí)更愿意向同學(xué)請教。
組員們在討論中產(chǎn)生解決不了的問題,再與教師討論得到解答,這樣的互動(dòng)改革既可以有效解決教師逐一回答時(shí)間有限的問題,又可以提高學(xué)生的學(xué)習(xí)熱情,學(xué)生之間不斷相互學(xué)習(xí)共同提高,真正讓大家都能動(dòng)起手來,鍛煉編程能力和舉一反三的自學(xué)能力,為將來到社會工作打下扎實(shí)的基礎(chǔ)。
教師在指導(dǎo)中要引導(dǎo)學(xué)生學(xué)會讀懂程序錯(cuò)誤提示,自己調(diào)試修改程序,提高學(xué)生實(shí)踐水平。加強(qiáng)對學(xué)生舉一反三能力的培訓(xùn),讓實(shí)踐教學(xué)反哺理論教學(xué),使學(xué)生對理論有更深層次的理解。培養(yǎng)學(xué)生良好的程序編寫習(xí)慣和風(fēng)格,注重程序注解。
4.開展課外講座。在課外,邀請已學(xué)過這門課程的學(xué)生和正在學(xué)習(xí)的學(xué)生進(jìn)行經(jīng)驗(yàn)交流。尤其是一些已經(jīng)參加工作的學(xué)生,他們可以帶來更多的實(shí)際案例,這些案例比教材中提供的更新穎、更具體,涉及到更全面知識的融會貫通,而且他們可以提供工作中有關(guān)《數(shù)據(jù)結(jié)構(gòu)與算法》這門課程的經(jīng)驗(yàn),可以讓學(xué)生們了解與社會接軌的知識,提高學(xué)生的學(xué)習(xí)興趣。
四、總結(jié)
近年畢業(yè)生就業(yè)問題日趨嚴(yán)重,通過上述討論發(fā)現(xiàn),傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)與算法課程的教學(xué)形式已不能滿足現(xiàn)階段實(shí)際要求,地方高等院校如何進(jìn)行應(yīng)用型人才培養(yǎng)改革,培養(yǎng)出適應(yīng)社會需求的應(yīng)用型人才成為研究重點(diǎn)。本文以地方院校信息與計(jì)算科學(xué)專業(yè)的《數(shù)據(jù)結(jié)構(gòu)與算法》課程為例,探討一系列的教學(xué)改革措施,以達(dá)到應(yīng)用型人才培養(yǎng)的目標(biāo)。
參考文獻(xiàn):
[1]余臘生.石獻(xiàn).基于創(chuàng)新理念的數(shù)據(jù)結(jié)構(gòu)教學(xué)方法探討[J].計(jì)算機(jī)與信息技術(shù),2006,(11):110-114.
[2]李克清.《數(shù)據(jù)結(jié)構(gòu)》課程中的案例教學(xué)初探[J].長江大學(xué)學(xué)報(bào)(自科版),2004,12(1)4:135-136.
[3]嚴(yán)蔚敏.吳敏民.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].北京:清華大學(xué)出版社,1997.
A Study on "Data Structure and Algorithm" Curriculum Reformation
LI Ting,XU Hong-ru
(School of Mathematics,Jiaying University,Meizhou,Guangdong 514015,China)
【關(guān)鍵詞】數(shù)據(jù)結(jié)構(gòu)與算法 實(shí)驗(yàn)改革 平臺建設(shè)
【中圖分類號】 G 【文獻(xiàn)標(biāo)識碼】A
【文章編號】0450-9889(2014)07C-0132-03
數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)是計(jì)算機(jī)專業(yè)學(xué)生必修基礎(chǔ)課數(shù)據(jù)結(jié)構(gòu)與算法的配套實(shí)驗(yàn)課程,是培養(yǎng)學(xué)生程序設(shè)計(jì)技能必不可少的重要環(huán)節(jié)。其目標(biāo)之一是培養(yǎng)學(xué)生能運(yùn)用理論知識與算法技術(shù)分析解決實(shí)際問題,能運(yùn)用高級程序設(shè)計(jì)語言編程實(shí)現(xiàn)算法。從近年實(shí)驗(yàn)情況來看,在上機(jī)編寫程序?qū)崿F(xiàn)具體算法時(shí)遇到的種種問題,效果不容樂觀,學(xué)生很難按時(shí)完成實(shí)驗(yàn)所要求的內(nèi)容。
一、實(shí)驗(yàn)教學(xué)存在的問題與分析
數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)是一門實(shí)踐性很強(qiáng)的技術(shù)基礎(chǔ)課,經(jīng)過多年實(shí)驗(yàn)教學(xué)分析,發(fā)現(xiàn)普遍存在如下主要問題:
(一)課程抽象,實(shí)驗(yàn)難度大
數(shù)據(jù)結(jié)構(gòu)具有一定的抽象性,學(xué)生面對抽象概念在學(xué)習(xí)過程中常會遇到困難,基本每本理論教材在呈現(xiàn)概念時(shí)都會受到多方面限制,比如篇幅的限制,省略了算法細(xì)節(jié)部分或只給出偽代碼,由學(xué)生自己補(bǔ)充,學(xué)生需要將算法用程序設(shè)計(jì)方法實(shí)現(xiàn),完成有一定難度和技巧的程序設(shè)計(jì)并上機(jī)調(diào)試運(yùn)行。對編程基礎(chǔ)稍微薄弱的學(xué)生來說,就會出現(xiàn)不小的困難。
(二)實(shí)驗(yàn)相關(guān)資料偏少
由于學(xué)生基礎(chǔ)薄弱,實(shí)驗(yàn)前又沒有更多的相關(guān)實(shí)驗(yàn)資料進(jìn)行預(yù)習(xí),僅靠看課本理論和實(shí)驗(yàn)時(shí)的幾個(gè)學(xué)時(shí)難以完成實(shí)驗(yàn)所要求的任務(wù),也就談不上創(chuàng)新人才的培養(yǎng)。
(三)學(xué)生程序設(shè)計(jì)語言課程基礎(chǔ)薄弱
數(shù)據(jù)結(jié)構(gòu)與算法課程是第四學(xué)期開設(shè),對于很多先修課程要求高,高級程序設(shè)計(jì)語言是大學(xué)生進(jìn)校第一、二學(xué)期學(xué)習(xí),第一學(xué)期學(xué)習(xí)過程序設(shè)計(jì)思想,第二學(xué)期學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計(jì)思想,由于大部分同學(xué)高中沒接觸過計(jì)算機(jī)語言學(xué)習(xí),對過程程序設(shè)計(jì)思想還沒掌握透,第二學(xué)期的面向?qū)ο蟪绦蛟O(shè)計(jì)學(xué)習(xí)又開始,學(xué)習(xí)非常吃力;導(dǎo)致常用的一些語法結(jié)構(gòu),如指針和結(jié)構(gòu)體等內(nèi)容難于理解。而這些語法恰恰是程序設(shè)計(jì)語言教學(xué)時(shí)的難點(diǎn),也正好是學(xué)生完成數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)必須掌握的內(nèi)容,這給部分學(xué)生學(xué)習(xí)帶來了一定困難。
(四)編程語言難
數(shù)據(jù)結(jié)構(gòu)與算法編程語言描述主要用到C++語言,并大量用到了指針、鏈表和結(jié)構(gòu)體等運(yùn)算,這部分內(nèi)容正好是大多數(shù)學(xué)生掌握知識點(diǎn)薄弱的環(huán)節(jié),導(dǎo)致學(xué)生很難用高級語言將教材中的算法描述出來,由于問題的堆積、實(shí)驗(yàn)的欠賬,容易使學(xué)生喪失學(xué)習(xí)興趣和信心,導(dǎo)致學(xué)生間抄襲程序或?qū)嶒?yàn)報(bào)告的現(xiàn)象。
(五)編程技巧差
普通學(xué)生在低年級只編寫過功能單一、結(jié)構(gòu)簡單的程序;而從功能單一的簡單程序向涉及算法和稍復(fù)雜程序的數(shù)據(jù)結(jié)構(gòu)編寫過渡學(xué)習(xí)時(shí),需循序漸進(jìn)的方式和細(xì)致的引導(dǎo),緊密結(jié)合理論教學(xué)。學(xué)生一下從簡單編程直接到復(fù)雜的程序設(shè)計(jì),不僅不適應(yīng),且設(shè)計(jì)技巧性較差。
二、實(shí)驗(yàn)教學(xué)改革目標(biāo)的提出
根據(jù)以上學(xué)生實(shí)驗(yàn)時(shí)出現(xiàn)的諸多問題,特提出該課程的實(shí)驗(yàn)改革目標(biāo):
一是緊密配合理論教學(xué),通過相關(guān)實(shí)驗(yàn),幫助學(xué)生加深對數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)、算法思想和具體實(shí)現(xiàn)等各個(gè)環(huán)節(jié)的整體理解,強(qiáng)化學(xué)生“結(jié)構(gòu)――算法――編程”三者密切相關(guān)的意識,讓學(xué)生思考和發(fā)現(xiàn)利用數(shù)據(jù)結(jié)構(gòu)解決實(shí)際應(yīng)用問題的有效方法,從而使學(xué)生分析和解決問題的能力得到鍛煉和提高。
二是因材施教,讓原本不同水平和能力起點(diǎn)的學(xué)生通過數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn),能力和水平都有所提高,并且有興趣有信心學(xué)好數(shù)據(jù)結(jié)構(gòu)課程。
三是培養(yǎng)學(xué)生多方面能力,比如團(tuán)隊(duì)精神,口頭表達(dá)能力,對學(xué)生全方面發(fā)展起到較好的推動(dòng)作用。
三、調(diào)整實(shí)驗(yàn)項(xiàng)目內(nèi)容,使其更加符合學(xué)生的認(rèn)知規(guī)律
數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)內(nèi)容主要是編程實(shí)驗(yàn),提高學(xué)生的實(shí)踐編程能力,鞏固和強(qiáng)化理論課的教學(xué)效果。為了保證和提高實(shí)驗(yàn)教學(xué)質(zhì)量,加深對課堂知識的理解,培養(yǎng)學(xué)生動(dòng)手能力和思維能力,嘗試對數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)項(xiàng)目進(jìn)行重新設(shè)計(jì),主要內(nèi)容有:
針對編程基礎(chǔ)較薄弱的學(xué)生,我們開發(fā)了數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)教學(xué)平臺,學(xué)生在該平臺上可獲知實(shí)驗(yàn)相關(guān)的更多內(nèi)容,通過平臺引導(dǎo)學(xué)生重點(diǎn)回顧程序設(shè)計(jì)語言的基礎(chǔ)知識,特別是數(shù)組和指針等有關(guān)操作。通過這些輔助手段,使學(xué)生對將要編寫程序的一些語法和程序規(guī)則有所復(fù)習(xí)和掌握。還可通過平臺對實(shí)驗(yàn)原理的動(dòng)畫演示,得到幫助和啟發(fā),從而更好更快地完成實(shí)驗(yàn)內(nèi)容。
每個(gè)實(shí)驗(yàn)內(nèi)容以章節(jié)為單位安排,依據(jù)實(shí)驗(yàn)教學(xué)目的,針對計(jì)算機(jī)相關(guān)專業(yè)所要達(dá)到的不同實(shí)驗(yàn)教學(xué)目標(biāo),以及考慮學(xué)生個(gè)體差異,每個(gè)實(shí)驗(yàn)項(xiàng)目都設(shè)置基礎(chǔ)必做題和附加選做題兩部分內(nèi)容。這兩類實(shí)驗(yàn)都需要緊密結(jié)合理論教學(xué)。必做題相對簡單,目的在于幫助學(xué)生掌握基礎(chǔ)知識。對于該部分題目,學(xué)生容易完成,能提高學(xué)生學(xué)習(xí)積極性并增強(qiáng)學(xué)習(xí)信心;選做題針對學(xué)有余力的學(xué)生,各個(gè)實(shí)驗(yàn)項(xiàng)目中的必做題均設(shè)計(jì)詳細(xì)的實(shí)驗(yàn)準(zhǔn)備內(nèi)容,用于引導(dǎo)學(xué)生更好地進(jìn)行實(shí)驗(yàn)前預(yù)習(xí)準(zhǔn)備工作;主要在于培養(yǎng)和鼓勵(lì)學(xué)生的學(xué)習(xí)興趣和擴(kuò)大知識面,進(jìn)一步培養(yǎng)學(xué)生應(yīng)用能力和創(chuàng)新意識,保證基礎(chǔ)弱的同學(xué)學(xué)習(xí)興趣,也提高了編程能力強(qiáng)的同學(xué)動(dòng)手能力。例如,與線性表一章理論教學(xué)相配合的實(shí)驗(yàn)項(xiàng)目是多項(xiàng)式加減法,這個(gè)實(shí)驗(yàn)是對線性鏈表的建立、插入、刪除、遍歷等進(jìn)行綜合運(yùn)算,對數(shù)據(jù)結(jié)構(gòu)與算法第一實(shí)驗(yàn)內(nèi)容來說稍有難度,可作為選作題或增加實(shí)驗(yàn)學(xué)時(shí)。在與棧一章理論教學(xué)相配合的實(shí)驗(yàn)項(xiàng)目是迷宮,這部分實(shí)驗(yàn)內(nèi)容要求掌握回溯法和棧的基本運(yùn)算等知識,有一定難度;用括號匹配作為必做題,能培養(yǎng)學(xué)生獨(dú)立鉆研,有助于學(xué)生解決問題能力的訓(xùn)練。
四、實(shí)驗(yàn)教學(xué)方法探究
實(shí)驗(yàn)前學(xué)生必須先預(yù)習(xí)和熟悉實(shí)驗(yàn)教學(xué)平臺,了解實(shí)驗(yàn)內(nèi)容的目的和要求,理解算法,描述語言的語法,查看相關(guān)資料,寫預(yù)習(xí)報(bào)告。
通過多年實(shí)驗(yàn)教學(xué)中實(shí)驗(yàn)完成情況分析,軟件工程專業(yè)的學(xué)生語言掌握較好,大部分學(xué)生能按時(shí)完成實(shí)驗(yàn)項(xiàng)目,其它專業(yè)的學(xué)生實(shí)驗(yàn)完成情況較差;由此,實(shí)驗(yàn)編程語言可以因?qū)W生而異,除軟件工程專業(yè)的學(xué)生采用面向?qū)ο蟪绦蛟O(shè)計(jì)C++外,其它專業(yè)主要采用C語言描述,并且可增加前期語言學(xué)習(xí)時(shí)間。只有編程語言掌握扎實(shí),數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)才能很好地完成。
開發(fā)數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)網(wǎng)絡(luò)教學(xué)平臺系統(tǒng),該平臺主要包含有課程介紹、在線課程、互動(dòng)學(xué)習(xí)、下載資料等模塊。有針對性地對每一個(gè)實(shí)驗(yàn)項(xiàng)目進(jìn)行詳細(xì)講解和實(shí)驗(yàn)原理分析的動(dòng)畫演示,將抽象的數(shù)據(jù)結(jié)構(gòu)問題制作為教學(xué)動(dòng)畫,借助形象的案例理解抽象的概念。教學(xué)內(nèi)容利用Web頁面為基本元素出現(xiàn)在站點(diǎn)中,學(xué)生通過訪問站點(diǎn)來進(jìn)行交互式學(xué)習(xí)。以輔助學(xué)生自主學(xué)習(xí)為主要目的,解決學(xué)生實(shí)驗(yàn)時(shí)無從下手的局面,啟發(fā)學(xué)生思維,促進(jìn)學(xué)生程序設(shè)計(jì)能力的提高。平臺系統(tǒng)流程圖如圖1所示。
在線課程是教學(xué)平臺核心部分,也是學(xué)生對數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)加深理解的重要環(huán)節(jié),該平臺從實(shí)驗(yàn)預(yù)習(xí),到實(shí)驗(yàn)原理算法的演示,再通過在線課堂的視頻教學(xué)、在線測試題訓(xùn)練及各種原理進(jìn)行拓展教學(xué)。為了方便學(xué)生學(xué)習(xí)較抽象的數(shù)據(jù)結(jié)構(gòu)與算法,能順利進(jìn)行程序編寫,該教學(xué)平臺還包含有18個(gè)flas用于原理算法演示,主要包括棧和隊(duì)列、線性表、遞歸、查找與排序、樹、圖等內(nèi)容,每個(gè)flas都有實(shí)驗(yàn)原理及主要代碼實(shí)現(xiàn)過程,能更加形象展示數(shù)據(jù)結(jié)構(gòu)的原理。例如:棧是一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),在對棧原理進(jìn)行動(dòng)畫設(shè)計(jì)時(shí),根據(jù)用數(shù)組實(shí)現(xiàn)棧的特點(diǎn),采取對棧先進(jìn)行初始化的代碼模塊來對棧進(jìn)行初始化,之后運(yùn)行相應(yīng)代碼模塊觀察壓棧出棧過程,同時(shí)還能觀察到棧中數(shù)據(jù)的變化。在大部分flas演示過程中,flash頁面左側(cè)是代碼部分,能體現(xiàn)當(dāng)前執(zhí)行的代碼,并與右側(cè)的動(dòng)畫演示及講解分析一一對應(yīng)。演示過程中如用戶需要重新開始,還可點(diǎn)擊“重新開始”按鈕。這些flas演示將代碼與動(dòng)畫有機(jī)的結(jié)合在一起,將抽象的代碼轉(zhuǎn)換為有形的動(dòng)畫,大大方便學(xué)生學(xué)習(xí)和對實(shí)驗(yàn)內(nèi)容的理解。
如對棧原理進(jìn)行動(dòng)畫演示的flash點(diǎn)擊界面中壓棧代碼動(dòng)畫效果,該動(dòng)畫效果包括等待入棧的數(shù)字入棧的動(dòng)畫效果和位于等待區(qū)域的數(shù)字前移的動(dòng)畫效果。等待入棧的數(shù)字、入棧的動(dòng)畫效果和位于等待區(qū)域的數(shù)字前移的動(dòng)畫效果如圖3所示。
圖3 壓棧的動(dòng)畫效果圖
該平臺互動(dòng)學(xué)習(xí)是一個(gè)教師和學(xué)生互動(dòng)的場所,實(shí)現(xiàn)動(dòng)態(tài)交互的功能,教師能添加、更改、刪除各種資源,學(xué)生、教師可以查看各種資源庫里的資源。同時(shí),學(xué)生可從平臺上下載練習(xí)題和測試練習(xí)題資料,練習(xí)題有主要算法描述,可幫助學(xué)生進(jìn)一步理解每個(gè)章節(jié)的算法原理,測試練習(xí)題有自動(dòng)報(bào)錯(cuò)功能。
五、改革數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)考核方式
讓學(xué)生對以前所做實(shí)驗(yàn)作一個(gè)分析和總結(jié)。具體操作方案如下:首先將學(xué)生自由分組,小組成員共同從以前做過的實(shí)驗(yàn)項(xiàng)目選做題中選擇一個(gè)進(jìn)行程序的分析設(shè)計(jì)和編碼實(shí)現(xiàn),要求考慮程序的編寫規(guī)范,程序的執(zhí)行效率等方面。考核時(shí),由實(shí)驗(yàn)教師從該小組隨機(jī)抽取學(xué)生到講臺進(jìn)行講解和演示,根據(jù)程序完成情況和學(xué)生演示情況,決定該小組成員的平均得分,而每位學(xué)生的具體得分由小組成員內(nèi)部根據(jù)該學(xué)生在該程序?qū)崿F(xiàn)中的工作情況決定。通過這種方式,能培養(yǎng)學(xué)生的團(tuán)隊(duì)意識,達(dá)到互學(xué)互助的效果,同時(shí)也鍛煉了學(xué)生的表達(dá)能力。
數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)環(huán)節(jié)教學(xué)改革的創(chuàng)新之處在于依托一門編程語言以及所開發(fā)的實(shí)驗(yàn)教學(xué)平臺,因材施教,根據(jù)不同專業(yè)實(shí)際情況,綜合考慮進(jìn)行實(shí)驗(yàn)項(xiàng)目、實(shí)驗(yàn)內(nèi)容和實(shí)驗(yàn)準(zhǔn)備的合理設(shè)置,幫助學(xué)生在實(shí)驗(yàn)課上找到自己的最好學(xué)習(xí)方式,提高實(shí)驗(yàn)教學(xué)質(zhì)量。
【參考文獻(xiàn)】
[1]吳兵.高校計(jì)算機(jī)文化基礎(chǔ)課程網(wǎng)絡(luò)學(xué)習(xí)題庫的研發(fā)[J].實(shí)驗(yàn)技術(shù)與管理,2011(2)
[2]朱洪浩.數(shù)據(jù)結(jié)構(gòu)課程“工程化”實(shí)踐教學(xué)模式研究[J].赤峰學(xué)院學(xué)報(bào)(自然科學(xué)),2013(15)
[3]馬曉波,王翠茹.《數(shù)據(jù)結(jié)構(gòu)》實(shí)踐教學(xué)改革探討[J].內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報(bào)(社會科學(xué)版),2010(02)
關(guān)鍵詞:算法與數(shù)據(jù)結(jié)構(gòu);案例教學(xué);算法可視化;能力培養(yǎng)
作者簡介:鄭恭明(1980-),男,重慶人,長江大學(xué)電信學(xué)院,講師。(湖北荊州434023)
中圖分類號:G642.0 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-0079(2012)08-0083-01
“算法與數(shù)據(jù)結(jié)構(gòu)”是計(jì)算機(jī)軟件編程技術(shù)的核心課程,也是電子信息類專業(yè)的軟件基礎(chǔ)課程。該課程不僅要注重提高學(xué)生對數(shù)據(jù)結(jié)構(gòu)理論的理解,鍛煉學(xué)生抽象思維和研究創(chuàng)新能力,更要注重培養(yǎng)學(xué)生的動(dòng)手實(shí)踐能力,使學(xué)生熟練掌握組織、存儲和處理數(shù)據(jù)的方法,并編寫出正確、清晰和高效的算法程序。本文從本院大類招生以來“算法與數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)的實(shí)際出發(fā)對理論教學(xué)和實(shí)踐教學(xué)進(jìn)行了相關(guān)探索。
一、該課程存在的問題
“數(shù)據(jù)結(jié)構(gòu)”課程比較突出的特點(diǎn)是:[1]概念較多、理論性強(qiáng)、內(nèi)容抽象、邏輯性強(qiáng)、程序復(fù)雜。教學(xué)實(shí)踐中發(fā)現(xiàn),學(xué)生中普遍存在概念不清的問題,學(xué)完課程后對數(shù)據(jù)結(jié)構(gòu)的本質(zhì)不能有清晰的認(rèn)識和準(zhǔn)確理解。主要表現(xiàn)在以下幾個(gè)方面:覺得算法理論太抽象,邏輯性太強(qiáng),難理解、難掌握、有畏懼感;內(nèi)容多,概念多,學(xué)習(xí)中難以把握整體內(nèi)容,學(xué)完后不知道到底學(xué)了些什么、感覺在課堂上思路跟不上,難以消化;上課算法理論聽得懂,上機(jī)實(shí)驗(yàn)實(shí)現(xiàn)算法時(shí)覺得無從下手,當(dāng)編程解決實(shí)際問題就感覺更難了;不知道學(xué)習(xí)算法在實(shí)際中有什么用,逐漸失去了學(xué)習(xí)興趣;教材上的算法多,難以全部上機(jī)實(shí)現(xiàn);不重視上機(jī)實(shí)驗(yàn),覺得能讀懂算法和書面編寫算法就可以了。
以下是幾個(gè)較為典型的例子:鏈?zhǔn)酱鎯Y(jié)構(gòu)中的指針,定義上是指向相關(guān)類型節(jié)點(diǎn)的變量,在存儲結(jié)構(gòu)上則對應(yīng)存儲對象的地址;數(shù)組結(jié)構(gòu)與計(jì)算機(jī)語言中的數(shù)組相混淆,數(shù)組結(jié)構(gòu)是一種邏輯結(jié)構(gòu),與計(jì)算機(jī)內(nèi)的表示方法無關(guān),而計(jì)算機(jī)語言中的數(shù)組則只是一種順序存儲方法;排序中的穩(wěn)定問題,不能掌握其實(shí)質(zhì),在不同比較公式(大于,大于等于或小于、小于等于)下等值關(guān)鍵字在排序過程中是否交換順序。因此,在備課時(shí)就應(yīng)對諸如此類易于模糊的概念和細(xì)節(jié)高度重視;講授時(shí)要清晰地闡述和辨別,消除學(xué)生的畏懼;精心選擇上機(jī)題目,讓學(xué)生正確地理解概念并能在實(shí)踐中靈活運(yùn)用。
二、理論教學(xué)探索――結(jié)合專業(yè)特點(diǎn)整合課堂內(nèi)容
在理論教學(xué)中,引入跟專業(yè)背景相關(guān)的實(shí)際和經(jīng)典案例打破以抽象和枯燥知識點(diǎn)為界線的授課模式,提高學(xué)生的學(xué)習(xí)興趣;在授課形式上采用多種表達(dá)方式,特別是制作了直觀的核心算法Flas和動(dòng)態(tài)演示軟件,使學(xué)生較好地理解抽象、邏輯性強(qiáng)的復(fù)雜程序。
1.案例教學(xué)
以前“算法與數(shù)據(jù)結(jié)構(gòu)”教學(xué)是按章節(jié)安排的。首先講解本章節(jié)的基本理論知識,然后介紹各種算法的基本實(shí)現(xiàn)(在不同存儲形式下算法的實(shí)現(xiàn)形式),再分析各個(gè)算法的優(yōu)缺點(diǎn)等。這種填鴨式的方法只注重了“教”,而忽略了“學(xué)”的方面;癥結(jié)就在于學(xué)生并沒有真正地參與到教學(xué)中來,教學(xué)效果不理想。
為了改善這一情況,在教學(xué)中引入案例教學(xué)法,[2,3]其核心在于:在講授某一知識理論之前,以實(shí)際的案例作為切入點(diǎn),教師圍繞所提供的案例,引導(dǎo)學(xué)生積極思考、分析、討論和實(shí)踐,從而深刻理解問題的原理和本質(zhì)?!八惴ㄅc數(shù)據(jù)結(jié)構(gòu)”以案例為核心的教學(xué)基本思想是:按照邏輯結(jié)構(gòu)給出其相應(yīng)的案例及相關(guān)預(yù)備知識;教師解釋案例并引導(dǎo)學(xué)生理解案例;學(xué)生根據(jù)案例學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)知識并解決案例。
比如:線性表中引入多項(xiàng)式加法和約瑟夫(Joseph)問題等案例;棧與隊(duì)列引入渡船調(diào)度和農(nóng)夫過河案例;樹和二叉樹引入通信編碼壓縮案例;圖引入學(xué)習(xí)課程的拓?fù)渑判虬咐取_@些案例既能把理論知識寓于其中,又跟電子信息類的專業(yè)特點(diǎn)相結(jié)合,從而調(diào)動(dòng)學(xué)生的主動(dòng)性并培養(yǎng)其探究性的學(xué)習(xí)態(tài)度,切實(shí)地參與到課堂中來積極思考,以真正地掌握所學(xué)的科學(xué)技術(shù)知識,提高分析問題和解決問題的能力。
2.可視化演示關(guān)鍵算法
對于抽象的算法特別是關(guān)鍵算法演示采用Flas和動(dòng)態(tài)演示軟件等可視化教學(xué)手段??梢暬虒W(xué)是指在計(jì)算機(jī)軟件與多媒體技術(shù)的幫助下,將被感知、被想象、被推理的事物及其發(fā)展變化的形式與過程,用仿真化、模擬化、形象化、現(xiàn)實(shí)化的方式,在教學(xué)過程中盡量表現(xiàn)出來??梢暬虒W(xué)可以使學(xué)生直觀地觀察、體驗(yàn)、發(fā)現(xiàn)、干預(yù),利用這些生動(dòng)的信息化了的知識模型,培養(yǎng)和造就學(xué)生的認(rèn)知能力與創(chuàng)新能力。可視化教學(xué)在數(shù)據(jù)結(jié)構(gòu)算法教學(xué)過程中所表現(xiàn)出的優(yōu)點(diǎn)有:[4,5]可改變傳統(tǒng)教學(xué)方法中的枯燥乏味局面,吸引學(xué)生的注意力;它可將文字、數(shù)據(jù)、圖片、影片等多種媒體動(dòng)態(tài)地整合在一起;它可以讓學(xué)生體會在大量不同的數(shù)據(jù)結(jié)構(gòu)下,算法執(zhí)行效率的差異;學(xué)生可課后利用實(shí)現(xiàn)算法的可視化教學(xué)軟件探索算法的執(zhí)行過程,培養(yǎng)學(xué)生個(gè)別化學(xué)習(xí)與自學(xué)的能力。
例如:講解二叉樹的查找、遍歷、線索化、哈夫曼樹及編碼、圖的拓?fù)渑判颉㈥P(guān)鍵路徑及排序算法時(shí),制作了Flash的算法動(dòng)畫演示系統(tǒng)和動(dòng)態(tài)顯示軟件,通過動(dòng)畫演示,學(xué)生對各抽象的邏輯操作過程有了清晰直觀的理解,達(dá)到了很好的教學(xué)效果,增強(qiáng)了學(xué)生對數(shù)據(jù)結(jié)構(gòu)中各算法的理解和掌握,從而克服了學(xué)生學(xué)習(xí)過程中的畏懼情緒,促進(jìn)了學(xué)生學(xué)習(xí)興趣的提高,達(dá)到教學(xué)目的。
三、實(shí)踐教學(xué)改革
實(shí)踐教學(xué)是理論教學(xué)的延續(xù)和擴(kuò)展,更是培養(yǎng)學(xué)生分析、解決問題能力的重要手段,并培養(yǎng)學(xué)生具有一定的編程能力以及解決實(shí)際問題的能力。課程中涉及大量C語言中的指針運(yùn)算,這又是C語言學(xué)習(xí)的重點(diǎn)和難點(diǎn),大部分學(xué)生對這部分知識點(diǎn)掌握不是很牢固,用起來也比較生疏。課本上的例證又有很多類C代碼的描述語句,這加大了學(xué)生理解和編寫程序的難度,導(dǎo)致很多學(xué)生對算法的思路是清晰的,但也難以用C語言將算法描述出來。
在實(shí)驗(yàn)上機(jī)這個(gè)實(shí)踐環(huán)節(jié)老師就要幫助學(xué)生解決兩個(gè)問題:用案例引導(dǎo)學(xué)生應(yīng)用所學(xué)知識來給出切實(shí)可行的解決方案;提高學(xué)生編寫程序的能力,特別是類C代碼轉(zhuǎn)化為C語言的能力。
要解決這兩個(gè)問題,在理論教學(xué)時(shí)就開始著手。首先是案例的引入,除了調(diào)動(dòng)學(xué)生的興趣和積極性之外,更重要的是提高學(xué)生分析、解決問題的能力――給出的問題提出可行的解決方案;其次是在算法的可視化教學(xué)中,所有算法用C語言來描述,并跟類C代碼進(jìn)行比較提高學(xué)生編寫程序的能力;最后在實(shí)驗(yàn)內(nèi)容和設(shè)置上緊跟理論教學(xué)的案例并進(jìn)行適當(dāng)?shù)臄U(kuò)展和提高,讓學(xué)生能更好地理解知識點(diǎn)并能加以運(yùn)用來解決實(shí)際的問題,提高編程能力。
四、過程的動(dòng)態(tài)跟蹤
在整個(gè)教學(xué)活動(dòng)中,答疑、作業(yè)和實(shí)驗(yàn)上機(jī)是掌握學(xué)生學(xué)習(xí)狀態(tài)的重要手段。除了每周固定的答疑外,還有課程的學(xué)習(xí)網(wǎng)站留言和交流,這既是課堂的有益補(bǔ)充與延伸,也是了解學(xué)生學(xué)習(xí)狀態(tài)和收集課堂反饋信息的主要手段,有助于教師及時(shí)地調(diào)整教學(xué)的進(jìn)度和方法,以達(dá)到更好的教學(xué)效果;作業(yè)既可以發(fā)現(xiàn)普遍存在的問題,也可以了解一些學(xué)生的獨(dú)到思維方法,然后一起提出來共同討論、理清思路、加深理解,從而督促學(xué)生獨(dú)立學(xué)習(xí),有利于學(xué)生學(xué)習(xí)興趣的提高和良好學(xué)風(fēng)的形成;上機(jī)實(shí)驗(yàn)不僅可以發(fā)現(xiàn)學(xué)生編程上的不足,同時(shí)還有助于發(fā)現(xiàn)一些平時(shí)能寫出比較好的程序或能在課余時(shí)間自己編寫一些優(yōu)秀的應(yīng)用程序的學(xué)生,因材施教,提高學(xué)生的綜合素質(zhì)和競爭力。
五、總結(jié)
筆者從“算法與數(shù)據(jù)結(jié)構(gòu)”的課程體系和專業(yè)的特點(diǎn)出發(fā),把知識體系傳授和提高學(xué)生以工程實(shí)踐能力為主的綜合素質(zhì)緊密結(jié)合,以案例引入打開思路,結(jié)合教學(xué)內(nèi)容培養(yǎng)學(xué)生對問題的分析能力和實(shí)踐應(yīng)用能力,從而達(dá)到提高該課程的教學(xué)效果的目的,并取得了良好的效果。
參考文獻(xiàn):
[1]嚴(yán)蔚敏,吳偉民,等.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].北京:清華大學(xué)出版社,2007.
[2]宗瑜,金萍.案例教學(xué)法與《數(shù)據(jù)結(jié)構(gòu)》教學(xué)改革[J].皖西學(xué)院學(xué)報(bào),2009,(2):30-32.
[3]徐翠霞,崔玲玲,邵回祖,等.數(shù)據(jù)結(jié)構(gòu)案例教程(C語言版)[M].北京:北京大學(xué)出版社,2009.
關(guān)鍵詞:案例教學(xué);數(shù)據(jù)結(jié)構(gòu);教學(xué)法
0.引言
當(dāng)前高校教學(xué)改革的主要目標(biāo)之一,是改變傳統(tǒng)的以教師為中心的教學(xué)模式,構(gòu)建一種既能發(fā)揮教師的指導(dǎo)作用,又能充分體現(xiàn)學(xué)生學(xué)習(xí)主體作用和個(gè)性化學(xué)習(xí)的新型教學(xué)模式。為實(shí)現(xiàn)這個(gè)目標(biāo),教師應(yīng)積極利用計(jì)算機(jī)進(jìn)行教學(xué)活動(dòng),并在此基礎(chǔ)上逐步實(shí)現(xiàn)教學(xué)模式、教學(xué)內(nèi)容和教學(xué)方法的改革。同時(shí),多媒體和網(wǎng)絡(luò)技術(shù)為構(gòu)建新型的教學(xué)模式及實(shí)現(xiàn)網(wǎng)絡(luò)教學(xué)中“以問題為中心”的教學(xué)模式提供了基礎(chǔ)。另外,以問題為中心的案例教學(xué)是目前比較流行的一種教學(xué)方法,即學(xué)生利用所學(xué)的知識和技能解決一系列實(shí)際問題,從而達(dá)到建構(gòu)經(jīng)驗(yàn)的目的。案例教學(xué)強(qiáng)調(diào)把學(xué)習(xí)設(shè)置到有意義的問題情境中,通過學(xué)習(xí)者的相互協(xié)作來解決真正的問題,從而有效地學(xué)習(xí)隱含在問題背后的科學(xué)知識,增強(qiáng)解決問題的技能和自主學(xué)習(xí)的能力。
1.數(shù)據(jù)結(jié)構(gòu)與算法課程知識體系
數(shù)據(jù)結(jié)構(gòu)與算法是程序設(shè)計(jì)、操作系統(tǒng)、數(shù)據(jù)庫原理與設(shè)計(jì)等課程的重要基礎(chǔ),在計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)課程體系中占據(jù)非常重要的地位,是一門理論與實(shí)踐并重的課程。該課程內(nèi)容豐富、概念多、高度抽象、綜合性和實(shí)踐性強(qiáng),這些因素給教學(xué)帶來了較大難度,教學(xué)效果是否良好將直接影響學(xué)生數(shù)據(jù)抽象能力和程序設(shè)計(jì)能力的培養(yǎng)。以問題為中心的教學(xué)法,綜合了自主學(xué)習(xí)、發(fā)現(xiàn)學(xué)習(xí)、協(xié)作學(xué)習(xí)、綜合學(xué)習(xí)等多種學(xué)習(xí)方式的優(yōu)勢,對激發(fā)學(xué)生學(xué)習(xí)興趣、學(xué)習(xí)自主性和創(chuàng)造性,培養(yǎng)學(xué)生的協(xié)作精神與自學(xué)能力均有較好的效果。為了幫助學(xué)生在掌握課程知識的同時(shí)獲得探究式學(xué)習(xí)和團(tuán)隊(duì)協(xié)作能力,提高教學(xué)效果,我們在此課程中開展了以問題為中心的案例教學(xué)研究。
該課程的教學(xué)體系以數(shù)據(jù)元素之間的邏輯關(guān)系為主線,以線性表、樹、圖等為分支,以不同邏輯關(guān)系的邏輯結(jié)構(gòu)特點(diǎn)、存儲結(jié)構(gòu)以及操作算法和算法實(shí)現(xiàn)作為基本知識點(diǎn),每種邏輯結(jié)構(gòu)都有其實(shí)際應(yīng)用,知識體系結(jié)構(gòu)層次清晰,示例豐富,適合開展以問題為中心的案例教學(xué)。因此,我們從中選取了“?!薄瓣?duì)列”“二叉樹”及“圖”的應(yīng)用等內(nèi)容作為教學(xué)單元開展教學(xué)研究。
2.以問題為中心的案例教學(xué)實(shí)施過程
我們在教學(xué)過程中選取適合以問題為中心的案例教學(xué)單元進(jìn)行方案設(shè)計(jì),針對數(shù)據(jù)結(jié)構(gòu)與算法課程創(chuàng)設(shè)教學(xué)環(huán)境,借助網(wǎng)絡(luò)教學(xué)平臺實(shí)施案例教學(xué),最后進(jìn)行教學(xué)效果的評測與總結(jié)。在具體的工作過程中,我們按照探究未知知識領(lǐng)域的途徑,通過提出問題、分析問題、創(chuàng)造性地解決問題、知識遷移等步驟對該教學(xué)方式予以實(shí)施,如圖1所示。該課題已于2011年9月至2011年12月、2012年9月至2012年12月分別開展了2個(gè)學(xué)期、4個(gè)班的教學(xué)實(shí)踐。
下面以“哈夫曼算法的應(yīng)用”為例闡述以問題為中心的案例教學(xué)過程。
(1)明確學(xué)習(xí)目標(biāo)與要求。本單元的教學(xué)要求為掌握樹的帶權(quán)外部路徑長度的計(jì)算,掌握哈夫曼算法的主要思想及哈夫曼樹的構(gòu)造,掌握哈夫曼編碼。
(2)創(chuàng)設(shè)情境,提出問題。問題情境指學(xué)生在問題教學(xué)中所面臨的一種“有目的但不知如何達(dá)到”的心理困境。問題情境就是一種心理狀態(tài),即學(xué)生接觸到的學(xué)習(xí)內(nèi)容與原有認(rèn)知水平不和諧、不平衡時(shí),學(xué)生急需解決疑難問題的心理狀態(tài)。例如,教師提出在電文發(fā)送系統(tǒng)中,如何設(shè)計(jì)電文編碼,使發(fā)送的碼長最短?發(fā)送郵件附件的時(shí)候,經(jīng)常進(jìn)行文件壓縮,如何實(shí)現(xiàn)文件壓縮?
(3)分析問題。學(xué)生明確要探究的問題之后,在網(wǎng)絡(luò)教學(xué)平臺上學(xué)習(xí)“哈夫曼算法”相關(guān)知識,如二叉樹、樹的帶權(quán)外部路徑長度、哈夫曼算法思想、哈夫曼編碼等,擬訂出問題的解決方案。
(4)解決問題。學(xué)生通過自主學(xué)習(xí),明確哈夫曼樹是帶權(quán)路徑長度最短的二叉樹,并作哈夫曼編碼,得到的碼長最短。因此,在電文發(fā)送系統(tǒng)中,利用哈夫曼算法設(shè)計(jì)電文編碼,使發(fā)送的碼長最短。同理,也可以使用哈夫曼算法對文件進(jìn)行壓縮。
(5)知識的遷移。哈夫曼編碼在數(shù)據(jù)編碼中的應(yīng)用是哈夫曼算法應(yīng)用于各項(xiàng)技術(shù)中的典型實(shí)例。此外,由于哈夫曼樹具有帶權(quán)路徑長度最小的特性,它還能應(yīng)用于其他具體的事物決策中。
①圖像壓縮問題。大數(shù)據(jù)量的圖像信息會給存儲器的存儲容量、通信干線信道的帶寬、計(jì)算機(jī)的處理速度帶來極大的壓力。單純靠增加存儲器容量、提高信道帶寬和計(jì)算機(jī)的處理速度等方法來解決這個(gè)問題是不現(xiàn)實(shí)的。此時(shí)需要考慮壓縮,壓縮的關(guān)鍵在于編碼。對于數(shù)據(jù)進(jìn)行編碼時(shí)出現(xiàn)頻率較高的數(shù)據(jù),編碼器輸出較短的碼字,而對于出現(xiàn)頻率較低的數(shù)據(jù),則用較長的碼字表示,從而實(shí)現(xiàn)壓縮。通過對哈夫曼樹的原理及應(yīng)用的研究,我們可以在遇到某些具體應(yīng)用問題時(shí)獲得啟示和解決思路。
②二叉查找樹。例如,成績表有10000個(gè)分?jǐn)?shù),學(xué)生成績在5個(gè)等級的分布如表1所示,要求設(shè)計(jì)查找樹。
根據(jù)分?jǐn)?shù)比例(當(dāng)做權(quán)值)設(shè)計(jì)出哈夫曼樹,如圖2所示,即為二叉查找樹,靠近根的結(jié)點(diǎn)表示大比例分?jǐn)?shù)段。通過計(jì)算,在查找成績時(shí)時(shí)間性能上有很大的提高,類似的問題可以通過二叉樹對此進(jìn)行更深入的研究。
(6)教學(xué)實(shí)驗(yàn)。教學(xué)實(shí)驗(yàn)是對學(xué)生綜合素質(zhì)進(jìn)行訓(xùn)練的一種基本方法,是課堂教學(xué)的一種延伸,是必不可少的一個(gè)教學(xué)環(huán)節(jié)。編程中的問題往往比平時(shí)的習(xí)題復(fù)雜得多,也更接近實(shí)際。編程能使學(xué)生所學(xué)的知識“活”起來,達(dá)到深化理解和靈活掌握教學(xué)內(nèi)容的目的。同時(shí),編程也是對學(xué)生軟件設(shè)計(jì)綜合能力的訓(xùn)練。本單元教學(xué)任務(wù)完成后,學(xué)生以小組為單位進(jìn)行綜合實(shí)驗(yàn)。
①實(shí)驗(yàn)?zāi)康模毫私夤蚵鼧涞膽?yīng)用,掌握哈夫曼樹的構(gòu)造方法及哈夫曼編碼的應(yīng)用。
②實(shí)驗(yàn)步驟:
a)輸入一串字符,模擬電文發(fā)送系統(tǒng)中的發(fā)送字符,統(tǒng)計(jì)其中所有的不同字符及其個(gè)數(shù),得出每個(gè)不同字符在文中出現(xiàn)的頻率。
b)根據(jù)每個(gè)字符頻率建立哈夫曼樹,輸出字符的編碼,模擬電文系統(tǒng)中的編碼系統(tǒng)。
c)輸入一個(gè)0.1字串,得出其譯碼,模擬電文系統(tǒng)中的譯碼系統(tǒng)。
③實(shí)驗(yàn)要求:按組完成實(shí)驗(yàn),填寫實(shí)驗(yàn)報(bào)告,匯報(bào)程序運(yùn)行過程、結(jié)果等。
(7)對本次案例教學(xué)結(jié)果進(jìn)行檢驗(yàn)。教師完成一個(gè)階段的教學(xué)任務(wù)后,應(yīng)重點(diǎn)檢查學(xué)生對知識點(diǎn)的掌握情況。另外,教師還應(yīng)該定期檢查每個(gè)小組的團(tuán)隊(duì)學(xué)習(xí)情況并打分,對協(xié)作效率較高的小組給予肯定和表揚(yáng)。
教師在收集、整理分析教學(xué)結(jié)果的基礎(chǔ)上,要對本單元專題的教學(xué)試驗(yàn)進(jìn)行反思,肯定成功的經(jīng)驗(yàn)并推廣;對存在的問題認(rèn)真分析原因,并提出改進(jìn)措施和解決辦法;依據(jù)反思結(jié)果,及時(shí)調(diào)整和修改后續(xù)學(xué)習(xí)單元的教學(xué)方案和教學(xué)策略,以期在下次教學(xué)試驗(yàn)中取得更好的教學(xué)效果。
3.教學(xué)效果測評
在課題的實(shí)踐中,我們對案例教學(xué)效果的評價(jià)包含兩個(gè)方面:對學(xué)生而言,主要從知識點(diǎn)的掌握程度、理解程度和是否能獨(dú)立地應(yīng)用數(shù)據(jù)結(jié)構(gòu)與算法解決實(shí)際問題,以及能否動(dòng)手實(shí)現(xiàn)具體的應(yīng)用等指標(biāo)來進(jìn)行評價(jià);對教師而言,主要從教學(xué)效果方面進(jìn)行評價(jià),綜合評價(jià)各個(gè)因素。因此,提高對案例教學(xué)重要性的認(rèn)識,客觀準(zhǔn)確地評估案例教學(xué)的效果,培養(yǎng)學(xué)生綜合能力,促進(jìn)案例教學(xué)質(zhì)量的提高,具有十分重要的意義。
在數(shù)據(jù)結(jié)構(gòu)與算法課程中開展以問題為中心的案例教學(xué)方式深受學(xué)生歡迎,也獲得教師們的好評。
1)學(xué)生成績評價(jià)。
(1)總結(jié)性評價(jià)——期末考試情況。圖3是2008-2010級計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)學(xué)生數(shù)據(jù)結(jié)構(gòu)與算法期末考試成績的比較圖。
從圖3可以看出,采用以問題為中心案例教學(xué)法的2010級學(xué)生總體考試成績比2008級和2009級要好,及格率及平均分普遍都高。
(2)形成性評價(jià)——實(shí)驗(yàn)作業(yè)及分組匯報(bào)情況。圖4是2008-2011級計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)學(xué)生數(shù)據(jù)結(jié)構(gòu)與算法課程實(shí)驗(yàn)作業(yè)及匯報(bào)情況比較圖。
從圖4可以看出,采用以問題為中心的案例教學(xué)的2010和2011級學(xué)生平時(shí)學(xué)習(xí)表現(xiàn)總體比2008和2009級要好,優(yōu)秀率及良好率占的比例都較高。
2)教師表現(xiàn)評價(jià)。
經(jīng)過課題研究組成員的多次探討,教師們編寫了許多有代表性的教學(xué)案例,并在課堂上加以實(shí)施。學(xué)生在網(wǎng)上評教時(shí)給相關(guān)任課教師的評價(jià)達(dá)到優(yōu)秀等級,課題研究組教師授課表現(xiàn)也得到上級領(lǐng)導(dǎo)及教學(xué)專家的好評。例如,2010年,案例教學(xué)“二叉樹”獲得學(xué)院講課比賽第一名;2011年,以問題為中心的案例教學(xué)“圖的應(yīng)用”獲得學(xué)院講課比賽第二名;2012年,課題組一位老師以問題為中心的案例教學(xué)“Kinect的應(yīng)用”在學(xué)校講課比賽中獲得全校第二名。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);算法;軟件設(shè)計(jì)
【中圖分類號】TP311.12-4;G642
一、數(shù)據(jù)結(jié)構(gòu)與算法概述
1.1數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)是一門研究數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)(物理結(jié)構(gòu))以及它們之間的關(guān)系的學(xué)科,且為該結(jié)構(gòu)定義相應(yīng)的運(yùn)算設(shè)計(jì)相應(yīng)的算法。這里的數(shù)據(jù)是指可輸入到計(jì)算機(jī)能被程序處理的符號的集合。其中,數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)之間邏輯關(guān)系的描述,邏輯結(jié)構(gòu)的分類有線性結(jié)構(gòu)、樹形結(jié)構(gòu)和圖結(jié)構(gòu)。數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)在計(jì)算機(jī)中存儲結(jié)構(gòu),也稱為物理結(jié)構(gòu),在程序設(shè)計(jì)語言中,數(shù)據(jù)結(jié)構(gòu)直接反映在數(shù)據(jù)類型上,比如一個(gè)整型變量就是一個(gè)節(jié)點(diǎn),根據(jù)類型給他分配內(nèi)存單元。
1.2算法
1.2.1算法是由基本運(yùn)算及規(guī)定的運(yùn)算順序所構(gòu)成的完整的解題步驟。計(jì)算機(jī)算法與數(shù)據(jù)結(jié)構(gòu)之間的關(guān)系,算法最終依附于數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)直接影響算法的選擇和運(yùn)行效率。運(yùn)算是計(jì)算機(jī)完成的,這就要設(shè)計(jì)計(jì)算機(jī)在操作時(shí)對相的一些操作模式,如插入、刪除和修改的算法。也就是說,數(shù)據(jù)結(jié)構(gòu)還需要給出每種結(jié)構(gòu)類型所定義的各種運(yùn)算的算法。
1.2.2算法與數(shù)據(jù)結(jié)構(gòu)研究的目的簡單地說就是優(yōu)化代碼,提高程序執(zhí)行效率。比如,把一堆無順的數(shù)據(jù)通過一個(gè)算法實(shí)現(xiàn)順序排列實(shí)現(xiàn)方法太多太多,但是也許運(yùn)行速率最快的占用的存儲空間很大也許運(yùn)行速率不是很快的占用的存儲空間卻很小,所以要通過算法與數(shù)據(jù)結(jié)構(gòu)分析。
二、數(shù)據(jù)機(jī)構(gòu)經(jīng)典算法的選擇
選擇經(jīng)典算法的重要性,PASCAL語言的創(chuàng)始人、著名的計(jì)算機(jī)科學(xué)家N.沃思說得好“程序=數(shù)據(jù)結(jié)構(gòu)+算法”,足以見得算法在程序設(shè)計(jì)中的重要地位。在合理的數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)上,算法是對數(shù)據(jù)結(jié)構(gòu)的操作(運(yùn)算),是數(shù)據(jù)處理的核心。數(shù)據(jù)結(jié)構(gòu)中所講的基本數(shù)據(jù)結(jié)構(gòu)有線性表、堆棧、隊(duì)列、數(shù)組、樹、二叉樹、圖以及相應(yīng)的算法。一個(gè)算法是建立在某種數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上,一個(gè)算法不可能脫離數(shù)據(jù)結(jié)構(gòu)而孤立存在。只有通過分析算法,才能真正掌握某種數(shù)據(jù)結(jié)構(gòu)。一個(gè)經(jīng)典算法往往能起到以一當(dāng)十、以點(diǎn)帶面的關(guān)鍵作用。選擇好經(jīng)典算法后下一步就是要對其展開綜合分析,下面以具體的算法為例進(jìn)行討論。
三、利用經(jīng)典算法說明基本原理
3.1經(jīng)典算法應(yīng)能體現(xiàn)某個(gè)數(shù)據(jù)結(jié)構(gòu)的基本特征
我們知道線性表順序存儲時(shí)其優(yōu)點(diǎn)是能夠?qū)γ總€(gè)數(shù)據(jù)元素隨機(jī)訪問,存儲密度高,其缺點(diǎn)是插入、刪除操作時(shí)需要移動(dòng)大量的數(shù)據(jù)元素,操作效率低?!跋蛴行颍ㄓ尚〉酱蠡蛴纱蟮叫。┑木€性表(順序存儲)插入一個(gè)新的數(shù)據(jù)元素”,這一經(jīng)典算法集中反映了線性表順序存儲的這些特點(diǎn)。
分析:將一個(gè)值為X的數(shù)據(jù)元素插入到有序(由小到大或由大到?。┑木€性表(順序存儲)中,可以分兩步進(jìn)行,首先查找到值為X的數(shù)據(jù)元素在線性表中應(yīng)有的位置,采用從頭到尾循環(huán)比較的方法確定其位置I,然后,將第I個(gè)以后的全部數(shù)據(jù)元素向后移動(dòng)一個(gè)存儲單元,最后將值為X的數(shù)據(jù)元素存放到第I個(gè)位置上,線性表元素個(gè)數(shù)增1。
【算法1】
PROCEDUREINSERT(V,m,n,X)
//將值為X的數(shù)據(jù)元素插入到V數(shù)組中,(線性表順序存貯在V中)m為最多元素個(gè)數(shù),n為當(dāng)前實(shí)際元素個(gè)數(shù)IF(m=n)THEN{“OVERFLOW”;RETURN}FORI=1TOnDO
IF(X〈V(I))THENBREAK
FORJ=nTOIBY-1DOV(J+1)=V(J)V(I)=X
n=n+1
RETURN
分析:【算法1】的優(yōu)點(diǎn)是簡單,便于理解,缺點(diǎn)是:①循環(huán)體內(nèi)有提前退出語句,不利于結(jié)構(gòu)化程序設(shè)計(jì);②確定新數(shù)據(jù)元素位置和移動(dòng)數(shù)據(jù)元素分兩步進(jìn)行,有重復(fù)操作,可以改進(jìn)之,將兩步合并一步完成,即將循環(huán)比較與移動(dòng)數(shù)據(jù)元素同時(shí)進(jìn)行。從線性表的尾部開始向前循環(huán)比較,比新數(shù)據(jù)元素大者后移,直到小于等于時(shí)停止。
【算法2】
PROCEDUREINSERT(V,m,n,X)
IF(m=n)THEN{“OVERFLOW”;RETURN}
I=n
WHILE(I〉=1)AND(V(I)〉X)DO{V(I+1)=V(I);I=I-1}V(I+1)=X
n=n+1
RETURN
分析:注意【算法2】中循環(huán)條件,當(dāng)循環(huán)結(jié)束后I=0或V(I)〈=X,新數(shù)據(jù)元素的位置為I+1,【算法1】的時(shí)間復(fù)雜度為0(2n),而【算法2】的時(shí)間復(fù)雜度為0(n),效率提高一倍。循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)中最基本最核心的部分,歸納循環(huán)條件是關(guān)鍵?!舅惴?】能進(jìn)一步推廣。
3.2利用經(jīng)典算法學(xué)習(xí)算法設(shè)計(jì)
經(jīng)典算法能給學(xué)習(xí)者以啟示、示范作用。分析:可以將【算法2】用于對線性表(順序存儲)排序算法中。在直接插入排序算法中,其算法思想是從第2個(gè)數(shù)據(jù)元素開始直到第n個(gè)數(shù)據(jù)元素,逐一插入到已有序的子線性表中。【算法3】
PROCEDURESORT(V,n)
FORI=2TOnDO
{Y=V(I)
J=I-1
WHILE(J〉=1)AND(V(J)〉Y)DO{V(J+1)=V(J);J=J-1}V(J+1)=Y}
RETURN
分析:【算示3】其結(jié)構(gòu)分為雙重循環(huán),外循環(huán)完成逐一取數(shù)據(jù)元素,即取第I個(gè)數(shù)據(jù)元素,內(nèi)循環(huán)完成將第I個(gè)數(shù)據(jù)元素插入到前I-1個(gè)已有序的子線性表中。內(nèi)循環(huán)完成的功能可以獨(dú)立成為一個(gè)子函數(shù)(子過程),可以借用【算法2】。這正是結(jié)構(gòu)化程序設(shè)計(jì)思想的體現(xiàn),即主程序完成任務(wù)的劃分,說明“做什么”,子函數(shù)(子過程)完成任務(wù)的具體實(shí)現(xiàn),說明“如何做”。結(jié)構(gòu)化程序設(shè)計(jì)方法采取“分解”的手段來控制系統(tǒng)的復(fù)雜性,將大系統(tǒng)劃分為若干個(gè)相對獨(dú)立的、功能單一的子模塊。一方面子函數(shù)(子過程)可以實(shí)現(xiàn)軟件的重用性,在不同的程序段有相同的處理過程時(shí)調(diào)用子函數(shù)(子過程),減少軟件開發(fā)的工作量;另一方面子函數(shù)(子過程)對具體的實(shí)現(xiàn)技術(shù)細(xì)節(jié)進(jìn)行隱藏,便于開發(fā)人員集中精力把握軟件開發(fā)的核心和主要問題,降低了軟件開發(fā)難度,從而保證軟件質(zhì)量。
四、結(jié)束語
對于計(jì)算機(jī)科學(xué)來說,算法的概念至關(guān)重要。通俗的講,算法是指解決問題的一種方法或一個(gè)過程,在眾多的算法中選擇好少量的經(jīng)典算法對于研究數(shù)據(jù)結(jié)構(gòu)以及解決實(shí)際問題至關(guān)重要。掌握好經(jīng)典算法的原理和規(guī)律,將對計(jì)算機(jī)程序設(shè)計(jì)開發(fā)起到事半功倍的作用。
參考文獻(xiàn):
數(shù)據(jù)報(bào)告 數(shù)據(jù)采集論文 數(shù)據(jù)安全論文 數(shù)據(jù)采集 數(shù)據(jù)挖掘總結(jié) 數(shù)據(jù)安全 數(shù)據(jù)統(tǒng)計(jì)論文 數(shù)據(jù)挖掘 數(shù)據(jù)理論論文 數(shù)據(jù)通信論文 紀(jì)律教育問題 新時(shí)代教育價(jià)值觀