王玉國(guó)
(通化師范學(xué)院計(jì)算機(jī)學(xué)院,吉林通化134002)
數(shù)據(jù)結(jié)構(gòu)課程是計(jì)算機(jī)專業(yè)的核心課程之一,是本科教學(xué)的重中之重[1].它的教學(xué)要求一方面是學(xué)會(huì)分析研究計(jì)算機(jī)加工的數(shù)據(jù)結(jié)構(gòu)的特性,以便為應(yīng)用涉及的數(shù)據(jù)選擇適當(dāng)?shù)倪壿嫿Y(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)及其相應(yīng)的算法,并初步掌握算法的時(shí)間分析和空間分析技術(shù).另一方面,本課程的學(xué)習(xí)過程也是復(fù)雜程序設(shè)計(jì)的訓(xùn)練過程,要求學(xué)生編寫的程序結(jié)構(gòu)清楚、正確易讀,符合軟件工程規(guī)范[2],從數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)要求中可以看出實(shí)踐教學(xué)的重要性.而該課程的傳統(tǒng)實(shí)踐教學(xué)環(huán)節(jié)卻存在一些問題,本文針對(duì)其存在的問題提出相應(yīng)的教學(xué)改革措施.
(1)實(shí)驗(yàn)題目沒有體現(xiàn)綜合性和應(yīng)用性.這里的綜合性是指實(shí)驗(yàn)內(nèi)容涉及本課程的綜合知識(shí)或與本課程相關(guān)課程知識(shí)的實(shí)驗(yàn),實(shí)驗(yàn)內(nèi)容涉及幾個(gè)章節(jié)或幾門課程的基本概念、基本理論和基本技能.通過綜合性實(shí)驗(yàn),能將所學(xué)的多個(gè)知識(shí)點(diǎn)整合在一個(gè)實(shí)驗(yàn)題目中,是對(duì)學(xué)生能力水平的一種較高層次的要求.這里的應(yīng)用性是指實(shí)驗(yàn)內(nèi)容能解決具體的實(shí)際問題,使學(xué)生會(huì)用學(xué)到的知識(shí)[3].傳統(tǒng)實(shí)踐教學(xué)中,實(shí)驗(yàn)題目?jī)H針對(duì)某一個(gè)問題,體現(xiàn)不出綜合性,也沒有和具體的應(yīng)用相結(jié)合,體現(xiàn)不出應(yīng)用性.另外,傳統(tǒng)實(shí)踐教學(xué)難以較好地把握實(shí)驗(yàn)題目的難易程度,太難的題目大部分學(xué)生完成不了,太簡(jiǎn)單的題目達(dá)不到提高學(xué)生程序設(shè)計(jì)能力的目的.
(2)學(xué)生對(duì)數(shù)據(jù)結(jié)構(gòu)課程預(yù)備知識(shí)掌握不牢.程序設(shè)計(jì)語言課程是數(shù)據(jù)結(jié)構(gòu)課程的先行課,從實(shí)踐教學(xué)的角度要求學(xué)生必須掌握函數(shù)、結(jié)構(gòu)體、指針、遞歸程序設(shè)計(jì)方法、動(dòng)態(tài)內(nèi)存分配方法等語言要素.在教學(xué)過程中筆者卻發(fā)現(xiàn)學(xué)生修完該課程后,對(duì)這些要素理解得不深入,沒有進(jìn)一步形成能力.傳統(tǒng)的實(shí)踐教學(xué)沒有考慮到這些,直接影響到數(shù)據(jù)結(jié)構(gòu)課程的實(shí)踐教學(xué).
(3)學(xué)生的程序設(shè)計(jì)能力不強(qiáng).學(xué)生學(xué)習(xí)完程序設(shè)計(jì)語言課后,由于沒有做過多少相對(duì)大一點(diǎn)的程序設(shè)計(jì)項(xiàng)目,系統(tǒng)化訓(xùn)練比較少,因此普遍編程能力不強(qiáng),更談不上工程能力.而教師往往又高估學(xué)生的程序設(shè)計(jì)能力,認(rèn)為學(xué)生已經(jīng)具備了足夠的編程能力,能自己把算法改寫成程序.傳統(tǒng)實(shí)踐教學(xué)中沒有解決這一矛盾,導(dǎo)致教師指導(dǎo)不夠,學(xué)生在實(shí)踐活動(dòng)中出現(xiàn)力不從心,無從下手的困難局面.
(4)實(shí)踐教學(xué)環(huán)節(jié)不完整.傳統(tǒng)的實(shí)踐教學(xué)過程中采用的是教師布置實(shí)驗(yàn)任務(wù),學(xué)生完生實(shí)驗(yàn)這樣簡(jiǎn)單的模式.教師對(duì)學(xué)生實(shí)驗(yàn)過程及完成情況掌控不夠,很多實(shí)驗(yàn)沒有達(dá)到目的.學(xué)生也沒有對(duì)實(shí)驗(yàn)認(rèn)真總結(jié),并且存在抄襲現(xiàn)象.
以上這些問題是普遍存在的,針對(duì)這些情況,如何提高這門課程的實(shí)踐教學(xué)效果,是一個(gè)值得探討的問題.筆者結(jié)合多年從事數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)經(jīng)驗(yàn),提出了針對(duì)數(shù)據(jù)結(jié)構(gòu)課程實(shí)踐教學(xué)的改革思路,并在實(shí)際教學(xué)中取得了很好的效果.
在數(shù)據(jù)結(jié)構(gòu)課程實(shí)踐教學(xué)改革中,重新設(shè)計(jì)了實(shí)踐教學(xué)題目,使實(shí)驗(yàn)題目難度適中,具有綜合性和應(yīng)用性.針對(duì)學(xué)生預(yù)備知識(shí)掌握不牢和程序設(shè)計(jì)能力不強(qiáng)的問題,提出了實(shí)踐教學(xué)分三階段進(jìn)行的總體實(shí)施方案.最后給出了具體的實(shí)施方案,形成完整的實(shí)踐教學(xué)環(huán)節(jié).
在實(shí)踐教學(xué)題目改革的過程中,充分考慮了實(shí)驗(yàn)題目的綜合性和應(yīng)用性.例如“用順序表管理學(xué)生的通訊錄”這個(gè)題目綜合了順序表、結(jié)構(gòu)體、文件等知識(shí),具有綜合性.同時(shí)這個(gè)題目解決了學(xué)生身邊的問題,具有應(yīng)用性.表1給出了改革之后數(shù)據(jù)結(jié)構(gòu)課程實(shí)踐教學(xué)中選用的典型實(shí)驗(yàn)題目.

