張兆維 王建華 陶曦鳴
摘? 要: 在“數(shù)據(jù)結(jié)構(gòu)”課程中,課內(nèi)實(shí)驗(yàn)存在兩個(gè)問題:一是與課堂理論知識(shí)相脫節(jié),起不到“理論聯(lián)系實(shí)際”的作用;二是偏重于代碼編寫,無法體現(xiàn)課程的精髓。為此,文章探索一種“立足理論、弱化代碼、鼓勵(lì)創(chuàng)新”的方法,把課堂理論知識(shí)融匯到實(shí)驗(yàn)中,將學(xué)生從繁瑣的代碼編寫中解脫出來。對(duì)學(xué)生的調(diào)研結(jié)果表明,該方法在課內(nèi)實(shí)驗(yàn)教學(xué)上取得了效果。
關(guān)鍵詞: 數(shù)據(jù)結(jié)構(gòu); 課內(nèi)實(shí)驗(yàn); 教學(xué)探索; 代碼編寫; 創(chuàng)新
Abstract: In the "Data Structure" course, the in-class experiments exist two problems: one is that it is disconnected from theoretical knowledge, and cannot play the role of "combining theory with practice"; the other is that it emphasizes the code writing, but cannot reflects the essence of course. Therefore, this paper explores a method of "standing on theory, decreasing code, and encouraging innovation", which integrates the theoretical knowledge of the classroom into the experiments and frees the students from the tedious code writing. The results of the investigation on students show that the method is effective in the in class experiment teaching.
Key words: data structure; in-class experiment; teaching exploration; code writing; innovation
0 引言
課內(nèi)實(shí)驗(yàn)教學(xué)作為“數(shù)據(jù)結(jié)構(gòu)”課程[1]教學(xué)的重要組成部分,對(duì)學(xué)生掌握理論知識(shí),靈活運(yùn)用理論知識(shí)解決實(shí)際問題的能力具有舉足輕重的作用,因此課內(nèi)實(shí)驗(yàn)教學(xué)引起了廣泛關(guān)注。課內(nèi)實(shí)驗(yàn)并沒有得到足夠的重視,存在著學(xué)生敷衍了事、教師不知所措的情況,沒有顯示出其應(yīng)有的教學(xué)效果。
“數(shù)據(jù)結(jié)構(gòu)”課程的課內(nèi)實(shí)驗(yàn)教學(xué)方法的實(shí)施,眾多專家和學(xué)者對(duì)此進(jìn)行了廣泛的反思和討論[2-6]。沈華[2]分析了課內(nèi)實(shí)驗(yàn)教學(xué)的特點(diǎn),提出了找出關(guān)鍵知識(shí)點(diǎn)并利用有限的課內(nèi)實(shí)踐,對(duì)這些關(guān)鍵知識(shí)點(diǎn)進(jìn)行強(qiáng)化,具體對(duì)實(shí)驗(yàn)題目、實(shí)驗(yàn)內(nèi)容、考核方式等進(jìn)行了設(shè)計(jì)。華澤[3]等探討了探索創(chuàng)新型實(shí)驗(yàn)的設(shè)計(jì)原則和思路,充分結(jié)合科學(xué)研究、實(shí)驗(yàn)教學(xué)與科技開發(fā)三個(gè)方面,將教師的科研活動(dòng)融入實(shí)驗(yàn),以促進(jìn)學(xué)生的創(chuàng)新意識(shí)。呂亞榮[4]和龔紅仿[5]等都是在分析課程實(shí)驗(yàn)教學(xué)現(xiàn)狀的基礎(chǔ)上,對(duì)實(shí)驗(yàn)教學(xué)內(nèi)容、實(shí)驗(yàn)教學(xué)方法、實(shí)驗(yàn)考核方法三個(gè)方面進(jìn)行了改革,激發(fā)學(xué)生的學(xué)習(xí)興趣。針對(duì)MOOCs背景下的“數(shù)據(jù)結(jié)構(gòu)”實(shí)驗(yàn)教學(xué)改革,于慶梅[6]等 提出一種情境創(chuàng)設(shè)、微視頻與PTA開放平臺(tái)相結(jié)合的實(shí)踐教學(xué)模式,培養(yǎng)學(xué)生自主實(shí)驗(yàn)?zāi)芰?,是?shí)驗(yàn)教學(xué)的一種有益探索。
因此,如何設(shè)計(jì)課內(nèi)實(shí)驗(yàn)教學(xué),使之與課堂理論知識(shí)緊密地結(jié)合起來以體現(xiàn)“數(shù)據(jù)結(jié)構(gòu)”課程的精髓,就成為了教學(xué)中值得思考的問題。
1 面臨的問題
在“數(shù)據(jù)結(jié)構(gòu)”課程中,課內(nèi)實(shí)驗(yàn)教學(xué)是讓學(xué)生對(duì)課堂理論知識(shí)理解和應(yīng)用,對(duì)學(xué)生掌握理論知識(shí)具有十分重要的作用。但是,在實(shí)際教學(xué)過程中,課內(nèi)實(shí)驗(yàn)的教學(xué)效果卻遠(yuǎn)遠(yuǎn)不夠,學(xué)生也有敷衍了事的心態(tài),甚至存在完全抄襲現(xiàn)象。
當(dāng)前,“數(shù)據(jù)結(jié)構(gòu)”課程的課內(nèi)實(shí)驗(yàn)教學(xué)具體存在以下兩個(gè)問題:
⑴ 課內(nèi)實(shí)驗(yàn)與理論知識(shí)相偏離,成了相互獨(dú)立的兩個(gè)部分。一方面,“數(shù)據(jù)結(jié)構(gòu)”課程的很多考試都是以理論知識(shí)為主,一般不考慮其具體實(shí)現(xiàn)代碼。很多學(xué)生認(rèn)為課內(nèi)實(shí)驗(yàn)與理論知識(shí)無關(guān),也與期末考試無關(guān),甚至與未來考研無關(guān),所以他們的學(xué)習(xí)積極性不高,也不重視課內(nèi)實(shí)驗(yàn)。另一方面,有些學(xué)生的理論學(xué)習(xí)不扎實(shí),不具備“理論聯(lián)系實(shí)際”的能力,從而在課內(nèi)實(shí)驗(yàn)中無所適從,應(yīng)付了事。
⑵ 課內(nèi)實(shí)驗(yàn)的內(nèi)容設(shè)計(jì)不合理。課內(nèi)實(shí)驗(yàn)的精髓在于數(shù)據(jù)結(jié)構(gòu)和算法在實(shí)際問題中的靈活應(yīng)用,體現(xiàn)“數(shù)據(jù)結(jié)構(gòu)”課程的優(yōu)勢(shì)。但是,完成一個(gè)完整的課內(nèi)實(shí)驗(yàn),學(xué)生既要考慮數(shù)據(jù)結(jié)構(gòu)理論,又要考慮程序設(shè)計(jì)。有些時(shí)候程序設(shè)計(jì)反而會(huì)喧賓奪主,占據(jù)學(xué)生大部分的時(shí)間,最終使學(xué)生徹底淪為代碼編碼和語法糾錯(cuò)。甚至實(shí)驗(yàn)成功與否往往不在于是否掌握核心理論知識(shí),而是在具體的代碼編碼過程中出錯(cuò),學(xué)生需花費(fèi)大量的時(shí)間來修改代碼,從而使得課內(nèi)實(shí)驗(yàn)與程序設(shè)計(jì)類課程無異,失去了課內(nèi)實(shí)驗(yàn)的意義。
由于以上兩個(gè)問題,“數(shù)據(jù)結(jié)構(gòu)”課程的課內(nèi)實(shí)驗(yàn)教學(xué)效果不好。有的學(xué)校已經(jīng)在新的教學(xué)大綱中將課內(nèi)實(shí)驗(yàn)刪除。但是,正所謂“實(shí)踐出真知”,課內(nèi)實(shí)驗(yàn)對(duì)學(xué)生理解和掌握課堂理論知識(shí)具有不可替代的作用,值得討論以改進(jìn)其教學(xué)方法。
2 課內(nèi)實(shí)驗(yàn)教學(xué)探索
在考慮課內(nèi)實(shí)驗(yàn)教學(xué)面臨的問題基礎(chǔ)上,本文提出一種“立足理論、弱化代碼、鼓勵(lì)創(chuàng)新”的教學(xué)方法,一方面將課內(nèi)實(shí)驗(yàn)與理論知識(shí)結(jié)合起來,另一方面將學(xué)生從繁瑣的代碼編寫中解放出來,以鼓勵(lì)學(xué)生集中精力突破關(guān)鍵問題。
2.1 立足理論
“工欲善其事必先利其器”,課內(nèi)實(shí)驗(yàn)完成質(zhì)量的好壞與所用到的工具(數(shù)據(jù)結(jié)構(gòu)及其算法)有直接的關(guān)系。因此,掌握數(shù)據(jù)結(jié)構(gòu)與算法的基本理論知識(shí)是開展課內(nèi)實(shí)驗(yàn)教學(xué)的前提,對(duì)課內(nèi)實(shí)驗(yàn)完成的質(zhì)量具有決定性作用。
從上述代碼中可以看出,加粗顯示的無向圖和有向圖的鄰接矩陣特點(diǎn)是不相同,即,無向圖的鄰接矩陣是對(duì)稱矩陣而有向圖的鄰接矩陣不是對(duì)稱矩陣。在課內(nèi)實(shí)驗(yàn)中,學(xué)生如果沒有掌握無向圖的鄰接矩陣特點(diǎn),就會(huì)在虛線框內(nèi)的參數(shù)設(shè)置中出錯(cuò)。這也說明,課內(nèi)實(shí)驗(yàn)必須立足于理論,否則就是鏡中花,水中月。
2.2 弱化代碼
“射人先射馬,擒賊先擒王”,課內(nèi)實(shí)驗(yàn)要把握住重點(diǎn),不能舍本逐末。課內(nèi)實(shí)驗(yàn)的精髓就在于利用數(shù)據(jù)結(jié)構(gòu)的理論知識(shí)來解決實(shí)際問題,而不能讓學(xué)生淹沒在具體的代碼編碼中。弱化代碼,就是公開部分次要代碼而將核心代碼留給學(xué)生,將學(xué)生從程序語法中解脫出來,從而集中精力于數(shù)據(jù)結(jié)構(gòu)與算法。
上述代碼中,加粗顯示的代碼為核心代碼,需要學(xué)生獨(dú)立完成,其余代碼為次要代碼,可以事先給定。在課內(nèi)實(shí)驗(yàn)中,學(xué)生可以集中精力去研究數(shù)據(jù)結(jié)構(gòu)與算法來完成虛線內(nèi)代碼,而不用花費(fèi)大量的精力去修改次要代碼的語法。
2.3 鼓勵(lì)創(chuàng)新
“橫看成嶺側(cè)成峰,遠(yuǎn)近高低各不同”,每一個(gè)人對(duì)同一個(gè)問題的認(rèn)識(shí)不同,看法不同,故采取的解決方案也可能不同。針對(duì)同一問題,學(xué)生會(huì)考慮數(shù)據(jù)結(jié)構(gòu)中的各種方法來解決問題。在這一過程中,學(xué)生就有可能產(chǎn)生創(chuàng)新性的想法,從而加深對(duì)“數(shù)據(jù)結(jié)構(gòu)”課程的理解和掌握,做到活學(xué)活用。
以 “二叉樹基本性質(zhì)-樹的高度”實(shí)驗(yàn)為例,如下所示。
求:樹的高度
在“數(shù)據(jù)結(jié)構(gòu)”課程中,樹的高度都是以遞歸的形式來求解,而有些同學(xué)能夠想到利用棧來求解,這就屬于創(chuàng)新性想法。
解:根據(jù)樹的定義,一棵樹的高度等于表達(dá)式b中括號(hào)的最大重?cái)?shù)。括號(hào)的重?cái)?shù)又可以很容易地通過棧來得到:左括號(hào)進(jìn)棧、右括號(hào)出棧,記錄棧中括號(hào)的個(gè)數(shù)。因此,棧中括號(hào)的最大個(gè)數(shù)就是樹的高度。
數(shù)據(jù)結(jié)構(gòu)課內(nèi)實(shí)驗(yàn)鼓勵(lì)創(chuàng)新,就能夠啟發(fā)學(xué)生從不同角度來看待問題,并得到不同的見解,這對(duì)培養(yǎng)學(xué)生創(chuàng)造性思維具有重要的作用。
3 教學(xué)效果
為分析本文所提方法的實(shí)際教學(xué)效果,筆者對(duì)學(xué)生的知識(shí)掌握水平和學(xué)習(xí)狀況等進(jìn)行了面談和統(tǒng)計(jì),其中,被調(diào)查的對(duì)象為約300名普通二本獨(dú)立學(xué)院大二學(xué)生。
圖1統(tǒng)計(jì)了學(xué)生的實(shí)驗(yàn)成績(jī)(轉(zhuǎn)換為百分制),并依次分為了五檔,來評(píng)估學(xué)生課內(nèi)實(shí)驗(yàn)的完成情況。從圖中可以看出,與傳統(tǒng)教學(xué)方法相比,本文方法能夠降低低分段人數(shù)并提高高分段人數(shù)。比如,在傳統(tǒng)方法下,學(xué)生的成績(jī)大部分集中在60-80分之間(占比達(dá)76%),這也說明學(xué)生在課內(nèi)實(shí)驗(yàn)中的表現(xiàn)差不多,大部分采取“不求有功,但求無過”的態(tài)度。課內(nèi)實(shí)驗(yàn)采用本文教學(xué)方法后,學(xué)生的高分段成績(jī)有了大幅度的提升,80-90分之間的比例達(dá)到37%。這說明,本文方法能夠激發(fā)優(yōu)秀學(xué)生的學(xué)習(xí)潛力,促進(jìn)學(xué)生的學(xué)習(xí)興趣。
我們調(diào)查了學(xué)生在課內(nèi)實(shí)驗(yàn)的學(xué)習(xí)情況,包括學(xué)習(xí)興趣、創(chuàng)新性和平均成績(jī)?nèi)齻€(gè)方面,如圖2所示。相比于傳統(tǒng)教學(xué)方法,本文方法有明顯的進(jìn)步。比如,學(xué)生的學(xué)習(xí)興趣由48%上升到72%,學(xué)生的創(chuàng)新性從3%上升到18%,所有學(xué)生的平均成績(jī)由72分上升到84分。特別是學(xué)生有時(shí)間也有興趣從不同角度去思考問題,能夠產(chǎn)生一些創(chuàng)新性想法。
4 結(jié)束語
為了提高“數(shù)據(jù)結(jié)構(gòu)”課程的課內(nèi)實(shí)驗(yàn)效果,本文提出一種“立足理論、弱化代碼、鼓勵(lì)創(chuàng)新”的教學(xué)方法。該方法以理論知識(shí)為基礎(chǔ),將學(xué)生從繁瑣的代碼編寫中解放出來,鼓勵(lì)學(xué)生提出創(chuàng)新性想法,能夠顯著地提高學(xué)生的學(xué)習(xí)成效,提高了課內(nèi)實(shí)驗(yàn)的教學(xué)效果。對(duì)于如何量化核心代碼的范圍和程度、采取何種具體措施來激發(fā)學(xué)生創(chuàng)新思維,仍然值得我們進(jìn)一步思考。
參考文獻(xiàn)(References):
[1] 嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(第二版)[M].清華大學(xué)出版社,2008.
[2] 沈華.數(shù)據(jù)結(jié)構(gòu)課內(nèi)實(shí)踐教學(xué)方案[J].實(shí)驗(yàn)室研究與探索,2013.10:412-416
[3] 華澤,陸悠,班建民.數(shù)據(jù)結(jié)構(gòu)課程的實(shí)驗(yàn)設(shè)計(jì)研究[J].計(jì)算機(jī)時(shí)代,2009.10:70-71
[4] 呂亞榮,繆相林.數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)教學(xué)的改革與探索[J].教育教學(xué)論壇,2014.18:28-29
[5] 龔紅仿,楊宏杰,程思蔚.數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)課教學(xué)改革與實(shí)踐[J].計(jì)算機(jī)教育,2007.12:55-57
[6] 于慶梅,毛镠.MOOCs背景下地方院?!皵?shù)據(jù)結(jié)構(gòu)”實(shí)踐教學(xué)模式[J].實(shí)驗(yàn)技術(shù)與管理,2019.5:190-194