劉曉靜,王曉英,張玉安,黃建強,劉志強
(青海大學 計算機技術(shù)與應(yīng)用系,青海 西寧 810016)
針對創(chuàng)新及創(chuàng)新人才的培養(yǎng),美國制定了著名的“2061”計劃,旨在用一代人的時間根本改變美國的教育體制,造就新一代具有高度科學素養(yǎng)的國民。在我國,2012年4月20日,教育部發(fā)布《全面提高高等教育質(zhì)量的若干意見》,明確提出將“創(chuàng)新人才培養(yǎng)模式”作為提高高等教育質(zhì)量的一個重要舉措。以創(chuàng)新人才培養(yǎng)為目標也是當今高等教育順應(yīng)時代改革的主題。實驗教學是造就創(chuàng)新人才培養(yǎng)的平臺,通過有效的實驗教學,可以加深學生對基本理論的理解,提高和增強學生的實踐能力、社會適應(yīng)能力以及創(chuàng)新能力[1-2]。西部地區(qū),特別是青海作為經(jīng)濟欠發(fā)達地區(qū),實現(xiàn)青海省對信息化人才培養(yǎng)提出的“以培養(yǎng)應(yīng)用型人才為目標”,已成為一個重要的研究課題。計算機科學與其他學科之間的互相滲透與融合對復合型人才的需求日益增加,從科學技術(shù)發(fā)展方向和構(gòu)建復合型人才知識結(jié)構(gòu)的角度出發(fā),青海大學計算機系開設(shè)了數(shù)據(jù)結(jié)構(gòu)課程[3]。
數(shù)據(jù)結(jié)構(gòu)課程是介于數(shù)學、計算機硬件和計算機軟件之間的一門課程,主要講述算法設(shè)計和數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)原理和技術(shù),是計算機科學課程體系中核心課程之首,作為學科的專業(yè)基礎(chǔ)課,具有承上啟下的重要作用,不僅是一般程序設(shè)計的基礎(chǔ),而且是設(shè)計和實現(xiàn)編譯程序、操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)及其他系統(tǒng)程序和大型應(yīng)用程序的重要基礎(chǔ)[4]。社會上大多數(shù)公司在招聘軟件開發(fā)人員時必然會考查應(yīng)聘人員對數(shù)據(jù)結(jié)構(gòu)的掌握程度,并將此作為衡量應(yīng)聘者水平的重要依據(jù)[5]。課程所討論的知識內(nèi)容和提倡的技術(shù)方法,無論對進一步學習計算機領(lǐng)域的其他課程,還是對從事軟件工程的開發(fā),都有著不可替代的作用。作為計算機專業(yè)的核心基礎(chǔ)課程,數(shù)據(jù)結(jié)構(gòu)課程既注重基本的程序設(shè)計能力的培養(yǎng),又強調(diào)技術(shù)性和實踐應(yīng)用性。
計算機的程序設(shè)計是一項創(chuàng)造性的智力勞動,讓學生理解、習慣、熟悉這一套算法構(gòu)造的思維方法,是實踐環(huán)節(jié)所要解決的核心問題,然而由于數(shù)據(jù)結(jié)構(gòu)這門課程具有相當?shù)某橄笮院蛣討B(tài)性[6],學生學習的興趣和主動性不足,教學效果不理想,在實踐教學中普遍存在以下問題:
(1)理論與實踐相脫節(jié)。數(shù)據(jù)結(jié)構(gòu)課程涉及的知識點比較多、程序復雜、邏輯性強、抽象性高。在整個教學過程中,教師常常重點講授理論知識,而忽視了學生的學習興趣與所學知識實際應(yīng)用的結(jié)合。此外,現(xiàn)在多數(shù)教材中沒有現(xiàn)成的源程序,需要學生將偽碼描述的算法編程實現(xiàn)。久而久之,有的學生對學習逐漸失去興趣,嚴重阻礙了學生專業(yè)素質(zhì)、應(yīng)用能力以及創(chuàng)新能力的提高。
(2)語言能力相對薄弱。學生對前導課程程序設(shè)計基礎(chǔ)I、程序設(shè)計基礎(chǔ)II學習不夠扎實,尤其對結(jié)構(gòu)體、指針這2種數(shù)據(jù)結(jié)構(gòu)課程中常用數(shù)據(jù)類型的認識和理解還不夠透徹,導致在完成課程實驗中遇到各種與語言相關(guān)的技術(shù)障礙,使其在完成實驗時舉步維艱。
(3)缺乏編寫算法的感性認識和體會。學生在積累算法編寫經(jīng)驗和提高動手能力方面的實踐還不夠,因而缺乏編寫算法的感性認識。
(4)作業(yè)抄襲現(xiàn)象嚴重。由于以上原因,學生不愿意花費時間和精力投入在作業(yè)中,因而為了完成作業(yè)任務(wù),經(jīng)?;ハ喑u作業(yè)。
為了克服上述問題,在課程教學過程中,應(yīng)構(gòu)建并實施符合專業(yè)應(yīng)用型創(chuàng)新人才培養(yǎng)要求的實踐教學體系,從而促進學生專業(yè)技術(shù)素質(zhì)與實踐能力養(yǎng)成[7]。具體來說,應(yīng)該通過把握本課程的主線和重點改革實驗教學內(nèi)容和方法,使學生具備一定的軟件開發(fā)能力和自主創(chuàng)新能力,從而為學生今后的專業(yè)學習打下堅實基礎(chǔ)。
數(shù)據(jù)結(jié)構(gòu)課程的內(nèi)容可以由概念表述、數(shù)據(jù)模型、設(shè)計算法3個層面來描述,從而也顯示了本課程的3個階段:數(shù)學模型—抽象數(shù)據(jù)類型—數(shù)據(jù)結(jié)構(gòu)。因而在本課程實踐教學中,也可以將教學實踐的目標分為3個層次——理解抽象的理論概念、掌握數(shù)據(jù)模型的一些典型應(yīng)用,并逐步培養(yǎng)學生利用數(shù)據(jù)結(jié)構(gòu)知識解決實際問題的能力。這3個目標層次是相輔相成的,難度由簡到難,同時也體現(xiàn)了學生掌握知識并運用知識解決問題能力逐步提高的過程。以培養(yǎng)高素質(zhì)的應(yīng)用型計算機人才為目的,依據(jù)教學實踐目標的3個層次對實驗教學內(nèi)容進行改革,分為基礎(chǔ)型實驗、綜合型實驗以及課程設(shè)計[8]。
為了幫助學生克服對前導課程程序設(shè)計不夠扎實的困難,設(shè)置了C++基礎(chǔ)以及抽象數(shù)據(jù)類型實驗,從而對結(jié)構(gòu)體與指針這2種常用數(shù)據(jù)類型進行了復習與鞏固。
根據(jù)數(shù)據(jù)結(jié)構(gòu)的內(nèi)容設(shè)置了線性表的插入與刪除、棧的基本操作、遞歸、二叉樹的基本操作、二叉搜索樹的基本操作、無向圖與有向圖的遍歷以及各種排序的實現(xiàn)等基礎(chǔ)型實驗內(nèi)容。學生還可以根據(jù)課本定義,自行擴展討論、定義和實現(xiàn)一些其他基本操作。此外,為了幫助學生更好地完成實驗內(nèi)容,還編寫了實驗指導書,給學生提供了部分實例。
每一種數(shù)據(jù)結(jié)構(gòu)都有一些很典型的應(yīng)用,但和復雜的應(yīng)用問題相比,這類應(yīng)用任務(wù)相對簡單而直接,往往可以從任務(wù)描述中直接、容易地獲知使用哪種數(shù)據(jù)結(jié)構(gòu)[9-10],如單循環(huán)鏈表中的猴子選大王問題、棧中的括號匹配問題、隊列中的機場調(diào)度問題、高維數(shù)組應(yīng)用中的鞍點問題、無向圖的最小生成樹問題、有向圖的最短路徑問題以及計數(shù)排序問題等。
通過加大啟發(fā)式的設(shè)計型和綜合型實驗,以點帶面,讓學生自己進行編程、調(diào)試,使學生在實驗中加深了掌握該種數(shù)據(jù)結(jié)構(gòu)下的數(shù)據(jù)組織、加工、處理的方法,進一步理解算法的設(shè)計,從而鍛煉編寫和調(diào)試程序的能力,進而增加了對編寫算法的感性認識和體會。
實驗教學采用“教研結(jié)合”的人才培養(yǎng)模式,在實踐中從科學技術(shù)的發(fā)展方向和構(gòu)建復合型人才知識結(jié)構(gòu)的角度出發(fā),增加了課程設(shè)計環(huán)節(jié),主要訓練學生運用模板庫進行項目開發(fā)的能力,以及進行基本的軟件工程訓練。對于學生來說,課程設(shè)計的任務(wù)更艱難,涉及的內(nèi)容更多,要求的程序代碼更長,而內(nèi)容也更加靈活,但同時也給學生提供了更有自主發(fā)揮的空間,如可以增加界面設(shè)計等。學生在解決這些問題的過程中,會更加切實地感受到數(shù)據(jù)結(jié)構(gòu)的作用,提高學習的興趣。此外,課程設(shè)計是以小組的形式來組織實施的,有助于培養(yǎng)學生的創(chuàng)新精神和團隊協(xié)作精神。
基礎(chǔ)型實驗,相對簡單,容易實現(xiàn),可以增加學生的自信心;綜合型實驗,可以使學生了解和體會到數(shù)據(jù)結(jié)構(gòu)的實用性,成功地解決一些典型的應(yīng)用問題而具有了成就感;課程設(shè)計,可以使學生對學過的相關(guān)知識有更深刻的認識、體會和把握,從而可以訓練和提高學生對復雜問題的綜合分析能力,樹立務(wù)實的科學態(tài)度,鍛煉科學思維,進而培養(yǎng)學生的創(chuàng)新意識。
實驗教學要想獲得令人滿意的教學效果,必須采用多種教學手段綜合運用。針對3個層次的實驗,教師在實驗指導中分別扮演不同的角色,采用相適應(yīng)的教學手段和教學方法。
由于數(shù)據(jù)結(jié)構(gòu)的算法涉及從簡單的線性表到復雜的樹、圖等多種數(shù)據(jù)結(jié)構(gòu),具有一定的難度和復雜性,給該課程的學習帶來了許多困難,對算法思想的理解成為學習本課程的一個重點。通過數(shù)據(jù)結(jié)構(gòu)演示系統(tǒng)可以將抽象的算法執(zhí)行過程以淺顯易懂的形式展現(xiàn)在學生面前,從而增強學生對算法的感性認識,如圖1所示。
圖1 數(shù)據(jù)結(jié)構(gòu)演示系統(tǒng)
算法過程的可視化演示是通過圖形的方式表示數(shù)據(jù)結(jié)構(gòu)狀態(tài)的轉(zhuǎn)換及其變化過程,力求生動、形象,將算法執(zhí)行的動態(tài)過程表現(xiàn)得淋漓盡致,從而使學生能夠快速地掌握基本算法,迅速完成基礎(chǔ)型實驗。
學生學籍管理系統(tǒng)(見圖2)、航空管理系統(tǒng)(見圖3)以及景區(qū)旅游信息管理系統(tǒng)(見圖4)3個案例,可以將線性表、棧、隊列、樹、圖、排序等知識點貫串進來。在具體的實施過程中,按照探究未知知識領(lǐng)域的途徑,通過提出問題、分析問題、創(chuàng)造性地解決問題、知識遷移等步驟對該教學方式予以實施[11]。通過這種系統(tǒng)的學習和使用,學生就能夠掌握某個算法是如何運用到具體問題中的,從而鍛煉了學生的邏輯思維能力。
圖2 學生成績管理系統(tǒng)
圖3 航空管理系統(tǒng)
圖4 景區(qū)旅游信息管理系統(tǒng)
在課程設(shè)計中,教師提供多個不同項目化的題目供學生選擇。學生以學習小組作為一個項目組,按照要求進行構(gòu)思共同商討設(shè)計思路,然后進行算法設(shè)計,接著由項目組長進行分工,各自負責不同部分,分頭去實現(xiàn)算法,最后項目組將大家的實現(xiàn)部分匯總在一起進行整個項目的運作并撰寫課程設(shè)計報告。此外,鼓勵學生參與到教師的教研和科研項目中去。
通過課程設(shè)計和參與教師的教研、科研項目,可以對不同程度的學生,特別是少數(shù)民族學生進行個性化培養(yǎng),以激發(fā)他們的學習熱情,培養(yǎng)和鍛煉他們的創(chuàng)新精神和實踐能力,使他們都能在不同程度上得到提高和發(fā)展。通過多種實踐環(huán)節(jié),使學生更好地理解課堂教學內(nèi)容、拓展知識面,延伸和擴展課堂教學,全面地培養(yǎng)學生的素質(zhì),提高學生的抽象能力、思維能力、算法和數(shù)據(jù)結(jié)構(gòu)的設(shè)計與分析能力、科學報告的撰寫和表達能力,從而使學生學會如何把書上學到的知識用于解決實際問題,培養(yǎng)軟件工作所需要的動手能力。另一方面,能使書上的知識變“活”,起到深化理解和靈活掌握教學內(nèi)容的目的。
此外,這種以項目為導向的教學方法以學生為中心,強調(diào)小組合作學習和自主學習,注重培養(yǎng)專業(yè)技術(shù)應(yīng)用能力、團隊協(xié)作交流能力、系統(tǒng)工程分析能力和自我提升能力。該教學方法可以讓學生深入理解數(shù)據(jù)結(jié)構(gòu)相關(guān)理論、扎實掌握面向?qū)ο箝_發(fā)的技能,全面培養(yǎng)學生在學科技術(shù)、個人專業(yè)素質(zhì)、人際等多個方面的能力,從而在本科層次培養(yǎng)出具備終身學習能力的高素質(zhì)計算機應(yīng)用和開發(fā)人才,并且最終能讓每個學生帶著自己的作品走上工作崗位。
對于基礎(chǔ)型實驗,教師采用電子形式的文檔進行作業(yè)布置和作業(yè)上交,因而使得學生拷貝、粘貼更加方便,存在作業(yè)抄襲現(xiàn)象嚴重、質(zhì)量下降的問題[12]。為了防止作業(yè)抄襲現(xiàn)象繼續(xù)蔓延,教師在批改作業(yè)過程中,采用具有相似度檢測功能的在線作業(yè)批改系統(tǒng),對學生提交的實驗報告進行批改,從而減少了作業(yè)抄襲的次數(shù)。
在綜合型實驗的檢測中,采用課堂上學生分組講解、其他學生提問的方式進行檢測,最后教師進行問題總結(jié)答疑,讓學生意識到有時只靠一個人的學習是不夠全面、不到位的,同學之間必須互相學習,遇到問題互相協(xié)助、共同思考解決方案,這樣才能真正地掌握解決問題的真本領(lǐng)。這種學習方式也提高了學生的團隊合作精神,為后面的課程設(shè)計打下堅實的基礎(chǔ)。
在課程設(shè)計的驗收時,教師安排開展一堂集研究、研討、趣味于一體的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計答辯會,并邀請系里教師作為嘉賓評委出席,整個活動由學生進行策劃、設(shè)計,并由班里學生推薦主持人。學生經(jīng)過查閱資料—構(gòu)思整體方案—算法設(shè)計—編碼實現(xiàn)—調(diào)試運行—總結(jié),整個過程中不斷地討論、不斷地解決問題,每一個環(huán)節(jié)都可以鍛煉學生的溝通能力、解決問題能力以及團隊協(xié)作精神,讓學生受益匪淺。
經(jīng)過不斷的實驗教學改革與實踐,本課程取得了可喜的成績。數(shù)據(jù)結(jié)構(gòu)課程2010年獲批青海大學三類課程建設(shè)項目,2012年獲批青海大學二類課程建設(shè)項目以及青海大學教改項目“基于項目導向的數(shù)據(jù)結(jié)構(gòu)與算法課程教學研究與實踐”,2013年獲批青海大學課堂教學和考試制度綜合改革項目以及清華大學攜手Google助力西部教育項目之精品課程建設(shè)項目,2014年獲批Google創(chuàng)新(開發(fā))課題項目“基于MOOC理念的數(shù)據(jù)結(jié)構(gòu)與算法課程混合教學模式研究”。此外,數(shù)據(jù)結(jié)構(gòu)課程2013年獲得了“青海大學精品課程”稱號,該課程授課教師發(fā)表相關(guān)文章4篇,其中1篇EI檢索,2篇ISTP檢索。
在經(jīng)過該課程的系統(tǒng)學習后,2008、2009、2010級學生申請并獲批3項國家大學生創(chuàng)新型實驗計劃項目,3項青海大學大學生科技創(chuàng)新基金項目以及4項清華大學攜手google助力西部教育科技創(chuàng)新項目。學 生 發(fā) 表 的 文 章HeapAdjustmentAlgorithms BasedonCompleteBinaryTreeStructure獲 得2013年“科教杯”學術(shù)論文大賽國家級一等獎,《基于完全二叉樹結(jié)構(gòu)的堆調(diào)整算法》獲得十三屆“挑戰(zhàn)杯”全國大學生課外學術(shù)科技作品競賽二等獎。
在數(shù)據(jù)結(jié)構(gòu)的實踐教學中,以創(chuàng)新人才培養(yǎng)為目標進行實驗教學改革,強化實踐教學活動中的“教、學、做”合一,教師的“教”是前提、學生的“學”是主體、學生的“做”是實踐。在以后的實踐教學中,還需要繼續(xù)更新教學理念,運用先進的教學手段,與時俱進,探索改革,更好地培養(yǎng)學生成為有創(chuàng)新性思維的新世紀人才。
(
)
[1]張星明,鄭運平.計算機創(chuàng)新人才培養(yǎng)模式的探索[J].計算機教育,2013(18):16-19.
[2]王偉,孟祥貴,安寅.“創(chuàng)新人才培養(yǎng)模式”下的實驗教學改革探索[J].實驗科學與技術(shù),2013,11(2):144-146.
[3]劉曉靜,黃維通,王曉英.西部地區(qū)CDIO理念下的數(shù)據(jù)結(jié)構(gòu)與算法課程建設(shè)[J].計算機教育,2013(17):107-111.
[4]嚴蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)[M].北京:清華大學出版社,2007.
[5]沈華.數(shù)據(jù)結(jié)構(gòu)、算法和程序之間關(guān)系的探討[J].計算機教育,2013(4):58-61.
[6]高一凡.《數(shù)據(jù)結(jié)構(gòu)》算法實現(xiàn)及解析[M].西安:西安電子科技大學出版社,2004.
[7]龔德良,謝燕江,王魯達,等.以應(yīng)用型創(chuàng)新人才培養(yǎng)為核心的計算機專業(yè)實踐教學體系研究[J].計算機教育,2013(2):5-8.
[8]劉曉靜,王曉英,薛媛媛,等.讓趣味教學進駐數(shù)據(jù)結(jié)構(gòu)與算法課堂[J].青海大學學報,2011,29(5):95-97.
[9]張同珍.數(shù)據(jù)結(jié)構(gòu)課程實驗教學探索與實踐[J].實驗室研究與探索,2011,30(9):293-295.
[10]李和平,龔波林,劉萬毅.深化實驗教學改革 強化技能型人才培養(yǎng)[J].實驗技術(shù)與管理,2013,30(2):159-161.
[11]譚定英,陳平平,劉慧玲.以問題為中心的案例教學法在數(shù)據(jù)結(jié)構(gòu)與算法課程中的應(yīng)用[J].計算機教育,2013(12):50-53.
[12]王曉英,靳力,王曉青,等.基于序列匹配的作業(yè)相似度檢測系統(tǒng)[J].計算機工程,2012,38(24):53-61.