尋楊 柳欣
[摘 要]當前,數據結構課程受教學內容所限,教師無法使學生掌握知識的全貌。其教學若不能從后續課程中提煉數據結構并結合現實問題進行分析,則不利于培養學生根據問題需求選擇適當數據結構的能力,也容易使學生產生數據結構課程無用論。文章提出在課程群視域下對多門相關課程進行整體教學設計的思想,并且以B+樹為例設計了可應用于三門專業核心課程的共享案例。這種新的教學形式有利于打破課程間的知識壁壘,分階段引導學生進行知識建構,促進學生創新意識和問題解決能力的培養。
[關鍵詞]數據結構;B+樹;案例教學;圖解教學;建構主義教學
[中圖分類號] G642 [文獻標識碼] A [文章編號] 2095-3437(2021)08-0019-03
引言
《國家中長期教育改革和發展規劃綱要(2010—2020年)》指出,要牢固確立人才培養在高校工作中的中心地位,著力培養信念執著、品德優良、知識豐富、本領過硬的高素質專門人才和拔尖創新人才[1]。數據結構既是計算機科學與技術專業(簡稱計算機專業)的專業基礎課程之一,也是培養計算機專業學生創新意識和問題解決能力的核心課程。該課程的教學內容是圍繞數據元素的邏輯關系、關系描述以及相互操作而展開的[2]。由于教學內容的理論性強,算法底層的邏輯結構較為抽象,復雜算法的執行過程難以理解等,因此采用傳統教學方式往往難以取得理想效果[3]。另外,為了培養學生的創新意識,也有必要探索新的教學方法,幫助學生形成算法思維模式,增強學生根據實際問題需要選擇高效數據結構并進行性能分析的能力[4]。
數據結構課程側重于在邏輯層面分析和討論問題,所講授的存儲結構僅限于利用高級程序設計語言對邏輯結構進行編碼實現。該課程對問題的討論并不完整。其教學內容僅限于宏觀層面,而無法涉及針對特定數據結構(如二叉樹)在硬盤中的存儲問題以及如何從磁盤讀入主存等微觀層面上的問題。另外,盡管課程講授了線性、樹型和圖狀結構的抽象數據類型定義以及相關算法,但是學生仍然抱有許多疑問,諸如所講授的數據結構知識在今后的專業課學習中能否用到,這些數據結構在現實的軟件系統開發過程中是否得到使用,等等。計算機組成原理是硬件類的專業基礎課程,著重講授計算機的硬件工作原理以及數據在物理層面上的存儲和運算原理。因此,這門課對問題的討論比較微觀,這就有助于學生深入理解各類數據結構在計算機中的物理存儲方式。數據庫原理與應用是軟件類的專業基礎課程。盡管許多數據結構(如多鏈表排序、B+樹索引等)在商業數據庫系統的開發過程中得到應用,但是如果教師無法在教學中對這些數據結構進行提煉,學生往往會產生數據結構技術在數據庫領域并未得到應用的錯覺。為了了解上述問題,應當組織講授上述課程的教師進行專門研討,精心遴選與現實應用緊密結合且能滲透于三門課程教學內容中的綜合性案例,通過開發共享的教學案例,實現專業基礎知識的全面貫通。
一、專業核心課程群視域下的總體教學設計思路
課程群是由多門教學內容密切相關的課程構成的集合。這些課程適合在更大的框架下進行整體建設,以達到優化教學資源配置和提高教學質量的效果[5]??梢曰谡n程群的思路對密切相關的專業核心課程進行整體教學設計,開發可以共享的教學案例。開發共享教學案例的意義主要有以下幾方面:(1)訓練學生從現實應用中提煉數據內容和數據結構,形成“站在計算機角度”進行思維的意識,提高邏輯思維和創新能力。(2)打破相關課程之間的知識壁壘,促進學生對知識的全面掌握。(3)圍繞復雜問題和復雜算法設計綜合案例,在不同課程中講授案例的某一部分,有利于降低難度,實現認識水平的螺旋式上升。(4)為地方院校開展以“專業核心課程深度融合和整體建設”為抓手的系列教學改革積累經驗,為后期開展工程教育專業認證奠定基礎。
二、支撐性的教學理論及其內涵
我們的教學改革是在案例教學、圖解教學和建構主義教學理論指導下開展的。(1)案例教學法起源于哈佛大學,其基本思想是將相關的案例引入課堂教學,通過設置案例展示和案例討論環節,幫助學生理解抽象知識,并且展示它們在實踐中的具體運用[6]。開展案例教學的目的在于創設情境以及引導學生深入思考,從而達成“知識+應用”的教學目標。(2)開展數據結構教學的難點在于如何展現抽象的邏輯結構、邏輯結構與存儲結構的對應關系、復雜算法的求解過程以及如何將問題求解思路轉換為代碼描述。對此,一種行之有效的辦法是使用結構圖[7]。通過圖解,可以直觀地展示問題求解過程中數據邏輯結構的演進變化及其與代碼描述之間的關系。鼓勵學生進行算法的圖解,有助于促進學生的思維訓練,加深學生對存儲結構的理解,提高學生解決問題的能力。(3)建構主義教學理論強調以學生的內在經驗和知識為基礎,通過創設教學情境引發知識沖突,以促進學生實現自我知識建構[8]。斯皮羅等人提出隨機進入式教學的觀點[9]。其基本思想是為了幫助學生全面掌握事物的內在性質以及事物間的聯系,利用不同的途徑與方式,在不同的時間進入同一教學內容的學習。但是,所謂的“多次進入”并不意味著相同內容的簡單重復,而是每次進入著眼于問題的不同側面,進而使學生通過多次學習認識事物的全貌,實現認識上的飛躍。
三、共享案例教學設計——以B+樹索引為例
(一)案例選取
隨著數據規模的日益擴大,數據查詢效率成為影響數據庫性能的關鍵因素之一。索引機制是提高數據查詢效率的有效辦法,B+樹是一種在數據庫索引領域得到廣泛應用的樹型結構。利用該結構的索引文件,有利于減少磁盤讀取次數和提高內存的利用率[10]。鑒于B+樹索引具有較大的現實意義且該項內容適合在數據結構、計算機組成原理和數據庫原理與應用這三門課程中進行講授,因此我們選取該項內容進行共享案例設計。該案例的設計目標是通過分階段實施案例教學,將這三門課程涉及的十個左右的知識點貫穿起來(如表1所示),激發學生學習興趣,促進學生深入思考,實現讓學生從微觀與宏觀的角度全面掌握相關知識的目標。
(二)共享案例詳細的教學設計
根據這三門課程的先修后修關系,我們將整個案例的實施過程分為以下三個階段。
第一個階段是在數據結構教學過程中完成的。在講授完二叉排序樹、B-樹和B+樹之后,教師給出一個有關B+樹應用的綜合案例,通過對相關邏輯結構進行性質比較,幫助學生加深對知識的理解。案例問題描述如下:給定一組關鍵字,要求學生構造三種面向動態查找法的樹型結構,即二叉排序樹、B-樹和B+樹(如圖1所示),用結構圖畫出三種樹型結構的構造過程,并且對它們的查找效率進行比較。在構造過程中,教師提示學生注意二叉排序樹構造過程中的平衡調整問題,以及在B-/B+樹構造過程中的結點分裂問題等。在效率比較過程中,教師提示學生將平均查找長度作為三種結構效率比較的重要依據。在案例總結階段,教師引導學生得出以下結論:(1)對于給定關鍵字key,查找過程的效率取決于“從根結點到結點key的路徑上”的結點個數(即比較次數)。(2)對于B-/B+樹,可以將查找過程中的比較次數表示為logd[(N+1)/2]+1(N表示關鍵字總數,d表示內部結點的度數)。(3)與二叉排序樹和B-樹相比,B+樹支持的查找方式更為靈活,即除了可以從根結點出發,“從上至下”進行查找,還可以在最底層沿水平方向進行查找。上述案例的教學目標是使學生在宏觀層面上深入理解三種結構的特點,掌握基于平均查找長度的查找效率分析方法。
第二個階段是在計算機組成原理課程教學過程中完成的。介紹完硬盤存取原理和主存工作原理之后,教師再次向學生提出上述案例,并且將討論重點轉向以下內容。首先,介紹上述三種結構的現實應用是作為數據庫索引文件的組織形式。然后,介紹三種索引文件在硬盤中的存儲方法以及將位于硬盤上的結點讀入內存的過程。在此階段,教師需要引導學生深入思考以下問題:(1)每讀入一個結點(即執行1次I/O操作)需要多少時間。(2)如何從微觀角度理解B+樹索引的檢索過程(如圖2所示),以及如何對檢索過程的時間效率進行分析。在案例總結階段,教師引導學生得出以下結論:在關鍵字檢索過程中,每訪問一個內部結點/葉結點,就需要執行1次I/O操作。因此,索引文件的檢索效率取決于檢索過程中的I/O操作次數。通過上述案例教學過程,學生會在微觀層面上對這三種樹型結構產生新的認識。
第三個階段是在數據庫原理與應用課程教學過程中完成的。在介紹完索引原理之后,教師第三次提出上述案例,并對案例的描述做出以下調整:假設員工信息表包含“工號”和“姓名”兩個字段。為了提高查找效率,要求基于二叉排序樹、B-樹和B+樹技術分別構造索引文件,并且利用結構圖畫出員工信息表與三種索引文件的存儲結構。在圖解過程中,教師指導學生設計結構圖,著重體現索引與數據庫記錄的對照關系(如圖3所示),并介紹選取B+樹作為商業數據庫(如MySQL)索引的原因。
在此階段,教師需要引導學生深入思考以下問題:(1)如何統計三種索引結構在查找過程中的比較次數?(2)假設關鍵字總數為N,且d表示B-/B+樹中每個內部結點的度數,為何B+樹索引優于另外兩種索引(如表2所示)?在案例總結階段,教師引導學生得出以下結論:在B-/B+樹中,查找過程的關鍵字比較次數約為[logdN]。
四、結束語
本文 在專業核心課程群視域下,研究了對數據結構課程與后續的計算機組成原理課程和數據庫原理與應用課程進行整體教學設計的問題。選取B+樹作為聯系這三門課程的教學內容,并且基于建構主義教學理論,圍繞B+樹的相關知識進行“分階段多次進入”的共享案例教學設計。同時,利用結構圖技術對二叉排序樹、B-樹和B+樹的復雜邏輯結構進行直觀展示。本文提出的案例有利于幫助學生從宏觀和微觀層面全面掌握B+樹相關知識,培養邏輯思維和問題解決能力。
[ 參 考 文 獻 ]
[1] 教育部.國家中長期教育改革和發展規劃綱要(2010—2020年)[EB/OL]. (2010-07-29)[2020-04-02].http://old.moe.gov.cn/publicfiles/business/htmlfiles/moe/info_list/201407/xxgk_171904.html
[2] 張銘,耿國華,陳衛衛,等. 數據結構與算法課程教學實施方案[J].中國大學教學,2011(3):56-60.
[3] 柳欣,張斌,張波.復雜算法的案例教學設計[J].計算機時代,2020(2):109-111+116.
[4] 羅麗燕,鄧小芳,林樂平.“雙一流”建設背景下數據結構課程教學初探[J].大學教育,2020(3): 80-82.
[5] 張映輝, 陶霞. 地方本科院校數學與應用數學專業課程群建設的理論與實踐[J]. 湖南理工學院學報(自然科學版), 2016(1): 92-94.
[6] 錢明輝,李天明,舒詩雅,等.教學案例開發框架模型的構建及其應用[J].管理案例研究與評論,2018(2):210-220.
[7] 農國才. 淺談圖示在數據結構教學中的應用[J]. 廣西民族師范學院學報,2013(3):70-72.
[8] 李雪珊. 基于建構主義理論的教學策略初探:以《高等數學》課程教學為例[J]. 西南師范大學學報(自然科學版),2014(2):152-155.
[9] 李曉波,劉磊. 建構主義理論及其在《數據結構》教學中的應用探索[J]. 濰坊學院學報,2008(6):155-156.
[10] 施恩,顧大權,馮徑,等. B+樹索引機制的研究及優化[J].計算機應用研究, 2017(6):1766-1769.
[責任編輯:龐丹丹]