摘要:“數(shù)據(jù)結(jié)構(gòu)”是計(jì)算機(jī)專業(yè)的一門核心課程,在計(jì)算機(jī)專業(yè)中起著承上啟下的作用。本文作者總結(jié)多年的教學(xué)經(jīng)驗(yàn),就這門課實(shí)驗(yàn)環(huán)節(jié)的教學(xué)改革與實(shí)踐進(jìn)行了分析研究,意在加強(qiáng)對學(xué)生編程能力和上機(jī)解題能力的訓(xùn)練,提高學(xué)生的編程能力和分析問題的思維能力,激發(fā)學(xué)生的創(chuàng)新能力。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);實(shí)驗(yàn)環(huán)節(jié)教學(xué);改革;實(shí)踐
隨著計(jì)算機(jī)處理的數(shù)據(jù)量越來越大,數(shù)據(jù)之間的關(guān)系也越來越復(fù)雜。“數(shù)據(jù)結(jié)構(gòu)”這門課介紹最常用的數(shù)據(jù)結(jié)構(gòu),闡明數(shù)據(jù)結(jié)構(gòu)的內(nèi)在邏輯關(guān)系,討論它們在計(jì)算機(jī)中的存儲表示,并結(jié)合各種典型應(yīng)用,說明它們在進(jìn)行各種運(yùn)算時(shí)的動態(tài)性質(zhì)及實(shí)際的執(zhí)行算法。“數(shù)據(jù)結(jié)構(gòu)”的研究不僅涉及到計(jì)算機(jī)硬件,還和計(jì)算機(jī)軟件密切相關(guān)。計(jì)算機(jī)科學(xué)各領(lǐng)域及有關(guān)的應(yīng)用軟件都要用到數(shù)據(jù)結(jié)構(gòu)[1]。
1實(shí)驗(yàn)教學(xué)在“數(shù)據(jù)結(jié)構(gòu)”教學(xué)中的地位
“數(shù)據(jù)結(jié)構(gòu)”的前導(dǎo)課是高等數(shù)學(xué)、高級語言程序設(shè)計(jì)、離散數(shù)學(xué);它又是操作系統(tǒng)、編譯原理、數(shù)據(jù)庫原理、算法分析、人工智能、圖像處理等專業(yè)課程的前導(dǎo)課,具有承上啟下的作用。在計(jì)算機(jī)碩士研究生入學(xué)考試中都設(shè)有這門課,并且分值最高,所以該課被我校選入第一批重點(diǎn)建設(shè)課。它又是一門實(shí)驗(yàn)性很強(qiáng)的課程,CC2001對該課程及相關(guān)內(nèi)容和相關(guān)度進(jìn)行了明確的描述。“數(shù)據(jù)結(jié)構(gòu)”課程要讓學(xué)生掌握計(jì)算機(jī)處理非數(shù)值運(yùn)算問題時(shí)的一般原理和方法,熟悉解決各種問題的基本模型,培養(yǎng)學(xué)生運(yùn)用已有的算法語言編寫準(zhǔn)確、清晰程序的能力。另外,通過本課程理論體系的學(xué)習(xí),學(xué)生在設(shè)計(jì)軟件系統(tǒng)時(shí)應(yīng)學(xué)會合理選擇數(shù)據(jù)結(jié)構(gòu),并能對所選模型進(jìn)行初步評價(jià),學(xué)生通過學(xué)習(xí),能夠設(shè)計(jì)一個(gè)“好”的程序[2]。
實(shí)驗(yàn)是學(xué)生檢驗(yàn)所學(xué)理論知識是否牢固,并探索和運(yùn)用知識的過程。通過實(shí)驗(yàn),學(xué)生不僅可以進(jìn)一步理解數(shù)據(jù)結(jié)構(gòu)的基本知識,通過對不同存儲結(jié)構(gòu)和相應(yīng)算法的對比及上機(jī)編程練習(xí),提高根據(jù)求解問題性質(zhì)選擇合理的數(shù)據(jù)結(jié)構(gòu)并控制求解算法的時(shí)間、空間復(fù)雜度的能力,而且能進(jìn)一步提高軟件設(shè)計(jì)和編程水平,提高學(xué)習(xí)的積極性和主動性,形成科學(xué)的思維方法和嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度[3-4],因此“數(shù)據(jù)結(jié)構(gòu)”的實(shí)驗(yàn)十分重要。
2 “數(shù)據(jù)結(jié)構(gòu)”實(shí)驗(yàn)教學(xué)的改革和實(shí)踐
2.1更新教材和實(shí)驗(yàn)報(bào)告
要推進(jìn)實(shí)驗(yàn)教學(xué)的改革,首先要改革現(xiàn)有教材,應(yīng)重視學(xué)生實(shí)驗(yàn)?zāi)芰Φ呐囵B(yǎng),體現(xiàn)以學(xué)科為基礎(chǔ)的學(xué)科特色。在“數(shù)據(jù)結(jié)構(gòu)”教學(xué)中,重點(diǎn)是讓學(xué)生通過實(shí)驗(yàn)環(huán)節(jié)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),讓學(xué)生明白哪些知識是基本點(diǎn),哪些是難點(diǎn)和重點(diǎn),明確學(xué)習(xí)目的和作用。在這樣的指導(dǎo)思想下,我們在2005年組織課題組成員,按照CC2001的要求,結(jié)合我國計(jì)算機(jī)的發(fā)展和2009年考研大綱,編寫了C++描述的《數(shù)據(jù)結(jié)構(gòu)與算法》教材,于2008年秋季開始使用,效果良好。每過一學(xué)期,我們都根據(jù)當(dāng)前情況和學(xué)生意見及時(shí)更新實(shí)驗(yàn)報(bào)告。比如最初的實(shí)驗(yàn)報(bào)告有一道字符串的實(shí)驗(yàn)題,隨著計(jì)算機(jī)的發(fā)展,不論是C++語言還是Java語言,已經(jīng)有現(xiàn)成的字符串庫函數(shù),學(xué)生只要會使用庫函數(shù)即可,不需自己編寫,而且考研大綱也不作要求,所以我們及時(shí)更新了教學(xué)內(nèi)容和實(shí)驗(yàn)內(nèi)容,并在實(shí)驗(yàn)題目中增加了ACM大賽的實(shí)驗(yàn)題,為學(xué)生參加程序設(shè)計(jì)大賽打下良好的基礎(chǔ)。
2.2設(shè)計(jì)合理的實(shí)驗(yàn)題目
實(shí)驗(yàn)報(bào)告是“數(shù)據(jù)結(jié)構(gòu)”實(shí)驗(yàn)環(huán)節(jié)的重要內(nèi)容,題目的選取要符合學(xué)生的實(shí)際水平,而且要有跨度,否則會白白浪費(fèi)學(xué)習(xí)時(shí)間。2001年,我們調(diào)研了清華、北大等各院校的教學(xué)改革情況,并征求了畢業(yè)生和已學(xué)過這門課的在校生意見,發(fā)現(xiàn)我們的教學(xué)沒有從學(xué)生的實(shí)際情況出發(fā),很難調(diào)動學(xué)生的學(xué)習(xí)興趣。為此,我們從2002年開始編寫實(shí)驗(yàn)報(bào)告,把實(shí)驗(yàn)題分成三個(gè)層次,有驗(yàn)證(改進(jìn))型、綜合型和設(shè)計(jì)型題目。驗(yàn)證型題目是對教科書上典型算法的實(shí)現(xiàn),也有驗(yàn)證改進(jìn)型的,即是對書上算法稍加修改,這就要求學(xué)生必須事先看懂書上的算法才能修改;綜合型題目是將不同的實(shí)驗(yàn)進(jìn)行組合,綜合解決較復(fù)雜的問題,要求學(xué)生利用各種知識解決新的問題;設(shè)計(jì)型題目是教師提出實(shí)驗(yàn)?zāi)康暮鸵螅瑢W(xué)生自行設(shè)計(jì),完成實(shí)驗(yàn)內(nèi)容,要求學(xué)生的基礎(chǔ)比較好,一般安排在課外進(jìn)行,極大豐富了第二課堂。學(xué)生可根據(jù)自己的能力選擇不同層次的實(shí)驗(yàn)題目,大大提高了學(xué)習(xí)積極性。
我們還鼓勵學(xué)生對教材中的遺留問題進(jìn)行自行設(shè)計(jì),也鼓勵學(xué)生根據(jù)自己的愛好做一些小的系統(tǒng)實(shí)驗(yàn)。這不但使學(xué)生的基本知識和實(shí)驗(yàn)技能得到鞏固,還可以提高學(xué)生的創(chuàng)新能力。實(shí)驗(yàn)報(bào)告的每道實(shí)驗(yàn)題都有明確的“對問題的描述”、“實(shí)驗(yàn)?zāi)康摹薄ⅰ皩?shí)驗(yàn)內(nèi)容及要求”、“測試數(shù)據(jù)”和“思考”,學(xué)生每做一道題,都明白實(shí)驗(yàn)的目的和要求,完成后,教師還要根據(jù)“思考”題目及時(shí)向?qū)W生提出問題,學(xué)生可以自行設(shè)計(jì)實(shí)驗(yàn)方法來解決,教師也可以引導(dǎo)學(xué)生設(shè)計(jì)疑問,主動將教材上的驗(yàn)證性實(shí)驗(yàn)轉(zhuǎn)變?yōu)樵O(shè)計(jì)性實(shí)驗(yàn),教會他們舉一反三,促進(jìn)學(xué)生的思維向新和深的層次發(fā)展,加深他們對所學(xué)知識的理解。
實(shí)驗(yàn)題目還要新穎、有趣。比如我們的實(shí)驗(yàn)報(bào)告有猴子選大王、迷宮等問題,學(xué)生可以使用動態(tài)規(guī)劃、回溯法、分支限界法等算法,將幾個(gè)算法的實(shí)際執(zhí)行時(shí)間進(jìn)行比較,從實(shí)驗(yàn)結(jié)果證明理論分析的正確性。
2.3建立“以老帶新,青年為主”的教學(xué)梯隊(duì)
我們的教學(xué)梯隊(duì)平均年齡35歲,教授、副教授占40%,講師占40%,助教占20%。青年教師中有碩士和博士研究生,他們接受新鮮事物快,精力充沛且動手能力強(qiáng),但缺乏教學(xué)經(jīng)驗(yàn),所以我們要求青年教師至少帶兩年的實(shí)驗(yàn)輔導(dǎo)和習(xí)題課,在第一次主講之前至少要聽有經(jīng)驗(yàn)教師一學(xué)期的課,而有經(jīng)驗(yàn)的教師還要不斷試聽青年教師的課,指出不足之處,幫助他們盡快提高教學(xué)水平。經(jīng)過幾年的鍛煉,青年教師陸續(xù)登上講臺,共有3人在內(nèi)蒙古大學(xué)“青年教學(xué)技藝大賽”中獲得了1個(gè)一等獎和2個(gè)二等獎,其中1人獲得內(nèi)蒙古自治區(qū)高等院校第四屆青年教師課題教學(xué)技能大賽理科組一等獎,成為這門課的骨干教師。
2.4加強(qiáng)上機(jī)輔導(dǎo)和課后輔導(dǎo)
編程是高強(qiáng)度的腦力勞動,不是聽會的,也不是看會的,而是自己練會的。剛開始,大部分學(xué)生上機(jī)前沒有編好程序,而是上機(jī)時(shí)現(xiàn)編程序,白白浪費(fèi)寶貴的上機(jī)時(shí)間;有些教師輔導(dǎo)時(shí)發(fā)現(xiàn)學(xué)生的程序有錯(cuò),就動手幫助調(diào)試,而不是給學(xué)生指出錯(cuò)誤的原因,讓學(xué)生明白后自己修改。結(jié)果雖然程序調(diào)試好了,但學(xué)生不知道是什么原因,以后再有錯(cuò)誤時(shí)就依賴教師修改,輔導(dǎo)教師很累,而教學(xué)效果并不好,學(xué)生和教師都有怨言。針對這些情況,我們要求每個(gè)學(xué)生上機(jī)之前就把程序編好,上機(jī)調(diào)試過程中有問題要及時(shí)問老師,最大限度地利用上機(jī)時(shí)間;教師輔導(dǎo)時(shí)既要認(rèn)真負(fù)責(zé),又要講究方式方法,學(xué)生有問題,教師要指出錯(cuò)誤所在,讓學(xué)生明白錯(cuò)誤的原因,然后讓學(xué)生自己改。這樣既可以提高學(xué)生的編程能力,又使每個(gè)學(xué)生的問題都能及時(shí)解決。
每做一道實(shí)驗(yàn)題前,教師都會大致解釋題目的含義、用到的知識模塊,有的還要引導(dǎo)學(xué)生查閱一些參考資料。每當(dāng)一個(gè)模塊結(jié)束后(以一個(gè)邏輯結(jié)構(gòu)為一個(gè)模塊),我們都要把幾個(gè)班的學(xué)生組織在一起(平時(shí)上課是小班),對已經(jīng)驗(yàn)收過的較好程序和普遍存在的問題進(jìn)行統(tǒng)一講解和總結(jié)。通過總結(jié),學(xué)生加深對實(shí)驗(yàn)的理解,知其然,也知其所以然。通過融會貫通已完成的各部分實(shí)驗(yàn),自然引出下一模塊的實(shí)驗(yàn)。
由于現(xiàn)在學(xué)生都沒有固定教室,教師沒有輔導(dǎo)的固定地點(diǎn),我們每周一至周四下午安排一名教師在辦公室答疑,哪個(gè)班的學(xué)生都可以到指定辦公室問問題,值班教師在辦公室的機(jī)器上修改學(xué)生的程序,這樣比在教室里單純講解理論的效果要好得多。
2.5加大對實(shí)驗(yàn)環(huán)節(jié)的考核力度
學(xué)計(jì)算機(jī)的,不動手是學(xué)不會編程的,學(xué)不會編程也就等于沒有學(xué)會計(jì)算機(jī),所以要提高學(xué)生的編程能力,就要加大對學(xué)生實(shí)驗(yàn)環(huán)節(jié)的考核力度。在“數(shù)據(jù)結(jié)構(gòu)”課程考核中,平時(shí)成績、實(shí)驗(yàn)成績和理論考試成績比例為1∶4∶5。為了杜絕考前突擊復(fù)習(xí)的現(xiàn)象,我們在第一節(jié)課就講清要求,讓學(xué)生從上課的第一天起就重視這門課,真正掌握這門課。在實(shí)驗(yàn)環(huán)節(jié)的考核中,驗(yàn)證型題目一般要求1周內(nèi)完成,綜合型題目一般要求2~3周內(nèi)完成,對于綜合型題目,學(xué)生先按2~3人分成一組,每人完成一個(gè)模塊,通過接口的調(diào)用組成一個(gè)完整的程序,最后隨機(jī)抽取小組中的一名代表講解編程的設(shè)計(jì)思路,演示程序執(zhí)行情況,輔導(dǎo)教師根據(jù)完成情況給出一個(gè)代表小組的分?jǐn)?shù)。學(xué)生要在規(guī)定的時(shí)間請輔導(dǎo)教師驗(yàn)收實(shí)驗(yàn)題,過期不驗(yàn)收,視為自動放棄,本次實(shí)驗(yàn)題沒有成績。
經(jīng)過七年實(shí)驗(yàn)教學(xué)的改革與實(shí)踐,我們?nèi)〉昧嗣黠@效果。2007年6月,在哈爾濱工業(yè)大學(xué)舉行的“東軟杯”ACM/ICPC中國#8226;東北地區(qū)首屆大學(xué)生程序設(shè)計(jì)競賽中,我院選派了3支代表隊(duì),結(jié)果分獲一、二、三等獎;2007年11月,在內(nèi)蒙古自治區(qū)計(jì)算機(jī)學(xué)會、內(nèi)蒙古自治區(qū)高等學(xué)校計(jì)算機(jī)教育專業(yè)委員會主辦,內(nèi)蒙古大學(xué)承辦的內(nèi)蒙古自治區(qū)第二屆ACM/ICPC
大學(xué)生程序設(shè)計(jì)競賽中,我院分獲團(tuán)體、一、二、三等獎;2008年,在ACM程序設(shè)計(jì)相關(guān)比賽中,我院獲自治區(qū)級一等獎、2個(gè)二等獎,獲東北賽區(qū)1個(gè)三等獎、2個(gè)優(yōu)秀獎。
實(shí)踐證明,這樣教學(xué)改革不僅能激發(fā)學(xué)生學(xué)習(xí)的積極性,還能鍛煉他們的團(tuán)隊(duì)精神,讓他們學(xué)會軟件開發(fā)的整個(gè)過程,為他們編程能力的提高、畢業(yè)論文設(shè)計(jì)和走向工作崗位打下良好基礎(chǔ)。
3結(jié)束語
從2009年開始,計(jì)算機(jī)碩士研究生入學(xué)考試采取全國統(tǒng)考的方式,“數(shù)據(jù)結(jié)構(gòu)”是必考科目,而且占分值最大,這更能說明這門課在計(jì)算機(jī)專業(yè)中的重要性。這些年來,我們一直致力于這門課的建設(shè),從教材選用、課程體系建設(shè)、師資隊(duì)伍、課程教學(xué)、實(shí)驗(yàn)教學(xué)等各個(gè)環(huán)節(jié)進(jìn)行了不斷的實(shí)踐和探索[5]。我們相信,通過加大對“數(shù)據(jù)結(jié)構(gòu)”教學(xué),特別是實(shí)驗(yàn)環(huán)節(jié)的改革和實(shí)踐,一定能進(jìn)一步調(diào)動起學(xué)生學(xué)習(xí)這門課的積極性,激勵他們熱愛計(jì)算機(jī),熱愛科學(xué),成為IT業(yè)的優(yōu)秀人才。
參考文獻(xiàn):
[1] 殷人昆. 數(shù)據(jù)結(jié)構(gòu)[M]. 北京:清華大學(xué)出版社,2007.
[2] 王昭榮,曾衛(wèi)東,魯興萌. 改革實(shí)驗(yàn)教學(xué)及管理模式,培養(yǎng)創(chuàng)新型本科人才[J]. 高等理科教育,2007(1):63-65.
[3] 汪沁. 基于“數(shù)據(jù)結(jié)構(gòu)”實(shí)驗(yàn)的探討和研究[J]. 中國教育信息化,2007(4):17-19.
[4] 徐大華. 程序設(shè)計(jì)語言教學(xué)方法探討[J]. 高等理科教育,2007(1):36-38.
[5] 趙艷紅,邵定宏.“數(shù)據(jù)結(jié)構(gòu)”教學(xué)的探索與研究[J]. 計(jì)算機(jī)教育,2008(9):131-132.
Reform and Practice in Data Structure Course’s Experimental Aspects
ZHAO Yu-lan
(College of Computer Science, Neimongol University, Hohhot 010021, China)
Abstract: “Data Structure” is a Core Curriculum of computer science, and it plays a nexus role in the computer science teaching. Based on the summarizing of many years’ teaching experiences of the course, an analysis and research on the reform and practice of experiment teaching is given in this paper. We intend to strengthen students’ programming ability and problem solving ability training and intend to improve student's programming ability and the power of thought in analysis and also stimulate student's innovation ability.
Key words: Data Structure; experimental teaching; reform; practice
(編輯:張玥)