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