表1 可選用的典型實(shí)驗(yàn)題目
根據(jù)學(xué)生特點(diǎn)和數(shù)據(jù)結(jié)構(gòu)課程特點(diǎn),遵循循序漸進(jìn)的規(guī)律,在教學(xué)中把實(shí)踐教學(xué)過程分為三個(gè)階段,分別是預(yù)備階段、模仿階段和獨(dú)立完成階段.其中,預(yù)備階段持續(xù)兩周時(shí)間,模仿階段持續(xù)三周時(shí)間,剩下的教學(xué)時(shí)間都用于獨(dú)立完成階段.
(1)預(yù)備階段.預(yù)備階段主要是復(fù)習(xí)鞏固程序設(shè)計(jì)語言的基本要素,主要包括函數(shù)、結(jié)構(gòu)體、指針、遞歸程序設(shè)計(jì)方法、動(dòng)態(tài)內(nèi)存分配方法等,解決學(xué)生對(duì)數(shù)據(jù)結(jié)構(gòu)課程預(yù)備知識(shí)掌握不牢的問題.采用任務(wù)驅(qū)動(dòng)的方式進(jìn)行,將相關(guān)題目以任務(wù)的形式布置給學(xué)生,讓學(xué)生在課后完成.主要的參考題目如表2所示.

表2 預(yù)備階段參考題目
(2)模仿階段.在模仿階段,教師給出解決一個(gè)實(shí)驗(yàn)問題的框架,預(yù)留部分功能讓學(xué)生去完成,主要是解決學(xué)生程序設(shè)計(jì)能力不強(qiáng)的問題.這個(gè)階段教師要完成一個(gè)實(shí)驗(yàn)的主體,編寫一個(gè)解決該實(shí)驗(yàn)問題的程序框架,學(xué)生要分析掌握這個(gè)程序框架,并補(bǔ)充部分功能.要求教師給出的框架結(jié)構(gòu)清晰,易于理解,功能完整,能作為模板來使用.教師要和學(xué)生一起分析這個(gè)框架,讓學(xué)生在整體上能夠把握.最后學(xué)生要把教師預(yù)留的功能補(bǔ)充完整,完成實(shí)驗(yàn)的后續(xù)工作.圖1是“用順序表管理某班級(jí)一門課程的成績(jī)”這個(gè)問題主體結(jié)構(gòu)的一部分.

