章麗玲
(湖北第二師范學院 計算機學院,武漢 430205)
數(shù)據(jù)結構課程是計算機相關專業(yè)的專業(yè)核心課程,其主要的教學目標為:讓學生理解如何有效的組織、存儲和處理數(shù)據(jù),正確地設計算法以及對算法復雜度進行分析和評價,從而培養(yǎng)學生具備抽象建模能力、算法設計與分析能力及解決復雜工程問題的能力等。然而數(shù)據(jù)結構教學中面臨兩個主要問題,一是:學習內(nèi)容抽象,算法繁多且枯燥,學生很難理解,導致學生學習信心不強,興趣不高;二是:理論教學與實際應用容易脫節(jié),學生不能學以致用,導致學生學習動力不強,不利于學生各項能力的培養(yǎng)。為了解決這兩個問題,本文提出以能力培養(yǎng)為核心的教學模型,如圖1所示,模型中教學目標、教學內(nèi)容、課后作業(yè)、闖關實踐四部分圍繞能力培養(yǎng)這個中心進行,同時四部分內(nèi)容相輔相成,相互推動,根據(jù)教學目標,確定教學內(nèi)容,由教學內(nèi)容提煉課后作業(yè),根據(jù)課后作業(yè)完成闖關實踐,通過闖關實踐,進一步鞏固教學目標并進入下一個更高目標的學習,這樣,形成一個良性的學習閉環(huán)。
圖1 以能力培養(yǎng)為核心的教學模型
由于學生學習能力的差異性,因此在教學中要求老師能夠因材施教,然而在教學中老師很難做到,因此,圍繞培養(yǎng)能力,合理進行分層教學是必不可少的,分層遵循由易到難,由淺入深的原則,這樣可使不同層次的同學都能夠有所收獲,充分調(diào)動每個學生的學習積極性。具體開展分層教學對應的關系如表1所示。教學目標主要根據(jù)教育學家布魯姆提出的認知領域的教學目標分三層:分別對應理解記憶、分析應用和創(chuàng)造評價三層;教學內(nèi)容根據(jù)學生的認知程度分為:核心基礎、應用分析和綜合應用三層。課后作業(yè)根據(jù)教學內(nèi)容分為:基礎題、擴展題和綜合應用題三層。闖關實踐以游戲闖關的形式進行分層,具體分為驗證性、設計性、綜合性實驗和創(chuàng)新性實驗。
表1 能力培養(yǎng)與各項分層設計關系
教育學家布魯姆認為,認知領域的教育目標包含由低級到高級、由簡單到復雜的六層次,分別為記憶、理解、應用、分析、評價和創(chuàng)造。我在這里將記憶和理解、應用和分析、評價和創(chuàng)造進行綜合,將數(shù)據(jù)結構的教學目標分為初級目標、中級目標和高級目標,教學目標分層圖如圖2所示:
圖2 教學目標分層圖
知識領會目標:掌握線性表的定義,邏輯結構特點;領會兩類存儲結構設計方法以及各自的優(yōu)缺點;掌握順序表和單鏈表基本運算實現(xiàn)方法;掌握有序表的特點等。
應用分析目標:掌握順序表和單鏈表算法設計和應用;掌握有序表的歸并算法設計方法;有序表的應用
綜合評價目標:利用線性表求解復雜的應用,在掌握經(jīng)典的查找和排序算法的基礎上,能對算法進行分析和評價。
根據(jù)教學目標及教材的內(nèi)容,將教學內(nèi)容分為三個層面,一是:學生必須掌握的核心基礎部分,以掌握基本概念和原理為主,算法設計較為簡單,二是:應用分析內(nèi)容,這一部分的內(nèi)容是在前一部分內(nèi)容基礎上的擴展,引導學生做到能將所學的內(nèi)容加以應用,舉一反三。三是:綜合應用內(nèi)容,這部分相對比較抽象,算法復雜,主要引導學生能夠應用所學的知識應用于日常生活實踐,培養(yǎng)學生分析問題和解決問題的能力?,F(xiàn)以單鏈表為例來進行教學內(nèi)容分層設計。
核心基礎內(nèi)容:單鏈表的類型說明與定義,單鏈表基本操作的實現(xiàn)(插入、刪除、頭插法建表、尾插法建表),線性表基本操作在單鏈表中的實現(xiàn)(初始化、銷毀、判空、求表長、輸出、定位、查找、插入和刪除等)。
擴展部分內(nèi)容:引導學生利用核心基礎內(nèi)容,實現(xiàn)單鏈表相對復雜的應用。如:拆分單鏈表、求單鏈表中元素值最大和最小結點、單鏈表排序等。
提高部分:實現(xiàn)學生信息表的日程管理,這部分內(nèi)容引導學生將前兩部分所學的內(nèi)容應用于日常工作實踐,首先引導學生實現(xiàn)一個班級的學生管理,然后擴展到一個年級和一個學校。重在培養(yǎng)學生解決復雜工程問題的能力。
課后作業(yè)主要根據(jù)教學內(nèi)容進行提煉,同樣分為三個層次:基礎題、擴展題和綜合應用題。根據(jù)教學內(nèi)容,將需要完成的作業(yè)設置不同的難度系數(shù),難度系數(shù)分為易、中和難,學生可以根據(jù)自己的實際能力完成不同難度系數(shù)的作業(yè),對于中等難度的作業(yè),大部分學生跳一跳也能完成,這樣,不僅學生的能力得到很大的提高,同時,增強了學生學習的信心。
基礎題主要目的是鞏固、強化數(shù)據(jù)結構理論課教學過程中的核心知識點,培養(yǎng)學生運用所學基本概念、基本原理和編程技能實現(xiàn)通用數(shù)據(jù)結構及其典型算法的能力,如簡述線性表的兩種存儲結構的主要特點;簡述單鏈表設置頭結點的作用;設計一個算法,將元素x插入到一個有序順序表的適當位置,并保持有序性。
擴展題主要是在基礎題的基礎上進行擴展,使學生能夠舉一反三,增強學生的發(fā)散思維能力,例如對線性表進行插入和刪除操作的作業(yè)進行擴展,刪除線性表中的最大元素,并在最大元素之前插入元素x,如何用高效的算法刪除線性表中所有值為x的元素等。
綜合應用題是在擴展題的基礎上進行綜合運用,主要培養(yǎng)學生綜合運用順序表的知識進行相關算法分析,提高解決實際問題的能力,如分別用順序表和單鏈表實現(xiàn)學生管理系統(tǒng),比較分析他們的特點,并針對插入和刪除算法做時間和空間復雜性分析。
實踐是數(shù)據(jù)結構教學中必不可少的一環(huán),只有把理論知識應用到實踐中,學生才能深刻理解理論的內(nèi)容,從而更好地指導實踐。為了激發(fā)學生實踐的熱情,本文的實踐內(nèi)容以游戲闖關的形式進行分層,具體分為驗證性、設計性、綜合性和創(chuàng)新性實驗,具體內(nèi)容如表2所示。
驗證性實驗主要實現(xiàn)順序表和單鏈表的基本操作和一些常規(guī)算法的實現(xiàn),教學目的是讓學生掌握數(shù)據(jù)結構的基本概念,培養(yǎng)學生抽象建模的能力。以單鏈表的實現(xiàn)為例,闖關題包括:頭插法或尾插法整體建表;判斷單鏈表是否為空;求單鏈表的長度;輸出單鏈表;求單鏈表中第i 個元素值;按元素值查找;插入數(shù)據(jù)元素;刪除數(shù)據(jù)元素。每一個闖關題難度都很小,同學們都很容易實現(xiàn),這樣,既提高了學生學習的信心,也增強了他們進一步闖關的動力,實現(xiàn)時,要求學生把這些基礎函數(shù)庫形成一個頭文件,供后面其他程序調(diào)用。
設計性實驗,主要是在驗證實驗基礎上的擴展,進一步提高學生的分析和應用能力,同樣以單鏈表為例,闖關題一:以給定值x為基準將單鏈表分隔成兩部分,所有小于x的結點排在大于或等于x的結點之前,該闖關題主要考查學生對頭插法和尾插法的靈活運用,闖關題二:應用有序單鏈表,實現(xiàn)兩個多項式的相加和相減,該闖關題主要考查學生對經(jīng)典算法二路歸并算法的靈活運用。雖然設計性實驗有一定的難點,但都在學生的能力范圍之內(nèi),學生在掌握驗證性實驗的基礎上,進一步完成設計性實驗,大大提高了學生的編程能力。
綜合性實驗是在驗證性實驗和設計性實驗的基礎上的一個綜合運用,這個實驗內(nèi)容難度較大,主要目的是培養(yǎng)學生的綜合運用能力,提高學生分析和解決實際問題的能力、創(chuàng)新能力等。闖關題樣例:簡單的學生信息管理。學生記錄包括:學生學號(no)、姓名(name)、5科成績(數(shù)學、英語、政治、專業(yè)課1和專業(yè)課2)、總分,分別用順序表和鏈表實現(xiàn)學生信息管理,包括,學生表的創(chuàng)建、學生信息查找、插入、刪除、定位、排序等操作。這個綜合實驗是在前面驗證性實驗的基礎上稍作修改,如把ElemType的int類型改為學生信息這個結構體,相應地修改輸入和輸出的格式即可完成學生信息管理。
創(chuàng)新性實驗為可選實驗內(nèi)容,主要是為那些學有余力的學生設計,創(chuàng)新型實驗在綜合性實驗的基礎上的擴展,大部分來自生活實際問題及工程應用等,可鍛煉學生的科學研究能力和工程應用能力。上面的綜合實驗只要求學生完成一個班的學生信息管理,在創(chuàng)新性實驗中,可擴展為一個年級或是一個學校的學生信息管理,在數(shù)據(jù)結構的處理上,可引導學生將順序結構和鏈式結構結合起來實現(xiàn),提高了學生解決復雜工程問題的能力。
表2 闖關實踐分層
通過分層式教學設計與實踐,使得不同層次的學生都有所收獲,在體驗了學習成功和快樂的同時,極大地調(diào)動每個學生學習的積極性,進而提高了學生抽象建模能力、比較分析能力和解決復雜工程問題的能力,真正做到“授人以魚不如授人以漁”。