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