廖彬 蔡賢資
摘? 要 從數(shù)據(jù)結(jié)構(gòu)在程序設(shè)計(jì)課程群中的作用與教學(xué)現(xiàn)狀出發(fā),針對(duì)現(xiàn)階段的本科建設(shè)任務(wù)與學(xué)生特點(diǎn),對(duì)數(shù)據(jù)結(jié)構(gòu)的理論教學(xué)內(nèi)容、實(shí)驗(yàn)教學(xué)內(nèi)容進(jìn)行合理編排,探索分步教學(xué)與項(xiàng)目教學(xué)相結(jié)合的課程教學(xué)改革與實(shí)踐方案。通過(guò)教學(xué)改革促使學(xué)生學(xué)以致用,從而提高學(xué)生的程序設(shè)計(jì)和計(jì)算思維能力,達(dá)到培養(yǎng)創(chuàng)新人才的目的。
關(guān)鍵詞 數(shù)據(jù)結(jié)構(gòu);理論教學(xué);程序設(shè)計(jì)課程群;分步教學(xué);項(xiàng)目教學(xué);實(shí)驗(yàn)教學(xué);教學(xué)改革
中圖分類(lèi)號(hào):G642? ? 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1671-489X(2020)05-0073-03
1 引言
隨著社會(huì)的不斷發(fā)展,信息技術(shù)滲透進(jìn)社會(huì)的各行各業(yè),社會(huì)對(duì)信息處理類(lèi)專(zhuān)業(yè)人才的需求日益增加。我國(guó)社會(huì)現(xiàn)階段對(duì)信息處理類(lèi)專(zhuān)業(yè)人才的需求以應(yīng)用型人才為主,應(yīng)用型人才的核心能力體現(xiàn)為工程實(shí)踐能力[1]。編程能力、計(jì)算思維、算法能力、創(chuàng)新能力是培養(yǎng)信息處理類(lèi)學(xué)生基本程序設(shè)計(jì)能力的基礎(chǔ)和核心[2]。
在現(xiàn)階段的信息處理類(lèi)專(zhuān)業(yè)本科教學(xué)中,程序設(shè)計(jì)課程群主要包括高級(jí)程序設(shè)計(jì)、離散數(shù)學(xué)、數(shù)據(jù)結(jié)構(gòu)、算法五門(mén)課程,突出對(duì)編程能力、計(jì)算思維和基本算法實(shí)現(xiàn)能力的培養(yǎng)。其中,數(shù)據(jù)結(jié)構(gòu)研究計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式,授課內(nèi)容主要包括邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)、算法設(shè)計(jì)與分析基礎(chǔ)等相關(guān)理論,通過(guò)培養(yǎng)學(xué)生的模型抽象能力,為學(xué)生研究和創(chuàng)新能力的形成奠定基礎(chǔ),在程序設(shè)計(jì)課程群體系中具有承上啟下的作用。雖然數(shù)據(jù)結(jié)構(gòu)在程序設(shè)計(jì)課程群教學(xué)體系中占有舉足輕重的地位,但是由于其抽象性、復(fù)雜性與靈活性的特點(diǎn),易使學(xué)生在學(xué)習(xí)過(guò)程中受挫,無(wú)法學(xué)以致用,進(jìn)而影響學(xué)習(xí)興趣,極大地影響了數(shù)據(jù)結(jié)構(gòu)知識(shí)的學(xué)習(xí)。
在華南農(nóng)業(yè)大學(xué)信息與計(jì)算科學(xué)專(zhuān)業(yè)中,根據(jù)數(shù)據(jù)結(jié)構(gòu)在程序設(shè)計(jì)課程群中的作用與教學(xué)現(xiàn)狀,進(jìn)行理論教學(xué)與實(shí)驗(yàn)教學(xué)編排,主要從教學(xué)內(nèi)容和實(shí)驗(yàn)設(shè)置方面,探索適用于當(dāng)前相關(guān)專(zhuān)業(yè)學(xué)生的數(shù)據(jù)結(jié)構(gòu)課程教學(xué)改革與實(shí)踐。
2 數(shù)據(jù)結(jié)構(gòu)課程教學(xué)中存在的問(wèn)題
現(xiàn)階段,數(shù)據(jù)結(jié)構(gòu)教學(xué)一般由理論教學(xué)與實(shí)驗(yàn)教學(xué)組合而成,通過(guò)實(shí)驗(yàn)教學(xué)對(duì)理論課所授知識(shí)進(jìn)行加強(qiáng),進(jìn)而培養(yǎng)學(xué)生分析問(wèn)題、解決問(wèn)題的能力。然而,在數(shù)據(jù)結(jié)構(gòu)教學(xué)中,理論課與實(shí)驗(yàn)課的內(nèi)容與編排需要有機(jī)結(jié)合,才能達(dá)到互相促進(jìn)的目的。
前期課程的準(zhǔn)備? 數(shù)據(jù)結(jié)構(gòu)的前期課程主要由高級(jí)程序設(shè)計(jì)、離散數(shù)學(xué)組成。在現(xiàn)階段的數(shù)學(xué)與信息學(xué)院信息與計(jì)算科學(xué)專(zhuān)業(yè)中,前期課程講授的程序設(shè)計(jì)與算法語(yǔ)言采用C語(yǔ)言實(shí)現(xiàn),由此對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)教材也使用C語(yǔ)言描述。然而在主流教材中為了便于簡(jiǎn)潔明了地解釋概念,在諸如鏈表、樹(shù)、圖等算法解釋中使用了類(lèi)C語(yǔ)言如混合C++的語(yǔ)法進(jìn)行描述,這在一定程度上增加了學(xué)生理解概念的難度。
前期的程序設(shè)計(jì)與算法語(yǔ)言教學(xué)中,指針、結(jié)構(gòu)體處于教學(xué)進(jìn)程的后半段,所占比重較低,大多數(shù)學(xué)生未能熟練掌握。然而在數(shù)據(jù)結(jié)構(gòu)教學(xué)中,大量使用指針與結(jié)構(gòu)體,如線性表的鏈?zhǔn)奖硎九c實(shí)現(xiàn)、棧、隊(duì)列、樹(shù)和圖都借助引用傳遞進(jìn)行實(shí)現(xiàn),結(jié)點(diǎn)一般采用結(jié)構(gòu)體類(lèi)型表示。相應(yīng)的算法實(shí)現(xiàn),需要熟練理解與掌握指針和結(jié)構(gòu)體的概念及其應(yīng)用才能完成。能力與知識(shí)的脫節(jié)造成部分學(xué)生難以理解數(shù)據(jù)結(jié)構(gòu)知識(shí),進(jìn)而影響后續(xù)內(nèi)容的學(xué)習(xí)。
數(shù)據(jù)結(jié)構(gòu)教學(xué)內(nèi)容與學(xué)生的學(xué)習(xí)興趣? 數(shù)據(jù)結(jié)構(gòu)作為專(zhuān)業(yè)核心課程,通常在大學(xué)本科二、三年級(jí)開(kāi)設(shè),具有較穩(wěn)定、統(tǒng)一的教學(xué)大綱。但這在一定程度上也易形成教學(xué)內(nèi)容較少更新,與實(shí)際應(yīng)用聯(lián)系不緊密的情況。隨著社會(huì)的發(fā)展,科技資訊與信息的獲取更為便捷,近年來(lái)本科學(xué)生的創(chuàng)新思維更趨活躍。學(xué)生在學(xué)習(xí)程序設(shè)計(jì)課程群中相關(guān)知識(shí)時(shí),對(duì)所學(xué)知識(shí)與工程應(yīng)用聯(lián)系的關(guān)注日益增強(qiáng)。若在教學(xué)中僅采用課本所示的傳統(tǒng)案例,難以引發(fā)學(xué)生的學(xué)習(xí)興趣,也不利于實(shí)現(xiàn)培養(yǎng)創(chuàng)新人才的目標(biāo)。在2015年發(fā)布的《國(guó)務(wù)院關(guān)于印發(fā)統(tǒng)籌推進(jìn)世界一流大學(xué)和一流學(xué)科建設(shè)總體方案的通知》中,指出應(yīng)該著力培養(yǎng)富有創(chuàng)新精神和實(shí)踐能力的各類(lèi)創(chuàng)新型、應(yīng)用型、復(fù)合型優(yōu)秀人才。由此,應(yīng)在傳統(tǒng)教學(xué)內(nèi)容中適度引入部分工程應(yīng)用實(shí)例,在提高學(xué)生學(xué)習(xí)興趣的同時(shí),促進(jìn)創(chuàng)新人才培養(yǎng)目標(biāo)的實(shí)現(xiàn)。
后續(xù)課程的銜接? 在程序設(shè)計(jì)課程群中,算法分析與設(shè)計(jì)為數(shù)據(jù)結(jié)構(gòu)的后繼課程。算法分析與設(shè)計(jì)課程一般主要講授遞歸法、分治法、動(dòng)態(tài)規(guī)劃算法、貪心算法、回溯法、分支限界法。通過(guò)算法分析與設(shè)計(jì)課程的學(xué)習(xí),使學(xué)生深化理解數(shù)據(jù)結(jié)構(gòu)與算法的結(jié)合,讓學(xué)生理解并掌握算法分析和設(shè)計(jì)的基本技術(shù)。通過(guò)數(shù)據(jù)結(jié)構(gòu)和算法的理論與實(shí)踐相結(jié)合,培養(yǎng)學(xué)生解決實(shí)際問(wèn)題的能力。
在以往的教學(xué)中,數(shù)據(jù)結(jié)構(gòu)注重講授抽象的數(shù)據(jù)關(guān)系,其中教學(xué)后期雖然涉及一些算法,但較抽象且給予學(xué)時(shí)較少,講述不夠透徹,學(xué)生很難真正理解。算法分析與設(shè)計(jì)課程主要注重培養(yǎng)學(xué)生分析算法復(fù)雜度與設(shè)計(jì)算法的能力[3],然而由于前期數(shù)據(jù)結(jié)構(gòu)中的實(shí)踐掌握不牢,使得算法實(shí)踐無(wú)從下手,影響了算法課程知識(shí)的掌握。數(shù)據(jù)結(jié)構(gòu)和算法分析與設(shè)計(jì)這兩門(mén)課程都以培養(yǎng)學(xué)生解決實(shí)際問(wèn)題的程序設(shè)計(jì)能力為共同目標(biāo)。在傳統(tǒng)教學(xué)編排[4]中,此兩門(mén)課程由于相對(duì)獨(dú)立、分開(kāi)授課,常導(dǎo)致內(nèi)容脫節(jié)或重復(fù),難以達(dá)到較好的教學(xué)效果。因此,需要考慮在數(shù)據(jù)結(jié)構(gòu)教學(xué)中適當(dāng)引入算法相關(guān)內(nèi)容,逐步構(gòu)建數(shù)據(jù)結(jié)構(gòu)與算法的知識(shí)體系,實(shí)現(xiàn)程序設(shè)計(jì)課程群中知識(shí)的統(tǒng)一與銜接。
3 理論教學(xué)與實(shí)驗(yàn)教學(xué)的改革方法與目標(biāo)
在數(shù)學(xué)與信息學(xué)院信息與計(jì)算科學(xué)專(zhuān)業(yè)中,“程序設(shè)計(jì)與算法語(yǔ)言C語(yǔ)言程序設(shè)計(jì)”在本科第二學(xué)期開(kāi)設(shè),數(shù)據(jù)結(jié)構(gòu)在第三學(xué)期開(kāi)設(shè),第六學(xué)期開(kāi)設(shè)算法分析與設(shè)計(jì)。在數(shù)據(jù)結(jié)構(gòu)開(kāi)課初期,需要針對(duì)性地強(qiáng)化程序設(shè)計(jì)能力,為數(shù)據(jù)結(jié)構(gòu)知識(shí)的掌握打下良好基礎(chǔ)。并通過(guò)數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)與實(shí)踐,使學(xué)生在編程中理解理論,促進(jìn)良好的算法設(shè)計(jì)和實(shí)現(xiàn)能力的形成。在教學(xué)中通過(guò)重新設(shè)計(jì)與編排數(shù)據(jù)結(jié)構(gòu)教學(xué)內(nèi)容,力圖通過(guò)引入計(jì)算機(jī)求解問(wèn)題之間的關(guān)系,降低學(xué)生學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)課程的困難,從而使學(xué)生更好地理解數(shù)據(jù)、算法和程序之間的聯(lián)系。為此,將數(shù)據(jù)結(jié)構(gòu)的理論教學(xué)與實(shí)驗(yàn)教學(xué)內(nèi)容進(jìn)行合理編排,各章節(jié)關(guān)系與實(shí)驗(yàn)教學(xué)具體內(nèi)容如圖1所示。
理論課教學(xué)內(nèi)容設(shè)計(jì)? 如圖1所示,數(shù)據(jù)結(jié)構(gòu)課程的主要特點(diǎn)為知識(shí)點(diǎn)多,理論性強(qiáng),內(nèi)容比較抽象枯燥。在理論教學(xué)中,通過(guò)基本概念、結(jié)構(gòu)、示例算法的講授,使學(xué)生熟悉并掌握不同數(shù)據(jù)結(jié)構(gòu)的特性,從而在分析解決具體問(wèn)題時(shí)能為所要處理的數(shù)據(jù)選擇合適的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)。如圖1所示,在理論課教學(xué)中使各章節(jié)內(nèi)容相對(duì)獨(dú)立,除第一章從總體上對(duì)數(shù)據(jù)結(jié)構(gòu)所研究問(wèn)題進(jìn)行介紹外,后續(xù)各章節(jié)分別以線性表、棧、隊(duì)列、樹(shù)和二叉樹(shù)、圖為專(zhuān)題進(jìn)行講授,使學(xué)生在理解某一具體章節(jié)所述概念、算法時(shí),不受數(shù)據(jù)結(jié)構(gòu)其他章節(jié)的影響,由此降低學(xué)生學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)理論知識(shí)的難度。
作為數(shù)據(jù)結(jié)構(gòu)知識(shí)引入的第一章,綜述數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)和抽象數(shù)據(jù)類(lèi)型等基本概念。其中,抽象數(shù)據(jù)類(lèi)型的表示與實(shí)現(xiàn)貫穿于后續(xù)各章的類(lèi)型定義中,該知識(shí)點(diǎn)的掌握與否極大影響學(xué)生對(duì)后續(xù)概念的理解。為此,在第一章傳統(tǒng)內(nèi)容的基礎(chǔ)上,對(duì)抽象數(shù)據(jù)類(lèi)型進(jìn)行部分具體化,增加指針、結(jié)構(gòu)體的定義及其實(shí)現(xiàn)的回顧,給出C、C++中實(shí)現(xiàn)結(jié)構(gòu)體、引用傳遞的語(yǔ)法對(duì)比與說(shuō)明。這部分內(nèi)容的引入,對(duì)前期程序設(shè)計(jì)知識(shí)進(jìn)行了簡(jiǎn)單回顧,為數(shù)據(jù)結(jié)構(gòu)后續(xù)章節(jié)中相應(yīng)概念的表示與算法的實(shí)現(xiàn)打下牢固基礎(chǔ)。
針對(duì)線性表、棧、隊(duì)列、樹(shù)和二叉樹(shù)、圖的內(nèi)容,在介紹定義及其表示與實(shí)現(xiàn)后,以常見(jiàn)的簡(jiǎn)單應(yīng)用為主,力求以學(xué)生熟悉的案例分析引出新知識(shí),以提高學(xué)生的學(xué)習(xí)興趣,從而達(dá)到教學(xué)目的與獲得較好的教學(xué)效果。
實(shí)驗(yàn)課教學(xué)內(nèi)容設(shè)計(jì)? 在程序設(shè)計(jì)課程群中,數(shù)據(jù)結(jié)構(gòu)的實(shí)驗(yàn)教學(xué)對(duì)于學(xué)生的理論知識(shí)內(nèi)化、提升學(xué)生的探究能力與創(chuàng)新能力具有重要意義。數(shù)據(jù)結(jié)構(gòu)的實(shí)驗(yàn)教學(xué)與前期的程序設(shè)計(jì)與算法語(yǔ)言實(shí)驗(yàn)教學(xué)從形式到難度上都有較大差別。數(shù)據(jù)結(jié)構(gòu)的實(shí)驗(yàn)教學(xué)是對(duì)理論教學(xué)所述定義、算法的實(shí)現(xiàn),完成的質(zhì)量受到前期課程尤其是程序設(shè)計(jì)與算法語(yǔ)言掌握程度的影響。為了把學(xué)生實(shí)驗(yàn)的重點(diǎn)聚焦于數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn),而非程序設(shè)計(jì)基本知識(shí)的補(bǔ)充上,使用貼近學(xué)生日常生活或日常接觸較多的例子,通過(guò)分步教學(xué)[4]與基于項(xiàng)目的教學(xué)[5],使不同的實(shí)驗(yàn)內(nèi)容能夠適應(yīng)學(xué)生學(xué)習(xí)的不同階段,從而促使學(xué)生能夠?qū)?shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)中涉及的知識(shí)和能力進(jìn)行融會(huì)貫通、學(xué)以致用。
以棧的應(yīng)用實(shí)驗(yàn)為例,第一個(gè)實(shí)驗(yàn)為整數(shù)間的進(jìn)制轉(zhuǎn)換。數(shù)制轉(zhuǎn)換的基本方法在計(jì)算機(jī)基礎(chǔ)內(nèi)容中已經(jīng)講授,且通常為大部分學(xué)生掌握較好的知識(shí)點(diǎn)。以此類(lèi)整數(shù)的進(jìn)制轉(zhuǎn)換為棧的初步實(shí)驗(yàn),能使學(xué)生在實(shí)驗(yàn)中不必對(duì)題目做過(guò)多分析,從而能將關(guān)注的焦點(diǎn)放在數(shù)據(jù)結(jié)構(gòu)與算法的實(shí)現(xiàn)上,快速完成并掌握諸如構(gòu)造空棧、入棧、出棧、清空棧等棧的基本操作。其后,進(jìn)行棧的進(jìn)階實(shí)驗(yàn):迷宮求解。迷宮作為常見(jiàn)的游戲,其常規(guī)解法為回溯法。路徑上的分岔所在方塊在每個(gè)方向未被搜索完時(shí)會(huì)被壓入棧中;反之,若每個(gè)可行方向已搜索完畢,則該分岔所在方塊出棧。
迷宮問(wèn)題的回溯過(guò)程較易為學(xué)生所理解,在棧的實(shí)驗(yàn)一已完成的基礎(chǔ)上,學(xué)生利用已有的知識(shí)和背景可完成實(shí)驗(yàn)二。經(jīng)過(guò)實(shí)驗(yàn)一的鋪墊,在實(shí)驗(yàn)二中深化數(shù)據(jù)結(jié)構(gòu)的知識(shí),同時(shí)引入算法的部分內(nèi)容,使程序設(shè)計(jì)課程群中的程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計(jì)相關(guān)知識(shí)得以融合,借助日常熟悉的項(xiàng)目案例使理論和實(shí)踐相結(jié)合,最終達(dá)到培養(yǎng)學(xué)生解決實(shí)際問(wèn)題能力的目的。
4 結(jié)語(yǔ)
本文針對(duì)傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)教學(xué)中存在的問(wèn)題,從數(shù)據(jù)結(jié)構(gòu)隸屬于程序設(shè)計(jì)課程群的角度出發(fā),結(jié)合現(xiàn)階段的本科建設(shè)任務(wù)與學(xué)生特點(diǎn),對(duì)數(shù)據(jù)結(jié)構(gòu)理論教學(xué)內(nèi)容和實(shí)驗(yàn)設(shè)置進(jìn)行合理編排,進(jìn)行適合于現(xiàn)階段高校教學(xué)的數(shù)據(jù)結(jié)構(gòu)課程教學(xué)改革與實(shí)踐,探索以分步教學(xué)與項(xiàng)目教學(xué)相結(jié)合的課程教學(xué)改革與實(shí)踐方案。通過(guò)教學(xué)改革促使學(xué)生學(xué)以致用,從而有效地提高教學(xué)質(zhì)量,進(jìn)一步培養(yǎng)學(xué)生的創(chuàng)新能力,以達(dá)到培養(yǎng)創(chuàng)新人才的目的。
參考文獻(xiàn)
[1]張先偉,曲志堅(jiān),張立紅,等.程序設(shè)計(jì)能力培養(yǎng)體系建設(shè)與實(shí)踐[J].計(jì)算機(jī)教育,2019(9):75-79.
[2]蔣宗禮.計(jì)算機(jī)類(lèi)專(zhuān)業(yè)人才專(zhuān)業(yè)能力構(gòu)成與培養(yǎng)[J].中國(guó)大學(xué)教學(xué),2011(10):11-14.
[3]孫笑微.“算法與數(shù)據(jù)結(jié)構(gòu)”課程的知識(shí)體系和教學(xué)改革實(shí)踐[J].沈陽(yáng)師范大學(xué)學(xué)報(bào):自然科學(xué)版,2010(3):446-448.
[4]陳青青.數(shù)據(jù)結(jié)構(gòu)課程中分步式案例設(shè)計(jì)的探索與實(shí)踐[J].計(jì)算機(jī)教育,2019(10):109-112.
[5]邱勁,王平.以項(xiàng)目為導(dǎo)向的數(shù)據(jù)結(jié)構(gòu)課程改革與實(shí)踐探索[J].西南師范大學(xué)學(xué)報(bào):自然科學(xué)版,2019(9):167-172.
項(xiàng)目來(lái)源:2019廣東省質(zhì)量工程特色專(zhuān)業(yè)建設(shè)項(xiàng)目“信息與計(jì)算科學(xué)”。
作者:廖彬,華南農(nóng)業(yè)大學(xué)數(shù)學(xué)與信息學(xué)院,研究方向?yàn)闄C(jī)器視覺(jué)、教育技術(shù)與教育信息化;蔡賢資,華南農(nóng)業(yè)大學(xué)數(shù)學(xué)與信息
學(xué)院,研究方向?yàn)樗惴?、?jì)算機(jī)網(wǎng)絡(luò)、教育技術(shù)與教育信息化(510642)。