摘要:在建構(gòu)式教育理論的指導下,以就業(yè)需求為目標,針對數(shù)據(jù)結(jié)構(gòu)教學中教與學目標不明、學習信心和動力不足、編程基礎(chǔ)薄弱等問題,提出建構(gòu)式的數(shù)據(jù)結(jié)構(gòu)教學方法,在實際教學中取得較好的教學效果,這些措施也可作為其他計算機專業(yè)課程教學的參考。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);建構(gòu)式教育理論;理論教學;實踐教學
近年來,在產(chǎn)業(yè)界急需大量軟件開發(fā)人員的情況下,普通本科院校計算機專業(yè)學生的就業(yè)率持續(xù)走低。網(wǎng)絡(luò)、報紙等媒體對計算機本科教育現(xiàn)狀多有批評,甚至出現(xiàn)了大學不如培訓公司的極端觀點,嚴重影響了學生對專業(yè)課程的學習興趣、動力和信心。數(shù)據(jù)結(jié)構(gòu)是計算機專業(yè)的核心基礎(chǔ)課程,上承程序設(shè)計語言、離散數(shù)學,下啟操作系統(tǒng)、編譯原理等課程,其重要性不言而喻。一方面,數(shù)據(jù)結(jié)構(gòu)學科具有難度大、抽象層次高、概念繁雜等特點,學生很難掌握,更不要說將抽象理論與就業(yè)實踐需求相結(jié)合。另一方面,國內(nèi)主流數(shù)據(jù)結(jié)構(gòu)教材和相應(yīng)的傳統(tǒng)教學模式側(cè)重于培養(yǎng)學生的計算機學科基礎(chǔ)理論素養(yǎng),而將如何通過組織數(shù)據(jù)結(jié)構(gòu)教學活動積極推動就業(yè)的問題留給了任課教師[1]。這造成了學生學習數(shù)據(jù)結(jié)構(gòu)的目標不明、信心和動力不足。筆者面向就業(yè)需要明確了數(shù)據(jù)結(jié)構(gòu)的兩大主要教學目標,并在實際教學過程中實踐建構(gòu)式教育理論,嘗試解決學生對專業(yè)認識不清、學習興趣不足、編程基礎(chǔ)薄弱等問題。一些做法得到了學生的認可和配合,成功地激發(fā)了學生的學習主動性、在一定程度上培育了學生的創(chuàng)新精神。
1面向就業(yè)需求的數(shù)據(jù)結(jié)構(gòu)教學目標
教育要服務(wù)于社會生產(chǎn)需求。數(shù)據(jù)結(jié)構(gòu)教學也必須緊扣這一根本目標。本節(jié)從滿足就業(yè)需要的角度闡明了數(shù)據(jù)結(jié)構(gòu)教學的兩個主要目標:
1) 培養(yǎng)超越具體程序設(shè)計語言技巧的編程技術(shù)。
現(xiàn)階段是一個傳統(tǒng)的生產(chǎn)生活方式迅速向電子化、信息化轉(zhuǎn)變的時期。人們需要開發(fā)和維護更多、規(guī)模更大的計算機系統(tǒng)來滿足生產(chǎn)和生活的需要[2]。這就決定了具有熟練編程技術(shù)的程序員在很長時期內(nèi)都將受到產(chǎn)業(yè)界的青睞。大學對學生編程技術(shù)的培養(yǎng)始于程序設(shè)計語言的教學,如C語言,Java語言等。但是現(xiàn)今編程語言繁多,各種新概念層出不窮,常常出現(xiàn)學生無所適從或者質(zhì)疑某門語言課程已經(jīng)過時無用的現(xiàn)象。甚至很多教師也在爭論講授何種編程語言。筆者看來掌握編程技術(shù)(而不僅僅是語言),回歸編程的本質(zhì)問題更加重要,無謂地追趕時髦不可取。作為編程語言課程的后續(xù),數(shù)據(jù)結(jié)構(gòu)教學的重要目標就是幫助學生理解編程的本質(zhì)、鍛煉編程技術(shù)以及學習提高編程技術(shù)的方法。
2) 培養(yǎng)圍繞復用的軟件開發(fā)方式。
隨著軟件規(guī)模的日益增大,軟件開發(fā)模式逐漸從“從無到有”的模式過渡到“從有到有”的模式,即復用現(xiàn)有的豐富的軟件資產(chǎn),開發(fā)新的應(yīng)用系統(tǒng)。事實上,復用的思想已經(jīng)被廣泛的用于軟件開發(fā)實踐之中,從各種各樣的程序庫、軟件開發(fā)包、軟件構(gòu)件、Web服務(wù)等各種可復用資產(chǎn)已經(jīng)簡化了軟件開發(fā)的難度、提高了軟件開發(fā)的效率也極大地改變了軟件開發(fā)的模式。數(shù)據(jù)結(jié)構(gòu)學科本身就是對軟件復用思想的一種實踐,它通過總結(jié)大量軟件系統(tǒng)中反復出現(xiàn)的數(shù)據(jù)結(jié)構(gòu)(如表、樹、圖、集合等),定義和實現(xiàn)處理這些數(shù)據(jù)結(jié)構(gòu)的基本操作,最終達到能夠在不同項目開發(fā)中反復應(yīng)用的目的。這些基本數(shù)據(jù)結(jié)構(gòu)和算法已經(jīng)被實現(xiàn)為可復用的產(chǎn)品隨著程序設(shè)計語言發(fā)布,如C++ STL、C# collecti