鮑愛華,陳衛(wèi)衛(wèi),王 真,唐艷琴,李志剛
(陸軍工程大學 指揮信息系統(tǒng)學院,江蘇 南京 210007)
數(shù)據(jù)結(jié)構(gòu)是一門兼具理論性與實踐性的計算機基礎(chǔ)課程,其實踐教學的科學性和有效性,在某種程度上決定著教學效果的優(yōu)劣,也是課程教學改革經(jīng)常涉及的內(nèi)容之一。
數(shù)據(jù)結(jié)構(gòu)實踐教學通常采用“小+大”的實驗設(shè)置模式:采用“小”的驗證性題目覆蓋理論教學的主要知識點;采用“大”的綜合(設(shè)計)性課程項目,讓學生綜合運用所學知識解決問題,提升學生的實踐能力和知識運用能力。
在教學實踐中我們觀察到,“小”實驗點多面窄,是知識孤島;“大”項目覆蓋面較廣,但每個項目自成一體,沒有貫通課程教學內(nèi)容的始終,沒有可比性,通常在課程后半段才能有效展開。在教學過程中,如何讓學生自覺地將知識點連接起來,形成整體性思維并進行批判性運用,是教學改革中需要重點關(guān)注和研究的課題。
瑞士認知心理學家皮亞杰指出,教育的目標是造就具備批判性思維的頭腦、敢于驗證問題的頭腦,而不是人云亦云的頭腦;是培養(yǎng)有創(chuàng)造力、有發(fā)現(xiàn)和發(fā)明能力的人,而不是只懂得單純地重復(fù)上幾代人工作的人?!耙活}多解”的數(shù)據(jù)結(jié)構(gòu)實踐教學模式,就是要突破以往機械重復(fù)的實驗?zāi)J剑寣W生在學習理論知識的過程中,持續(xù)運用不同的知識解決相同的問題,使學生不斷對已經(jīng)掌握的知識進行批判接受,進而改造創(chuàng)新,讓學生的探究能力能夠在堅實的基礎(chǔ)之上得到持續(xù)發(fā)展。
“一題多解”實踐教學是一種持續(xù)創(chuàng)造性的教學過程,其教學設(shè)計在遵循一般教學規(guī)律的基礎(chǔ)上,還需要考慮其特殊性,因此,筆者在教學改革中,特別考慮了以下基本原則。
選題的合理性是“一題多解”實踐教學能否成功實施的關(guān)鍵因素。選題應(yīng)當考慮選取具有一定應(yīng)用背景,并能夠采用不同章節(jié)理論知識進行求解的綜合性項目;選題應(yīng)當具有可擴展性,既要能夠讓學生從小處入手迅速進入狀態(tài),也要能夠讓學生在題目范圍內(nèi)深挖探究、持續(xù)進行改進。
維果茨基在“最近發(fā)展區(qū)理論”(ZPD)中指出,教學應(yīng)著眼于學生的“最近發(fā)展區(qū)”,為學生提供帶有難度的內(nèi)容,調(diào)動學生的積極性,發(fā)揮其潛能,超越其最近發(fā)展區(qū)而達到下一發(fā)展階段的水平,然后在此基礎(chǔ)上進行下一個發(fā)展區(qū)的發(fā)展[1-2]。在進行“一題多解”實踐教學設(shè)計時,教師應(yīng)當為學生制定層次化的實踐目標,如算法效率目標、問題規(guī)模目標,并設(shè)定難度等級,必要時可以放棄算法效率目標而只要求問題規(guī)模目標,使學生快速進入“最近發(fā)展區(qū)”,獲得成就感,進而逐步發(fā)展。
實踐教學過程中,教師有時會存在“掩蓋或忽視思維過程”的情況,即唯結(jié)果論。在“一題多解”實踐教學中,盡管實驗結(jié)果比較重要,但更重要的是讓學生展示其思維過程,即如何從“最近發(fā)展區(qū)”演化到下一個“最近發(fā)展區(qū)”的過程。在教學過程中,應(yīng)當全面暴露這個思維過程,進而進行知識內(nèi)化、深化探索和總結(jié)升華。
“一題多解”實踐教學應(yīng)當以學生為中心,采取全員參與、合作學習的實踐方法,激發(fā)學生自主學習熱情,提高學生持續(xù)求知欲望,增強學生探究創(chuàng)新意識。在教學過程中,教師可以采用啟發(fā)、鼓勵、引導(dǎo)、評價以及總結(jié)的流程,幫助學生發(fā)掘題目的新意,不提供“權(quán)威”“正確”答案,營造民主、幽默、開放、互助、溫暖的創(chuàng)新教學氛圍,鼓勵學生拋開固有模式,自主創(chuàng)新,敢于質(zhì)疑問難,不斷探索求解問題的新方法、新思路。
現(xiàn)代教學理論認為,教育工作要以學生為中心,在學生自主創(chuàng)新學習的基礎(chǔ)上,通過學生的觀察、實踐、思考、合作和遷移,培養(yǎng)學生良好的思維習慣。在“一題多解”實踐教學過程中,也應(yīng)當秉承這一思路,貫徹以學生為中心的核心理念,采用合理的教學模式開展實施。在教學改革過程中,我們采用的“一題多解”實踐教學模式的主要環(huán)節(jié)如圖1所示。
圖1 “一題多解”實踐教學的主要環(huán)節(jié)
總體而言,“一題多解”實踐教學環(huán)節(jié)可以分為3個部分,即項目設(shè)置環(huán)節(jié)、項目迭代環(huán)節(jié)和總結(jié)匯報環(huán)節(jié)。
項目設(shè)置是“一題多解”實踐教學的先導(dǎo)環(huán)節(jié),主要任務(wù)是針對課程內(nèi)容,為學生選擇合適的實踐項目。選擇實踐項目時,應(yīng)當著重考慮以下4個要素。
1)針對哪些課程內(nèi)容實施“一題多解”實踐教學。
如數(shù)據(jù)結(jié)構(gòu)課程可以選定表結(jié)構(gòu)、樹結(jié)構(gòu)、散列表、排序等知識點作為“一題多解”實踐教學內(nèi)容,并且使設(shè)計的實踐項目能夠?qū)⑦@些知識點串連起來。
2)針對實踐項目制定哪些梯度化階段目標。
選定實踐項目后,教師需要按照“結(jié)構(gòu)層次梯度化原則”,結(jié)合理論授課進程和學生實際情況,預(yù)先劃分不同的實驗階段,并為不同階段設(shè)置梯度化實驗?zāi)繕?,如學生從哪種結(jié)構(gòu)開始起步;在初始幾個階段內(nèi)應(yīng)當達到何種算法執(zhí)行效率;如何定制不同階段應(yīng)當求解問題的復(fù)雜性(如測試樣本數(shù)據(jù)量)等。確定目標后,教師就能夠在教學過程中引導(dǎo)學生探索采用不同方法求解相同的實踐項目。
3)如何評價學生階段性實驗結(jié)果。
在項目設(shè)置環(huán)節(jié),教師應(yīng)當考慮階段性工作完成后如何進行評價??傮w而言,可以從兩個方面進行考慮:一方面,橫向比較不同小組的解決方案,從性能、復(fù)雜性等方面進行評價;另一方面,縱向比較學生在不同階段提出的解決方案,衡量學生對相應(yīng)方案的改進情況。
4)如何引導(dǎo)學生突破思維定勢,尋找開放創(chuàng)新的解決方案。
“一題多解”實踐教學本質(zhì)上是引導(dǎo)學生自行發(fā)掘新的解決方案,在學生實踐過程中,應(yīng)當避免讓學生落入教師的思維定勢中,否則會影響學生的創(chuàng)新。在項目設(shè)置時,應(yīng)當考慮項目突破數(shù)據(jù)結(jié)構(gòu)課本范圍后的發(fā)展情況,項目本身應(yīng)當具有開放性和可擴展性,如數(shù)據(jù)結(jié)構(gòu)課程的算法通常不會涉及分布式或并行范疇,但在實際項目中,如果需要進一步提高算法實踐效率和問題求解規(guī)模,則可以引導(dǎo)學生往分布式或并行計算方向發(fā)展,以取得更好的教學效果。
項目迭代環(huán)節(jié)是“一題多解”實踐教學的主要環(huán)節(jié),貫穿理論教學的始終。在該環(huán)節(jié)中,學生采用分組合作的方式,劃分為多個不同的實驗小組,按照教師給定的實施階段和梯度目標,自行選擇合理的解決方案完成實驗。與以往綜合實踐項目不同,“一題多解”實踐教學中,學生在每個迭代階段都必須提出完整的項目解決方案,并給出實驗結(jié)果。
1)啟發(fā)探究。
美國教育家布魯納說過,“使學生對一門學科有興趣的最好辦法是使其知道這門學科是值得學習的”[3]。啟發(fā)探究的目的在于讓學生逐步理解所學知識對實踐項目的積極意義。在階段性實驗開始之前,教師應(yīng)當根據(jù)理論教學進度和前期實踐情況,引導(dǎo)學生思考當前所學內(nèi)容對實踐項目的作用,分析前一階段實驗結(jié)果存在的缺點,進一步提高算法時空效率要求和問題復(fù)雜性規(guī)模,啟發(fā)學生思考解決此問題可能的突破口,讓學生帶著問題學習理論知識,思考解決方案。
2)合作求解、匯報演示。
“一題多解”實踐環(huán)節(jié)由學生分組組織實施,特點是既能培養(yǎng)學生的團隊合作精神,又能在不同小組之間形成激烈的競爭關(guān)系,增強學生的學習緊迫感,進而激發(fā)學生的創(chuàng)新意識。匯報演示階段應(yīng)當要求學生在給出實驗結(jié)果的同時,按照“過程暴露原則”,具體講解實現(xiàn)思路和思維轉(zhuǎn)換過程,使其他小組的學生不但知其然,也知其所以然,進而達到共同提高的效果。
3)點評分析。
學生分組匯報演示結(jié)束后,教師針對各組的點評分析是必不可少的環(huán)節(jié),能夠起到畫龍點睛的效果。教師在點評時,應(yīng)當著眼于小組求解問題的思維轉(zhuǎn)換過程,分析其合理性以及相比于前續(xù)階段的進步性,同時明確提出可能存在的問題,引導(dǎo)學生持續(xù)思考,為下一個迭代做好準備。
總結(jié)匯報環(huán)節(jié)位于“一題多解”實踐環(huán)節(jié)的結(jié)束階段,主要有3項任務(wù)。
1)縱向分析。
進行小組總結(jié)匯報時,各小組應(yīng)當分析自身在所有迭代階段提出的不同解決方案,對不同階段取得的算法效率和求解的問題規(guī)模進行比較,重點說明自身對實踐項目認知的轉(zhuǎn)變,闡明思維演化過程。
2)橫向比較。
橫向比較的主要目的在于分析不同實驗小組對實踐項目采取的最終解決方案,比較各自的算法效率和問題求解規(guī)模,分析不同方案的優(yōu)劣。在比較過程中,教師應(yīng)當啟發(fā)學生從實踐結(jié)果優(yōu)劣的比較中建構(gòu)牢固的知識體系,培養(yǎng)學生的計算思維。
3)總結(jié)拓展。
在“一題多解”項目實踐結(jié)束階段,教師應(yīng)當就整個項目迭代過程進行總結(jié)講評,逐一分析各小組學生解決方案和思維轉(zhuǎn)換中的創(chuàng)新點,起到從“發(fā)散”到“聚焦”的作用,通過歸納總結(jié)幫助學生拓展思維。此外,按照“探究創(chuàng)新原則”,創(chuàng)設(shè)更深的應(yīng)用場景,引導(dǎo)學生在課程結(jié)束后繼續(xù)思考,深化鞏固課程學習成果。
教學改革中,我們結(jié)合工程實踐經(jīng)驗,精心設(shè)計了規(guī)模大小適中的多個“一題多解”實踐項目(項目案例設(shè)計以教材《數(shù)據(jù)結(jié)構(gòu)與算法》[4]為基礎(chǔ)),依托這些項目踐行上述理念。以“垃圾郵件地址過濾系統(tǒng)”項目為例,重點說明項目涉及的知識點、“一題多解”分層階段目標和項目拓展情況,項目描述見表1。
表1所示項目,是以垃圾郵件地址過濾問題為背景,核心是從“垃圾郵件發(fā)件人地址庫”中查找“待判斷郵件地址樣本”的問題,本質(zhì)是一個查找問題。在數(shù)據(jù)結(jié)構(gòu)課程教學中,查找問題是非常重要的基礎(chǔ)問題,對查找需求的高效實現(xiàn),產(chǎn)生了對數(shù)據(jù)結(jié)構(gòu)設(shè)計的選擇問題,采用“一題多解”方法實施教學,能夠伴隨理論教學的推進不斷深化解讀“不同需求導(dǎo)致了選擇不同的數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)并非一定是自然關(guān)系的描述”內(nèi)涵。具體而言,本項目可能涉及的知識點包括順序表、鏈表、檢索樹、AVL樹、B樹、Trie樹、散列表、排序等。
在教學實踐中,結(jié)合理論教學進程,將該項目劃分為3個迭代周期,見表2。
通過“一題多解”項目的實踐訓練,學生能夠?qū)⒈斫Y(jié)構(gòu)、樹結(jié)構(gòu)、散列表、排序算法等知識點前后貫穿,形成有機的知識體系。對于教師而言,還應(yīng)當為“一題多解”實踐項目設(shè)置更為開放的應(yīng)用場景,讓學生有進一步拓展的空間。在教學實踐中,我們主要從兩個方面進行拓展。
通過實踐學生能夠發(fā)現(xiàn),隨著問題規(guī)模的持續(xù)加大,單線程已經(jīng)難以繼續(xù)進行優(yōu)化提高,那么能否使用多線程進行計算;利用CPU的多核是否能夠加快速度;在多線程的模式下,線程之間的數(shù)據(jù)如何共享;是否會存在沖突等。通過這些引導(dǎo),能夠讓學生進一步思考利用并行計算解決問題。
如果垃圾郵件地址庫的大小進一步增加會發(fā)生什么情況,如增加到1PB;如果單臺計算機已經(jīng)無法存儲,那么文件該如何存儲;算法需要發(fā)生什么改變等。通過這些引導(dǎo),可以讓學生向分布式存儲以及分布式計算方面拓展,進而引出云計算的相關(guān)內(nèi)容,為學生后續(xù)學習做好鋪墊。
表1 垃圾郵件地址過濾系統(tǒng)
表2 “一題多解”實踐項目迭代周期
建構(gòu)主義者認為,學習是學習者主動的建構(gòu)活動,而不是對知識的被動接受,教師僅僅是“助產(chǎn)士”的身份,學生才是教學過程的主體,教師只能為學生的發(fā)展搭建“腳手架”。在數(shù)據(jù)結(jié)構(gòu)實踐教學改革中,我們嘗試使用“一題多解”的多階段實踐教學模式,通過層層推進實踐目標,讓學生自主學習創(chuàng)新,為學生搭建“腳手架”。實踐表明,“一題多解”式數(shù)據(jù)結(jié)構(gòu)實踐教學模式能夠激發(fā)學生的學習興趣,把學生從零散的知識點學習和實驗驗證中解脫出來,一邊學習一邊應(yīng)用,在自然動態(tài)的過程中歸納小結(jié),形成有機的知識體系,達到再創(chuàng)造、再發(fā)現(xiàn)的教學效果。
需要注意的是,教師應(yīng)當把握好“一題多解”的“度”,即難度要適中,要將綜合實驗項目設(shè)置在學生“最近發(fā)展區(qū)”(ZPD)附近,便于學生進入學習狀態(tài),以免打擊積極性;梯度要合理,要為學生設(shè)置合理的層次化迭代階段和目標,便于學生在學習過程中穩(wěn)步攀升;參與度要高,要堅持以學生為中心的教學理念,讓學生自主創(chuàng)新,避免影響或主導(dǎo)學生的思維。此外,“一題多解”綜合實驗項目的設(shè)置也應(yīng)當具有可拓展的深度和廣度,為學生的后續(xù)課程學習和發(fā)展打下良好的基礎(chǔ)。
[1]麻彥坤, 葉浩生. 維果茨基最近發(fā)展區(qū)思想的當代發(fā)展[J]. 心理發(fā)展與教育, 2004(2): 89-93.
[2]張興. 維果茨基關(guān)于教學與發(fā)展關(guān)系的研究[J]. 外國教育研究, 1998(6): 11-13.
[3]布魯納. 教學論探討[M]. 張渭城, 譯. 北京: 人民教育出版社, 1989: 10.
[4]陳衛(wèi)衛(wèi), 王慶瑞. 數(shù)據(jù)結(jié)構(gòu)與算法[M]. 2版. 北京: 高等教育出版社, 2015: 1-3.