圖1 順序表解決問題的框架
其中,在createsqlist函數(shù)中完成順序表的建立功能,runmenu函數(shù)以菜單的形式顯示對(duì)順序表的主體操作功能.學(xué)生分析了這個(gè)模板框架后,補(bǔ)充功能,使這個(gè)實(shí)驗(yàn)完整,同時(shí)能解決類似的問題.
(3)獨(dú)立完成階段.通過模仿階段,學(xué)生對(duì)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)有了認(rèn)識(shí),掌握了解決問題的基本方法,程序設(shè)計(jì)能力有了提高,自然就過渡到獨(dú)立完成階段.在獨(dú)立完成階段,學(xué)生通過獨(dú)立完成整個(gè)實(shí)驗(yàn),可以進(jìn)一步提高解決問題的能力和編程能力.
在實(shí)踐教學(xué)具體實(shí)施過程中,改革了以往簡(jiǎn)單的實(shí)施模式,使教學(xué)環(huán)節(jié)趨于完整.實(shí)踐教學(xué)的具體實(shí)施方案步驟有:布置實(shí)驗(yàn)任務(wù)、指導(dǎo)實(shí)驗(yàn)實(shí)施、檢查實(shí)驗(yàn)完成情況、完成實(shí)驗(yàn)報(bào)告.在實(shí)施過程中,將學(xué)生分成小組,每個(gè)小組設(shè)立組長(zhǎng),一個(gè)組完成一個(gè)實(shí)驗(yàn)任務(wù).小組組長(zhǎng)整體負(fù)責(zé),每個(gè)成員都要承擔(dān)具體任務(wù).
布置實(shí)驗(yàn)任務(wù)階段.當(dāng)相關(guān)知識(shí)點(diǎn)講解完成之后,及時(shí)布置這部分的實(shí)驗(yàn)任務(wù).學(xué)生接到實(shí)驗(yàn)任務(wù)后,要分析該實(shí)驗(yàn)要求,確定具體實(shí)驗(yàn)題目.
指導(dǎo)實(shí)驗(yàn)實(shí)施階段.實(shí)驗(yàn)實(shí)施階段要遵循軟件工程思想,即分為需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、測(cè)試分析等階段.教師要指導(dǎo)學(xué)生有計(jì)劃地完成實(shí)驗(yàn),解決學(xué)生實(shí)驗(yàn)過程中遇到的問題.
檢查實(shí)驗(yàn)完成情況階段.這個(gè)階段主要是驗(yàn)收學(xué)生的實(shí)驗(yàn)題目完成情況,一方面檢查實(shí)驗(yàn)完成的質(zhì)量情況,另一方面檢查是否存在抄襲情況.采用的檢查手段是“答辯”.答辯過程由陳述、演示、問答三個(gè)環(huán)節(jié)組成,同樣由小組成員分工完成.陳述環(huán)節(jié)主要是陳述實(shí)驗(yàn)所涉及問題的需求和設(shè)計(jì)情況;演示環(huán)節(jié)主要是演示程序運(yùn)行情況;問答環(huán)節(jié)是一個(gè)主要環(huán)節(jié),由教師或其它小組同學(xué)提問,答辯小組成員來回答.
實(shí)驗(yàn)報(bào)告階段.這個(gè)階段需要學(xué)生填寫本次實(shí)驗(yàn)的實(shí)驗(yàn)報(bào)告.實(shí)驗(yàn)報(bào)告由實(shí)驗(yàn)內(nèi)容及要求、需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、測(cè)試數(shù)據(jù)和總結(jié)六部分構(gòu)成.實(shí)驗(yàn)報(bào)告是對(duì)實(shí)驗(yàn)的總結(jié),有利于加強(qiáng)對(duì)知識(shí)的理解和提升.
在數(shù)據(jù)結(jié)構(gòu)課程實(shí)踐教學(xué)中采用這樣的方案,不但鞏固了知識(shí),提高了能力,同時(shí)也培養(yǎng)了學(xué)生的創(chuàng)新意識(shí)和團(tuán)隊(duì)精神.
[1]張銘.北京大學(xué)“數(shù)據(jù)結(jié)構(gòu)與算法”教學(xué)設(shè)計(jì)[J].計(jì)算機(jī)教育,2008(20):5-9.
[2]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)[M].北京:清華大學(xué)出版社,2007:1.
[3]江靜.《數(shù)據(jù)結(jié)構(gòu)》課程綜合性實(shí)驗(yàn)的實(shí)踐[J].實(shí)驗(yàn)科學(xué)與技術(shù),2006(6):64-66.
通化師范學(xué)院學(xué)報(bào)2014年4期