張芷伊,張秀梅
(遼寧科技大學(xué)軟件學(xué)院,鞍山 114051)
《數(shù)據(jù)結(jié)構(gòu)》課程綜合案例的設(shè)計(jì)
張芷伊,張秀梅
(遼寧科技大學(xué)軟件學(xué)院,鞍山 114051)
針對(duì)應(yīng)用型本科人才的培養(yǎng)目標(biāo),注重實(shí)踐能力的教學(xué)要求,以及數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)課程原有教學(xué)模式存在的不足,對(duì)實(shí)驗(yàn)內(nèi)容和方式進(jìn)行改革,采用基于案例式的有指導(dǎo)的討論模式進(jìn)行教學(xué)。通過(guò)實(shí)驗(yàn)教學(xué)的設(shè)計(jì)充分發(fā)揮學(xué)生的主觀能動(dòng)性,從而培養(yǎng)學(xué)生實(shí)際動(dòng)手能力和鉆研合作能力。
數(shù)據(jù)結(jié)構(gòu);案例式;教學(xué)模式;實(shí)驗(yàn)改革
《數(shù)據(jù)結(jié)構(gòu)》課程是計(jì)算機(jī)專(zhuān)業(yè)的一門(mén)核心課,該課程的原理和算法比較抽象,目前針對(duì)理論教學(xué)的改革方法很多,如基于CDIO教學(xué)理念的改革[1],案例教學(xué)法[2],分層教學(xué)法[3],基于競(jìng)賽的教學(xué)模式[4]以及構(gòu)建主義教育[5-7]等。為了提高學(xué)生學(xué)習(xí)興趣,培養(yǎng)學(xué)生算法設(shè)計(jì)能力、算法分析能力和程序調(diào)試能力,對(duì)實(shí)驗(yàn)內(nèi)容進(jìn)行調(diào)整,并采用基于案例的討論式教學(xué)。通過(guò)以案例為分析研究對(duì)象,對(duì)案例分析和討論,以及對(duì)相關(guān)方案的選取和評(píng)價(jià),激發(fā)學(xué)生提出解決方案,進(jìn)一步應(yīng)用到其他方面。
從目前的教學(xué)和學(xué)生的學(xué)習(xí)效果來(lái)看,現(xiàn)行的實(shí)驗(yàn)教學(xué)體系存在著一些問(wèn)題主要表現(xiàn)在以下方面。
1.1 學(xué)習(xí)態(tài)度參差不齊,學(xué)習(xí)方式差別很大
學(xué)生對(duì)待專(zhuān)業(yè)學(xué)習(xí)的動(dòng)力差別很大,大多數(shù)學(xué)生還沒(méi)有適應(yīng)大學(xué)的學(xué)習(xí)生活,還在延續(xù)初高中的應(yīng)試教育,很少進(jìn)行自主學(xué)習(xí),更不知道如何進(jìn)行研究性學(xué)習(xí)。而且大學(xué)生的智力已經(jīng)有了很高的層次性,學(xué)生的差異性是最大的優(yōu)勢(shì),卻是教師面臨的最大挑戰(zhàn)[8-9]。
另外,程序設(shè)計(jì)課程學(xué)得不透徹,缺乏實(shí)際動(dòng)手能力,在實(shí)踐課上做其他不相關(guān)的內(nèi)容,沒(méi)有真正重視實(shí)驗(yàn)課的學(xué)習(xí),漸漸對(duì)專(zhuān)業(yè)學(xué)習(xí)喪失學(xué)習(xí)興趣。
1.2 實(shí)踐內(nèi)容枯燥
目前大多數(shù)實(shí)驗(yàn)題目是驗(yàn)證性的,教師采用 “靜態(tài)”的教學(xué)方法,從實(shí)驗(yàn)?zāi)繕?biāo)、內(nèi)容、步驟、注意事項(xiàng),甚至程序的調(diào)試以及可能的實(shí)驗(yàn)結(jié)果都由教師講解,然后由學(xué)生去操作。而對(duì)于相對(duì)較難的題目,一些能力差的學(xué)生直接從網(wǎng)上下載,不思考不提問(wèn)。實(shí)驗(yàn)內(nèi)容上缺乏對(duì)解決實(shí)際問(wèn)題的練習(xí),學(xué)生在實(shí)驗(yàn)之后仍然不知道學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)在解決實(shí)際問(wèn)題的時(shí)候能對(duì)編程有什么指導(dǎo)意義,這使學(xué)生進(jìn)行思考研究的少了,按部就班去做,導(dǎo)致實(shí)驗(yàn)失去了原始的意義,不利于鍛煉學(xué)生的分析解決問(wèn)題的能力,也不利于教學(xué)質(zhì)量的提高。
1.3 實(shí)踐考核不夠科學(xué)
在現(xiàn)行的的實(shí)驗(yàn)教學(xué)中,實(shí)驗(yàn)考評(píng)主要是以學(xué)生的出勤率、實(shí)驗(yàn)態(tài)度和實(shí)驗(yàn)報(bào)告作為評(píng)價(jià)依據(jù),但這種考核方式有時(shí)無(wú)法考核出學(xué)生的真實(shí)成績(jī),仍然有實(shí)驗(yàn)態(tài)度不認(rèn)真、抄襲實(shí)驗(yàn)報(bào)告的現(xiàn)象,從而導(dǎo)致評(píng)價(jià)結(jié)果與實(shí)際情況有很大偏差。
針對(duì)上述問(wèn)題,要想使實(shí)踐教學(xué)達(dá)到預(yù)期目標(biāo),真正提高學(xué)生的實(shí)踐能力,提高學(xué)生的學(xué)習(xí)興趣,讓其盡快自主學(xué)習(xí)是至關(guān)重要的。為了適應(yīng)學(xué)院卓越工程師培養(yǎng)模式的教學(xué),首先對(duì)原有實(shí)踐教學(xué)內(nèi)容進(jìn)行改革,并運(yùn)用案例式教學(xué)方法。
每次實(shí)驗(yàn)之前,都精心選擇或設(shè)計(jì)一個(gè)引導(dǎo)性案例問(wèn)題,通過(guò)問(wèn)題的引入,使學(xué)生在概念和提高理解之間架起一座橋梁。通過(guò)分析問(wèn)題,收集數(shù)據(jù),總結(jié)和歸納系列過(guò)程,激發(fā)學(xué)生科學(xué)地思考、增強(qiáng)解決問(wèn)題的技巧和獲得新知識(shí)的能力。具體實(shí)施過(guò)程如圖1所示。下面以線(xiàn)性表部分的一元多項(xiàng)式實(shí)驗(yàn)為例進(jìn)行設(shè)計(jì)。
2.1 案例的設(shè)計(jì)
圖1 案例式實(shí)驗(yàn)教學(xué)過(guò)程
作為數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)課程的第一個(gè)案例式實(shí)驗(yàn),采用有指導(dǎo)的方式進(jìn)行。實(shí)驗(yàn)內(nèi)容是為學(xué)習(xí)目標(biāo)而選擇的,對(duì)于大學(xué)低年級(jí)的學(xué)生,由于知識(shí)積累不足,沒(méi)有掌握相應(yīng)的學(xué)習(xí)方法等原因,所以要選擇難度適中的案例,并與其先驗(yàn)知識(shí)融合到一起。試想,一個(gè)不費(fèi)吹灰之力就能解決的問(wèn)題會(huì)讓學(xué)生不屑一顧,而具有一定難度的問(wèn)題將引發(fā)學(xué)生解決問(wèn)題的興趣和躍躍欲試的沖動(dòng)。因此選用合適的案例是很具有挑戰(zhàn)的。
假設(shè)現(xiàn)有質(zhì)量分別為1克、2克和3克的砝碼各一枚,問(wèn)只用這些砝碼各一次你能稱(chēng)出哪幾種質(zhì)量的物體來(lái)?而對(duì)各種質(zhì)量確定的物體又有多少種不同的稱(chēng)量方案?[10]
2.2 案例的分析
“動(dòng)態(tài)”的實(shí)驗(yàn)教學(xué)應(yīng)當(dāng)被視為是一幅全景圖,同時(shí)也是細(xì)節(jié)的的集合體。使學(xué)生積極參與到學(xué)習(xí)問(wèn)題解決的活動(dòng)中,實(shí)現(xiàn)了角色的變更,學(xué)生成為解決問(wèn)題的主體,激發(fā)了自主學(xué)習(xí)的能動(dòng)性。
首先,分析匯總各種可能得到的稱(chēng)重情況如表1所示。
表1 稱(chēng)重問(wèn)題的解
接著,教師引導(dǎo)進(jìn)一步分析細(xì)節(jié):
(1)如果有1枚重為K1的砝碼,稱(chēng)重的質(zhì)量種數(shù)為n=2,兩種物體的實(shí)際質(zhì)量為m={m1=0,m2=K1},每種質(zhì)量的稱(chēng)重方案數(shù)為P={P1=1,P2=1},發(fā)現(xiàn)m和P之間的關(guān)系?
(2)假設(shè)有兩枚砝碼,其質(zhì)量分別為K1和K2,假設(shè)K1≠K2,綜合(1)得到可以稱(chēng)重的質(zhì)量情況為:
(a)0+0=0;
(b)K1+0=K1
(c)0+K2=K2
(d)K1+K2
(3)學(xué)生們聯(lián)系本次實(shí)驗(yàn)的內(nèi)容,并猜想各種解決方案
最后,分析總結(jié)。
根據(jù)(1)可用一個(gè)二項(xiàng)式表示1+xK1
根據(jù)(2)可得到對(duì)應(yīng)的多項(xiàng)式
(1+xK1)(1+xK2)=1+xK1+xK2+xK1+K2
下面得到如果是n個(gè)這樣的砝碼得到通式
(1+xK1)(1+xK2)…(1+xKn)
2.3 問(wèn)題的解決實(shí)現(xiàn)
案例分析后,考慮如何存儲(chǔ)到計(jì)算機(jī)中實(shí)現(xiàn)實(shí)際問(wèn)題的求解,利用所學(xué)的線(xiàn)性表結(jié)構(gòu),用順序表還是鏈表,需要存儲(chǔ)哪些數(shù)據(jù)。算法如何編寫(xiě),利用書(shū)上已知的一元多項(xiàng)式算法如何改寫(xiě)等。
首先,選定運(yùn)用鏈表結(jié)構(gòu),創(chuàng)建結(jié)點(diǎn)PolyNode,根據(jù)多項(xiàng)式的特點(diǎn),結(jié)點(diǎn)中的數(shù)據(jù)包括兩部分信息:系數(shù)(coef)和指數(shù)(expn)。接著,將若干個(gè)多項(xiàng)式按照指數(shù)的順序從小到大的插入到鏈表中。最后實(shí)現(xiàn)一元多項(xiàng)式的乘積操作,在此過(guò)程中注意合并同類(lèi)項(xiàng),核心代碼如下所示:
qa=this.getHead();
qb=this.getHead().getNext();
while(qb!=null&&p.getExpn()>((PolyNode)qb.getData()).getExpn()){//查找插入位置
qa=qb;
qb=qb.getNext();
}
if(qb!=null&&p.getExpn()==((PolyNode)qb.getData()). getExpn()){//將指數(shù)相同相合并
((PolyNode)qb.getData()).setCoef(((PolyNode)qb.get-Data()).getCoef()+p.getCoef());
if(((PolyNode)qb.getData()).getCoef()==0){//數(shù)為0的話(huà)釋放結(jié)點(diǎn)
qa.setNext(qb.getNext());qb=qa.getNext();}
一元多項(xiàng)式乘積操作的核心代碼為:Node qa=la.getHead().getNext();Node qb=lb.getHead().getNext();
PolyList ha=new PolyList();ha.getHead().setNext(null);while(qa!=null){
qb=lb.getHead().getNext();while(qb!=null){
PolyNode a=(PolyNode)qa.getData();PolyNode b=(PolyNode)qb.getData();PolyNode pf=new PolyNode(a.getCoef()*b.getCoef(),a.getExpn()+b.getExpn());try{ha.insertsame(pf);}catch(Exception e){e.printStackTrace();}
qb=qb.getNext();}
qa=qa.getNext();
}
進(jìn)一步提出解決問(wèn)題:某船隊(duì)有載重量為1,2,4,8 和16百?lài)嵉拇饕凰?,為了保證使用效益,用船時(shí)必須滿(mǎn)載,問(wèn)該船隊(duì)有多少種載貨服務(wù)功能。
通過(guò)本次實(shí)驗(yàn)希望能夠?qū)?shí)際問(wèn)題拿來(lái)分析,查閱相關(guān)書(shū)籍或上網(wǎng)找到一定的解決方案,最后用計(jì)算機(jī)去解決,在問(wèn)題的解決過(guò)程中繼續(xù)研究,真正提升學(xué)生的研究能力。
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)內(nèi)容采用案例驅(qū)動(dòng),案例的選取與學(xué)生的先驗(yàn)知識(shí)融會(huì)到一起,又與數(shù)據(jù)結(jié)構(gòu)的相關(guān)內(nèi)容有機(jī)的結(jié)合起來(lái),意在提高學(xué)生的學(xué)習(xí)興趣,學(xué)生分析與設(shè)計(jì)能力,培養(yǎng)學(xué)生團(tuán)隊(duì)協(xié)作精神。通過(guò)對(duì)精心選擇和設(shè)計(jì)的案例的分析和討論,得出原有情境下的解決方案,然后提出改進(jìn)的思路和進(jìn)一步的應(yīng)用,案例中解決問(wèn)題的思路為學(xué)生提供了借鑒好啟發(fā),不僅利于學(xué)生獲得新的知識(shí),而且也利于學(xué)生以此為基礎(chǔ)提高自身的分析問(wèn)題和解決問(wèn)題的能力。
[1]陳瑾.基于CDIO理念的數(shù)據(jù)結(jié)構(gòu)課程改革與研究.福建電腦[J],2012(9):156-157.
[2]段群,田俊華.案例教學(xué)法在《數(shù)據(jù)結(jié)構(gòu)》教學(xué)中的應(yīng)用.陜西教育[J],2012(9):58.
[3]張秀梅.《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)改革探討.現(xiàn)代計(jì)算機(jī),2013(10):47-49.
[4]李月軍,李娟,李英玉.融入ACM/ICPC競(jìng)賽內(nèi)容的數(shù)據(jù)結(jié)構(gòu)教學(xué)改革與實(shí)踐探討.內(nèi)蒙古師范大學(xué)學(xué)報(bào)(教育科學(xué))[J],2012. (25):137-140.
[5]李曉鴻,駱嘉偉,季杰.《數(shù)據(jù)結(jié)構(gòu)與算法分析》研究型實(shí)踐教學(xué)的探索.實(shí)驗(yàn)室研究與探索,2012(31):121-126.
[6]張戎秋.建構(gòu)主義理論在數(shù)據(jù)結(jié)構(gòu)教學(xué)中應(yīng)用的研究和探討[J].淮南師范學(xué)院學(xué)報(bào),2010(12):92-94.
[7]龔紅,李友云.Seminar教學(xué)法在數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)教學(xué)中的應(yīng)用.信息系統(tǒng)工程[J],2012(10):139-141.
[8]林健著.卓越工程師培養(yǎng)(工程教育系統(tǒng)性改革研究)[M].清華大學(xué)出版社,2013(1):196-199.
[9]邁克爾·普洛瑟(澳)著.如何提高學(xué)生學(xué)習(xí)質(zhì)量[M].北京大學(xué)出版社,2013(1):139-142.
[10]楊啟帆,李浙寧,王聚豐等.數(shù)學(xué)建模案例集[M].高等教育出版社,2006(1):1-10.
[11]王曉明.基于學(xué)生自主和協(xié)作學(xué)習(xí)的數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)教學(xué)模式探索與實(shí)踐[J].高教學(xué)刊,2015(22):229-230.作者簡(jiǎn)介:張芷伊(1994-),女,遼寧鞍山人,大學(xué)三年級(jí)張秀梅(1978-),女,遼寧鞍山人,講師,研究方向?yàn)橹形男畔⑻幚?/p>
Case Teaching Content Design of Data Structure
ZHANG Zhi-yi,ZHANG Xiu-mei
(School of Software,University of Science and Technology Liaoning,Anshan 114051)
In view of the training target of personnel with applied knowledge,the teaching requirements of the practice ability,and the deficiency of original experiment course on data structure,the experimental contents and methods are reformed.The discussion model based on case is applied.Through the design of experiment teaching the students give full play to their initiative,and train the practical ability,study and cooperative ability.
Data Structure;Case Teaching;Teaching Mode;Experiment Reform
遼寧科技大學(xué)大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練項(xiàng)目(No.DC2015119)
1007-1423(2016)21-0065-04
10.3969/j.issn.1007-1423.2016.21.015
2016-05-17
2016-07-15