高艷霞,田繼鵬,王春霞
(中原工學(xué)院 計算機(jī)學(xué)院,河南 鄭州 450007)
“數(shù)據(jù)結(jié)構(gòu)”是計算機(jī)科學(xué)與技術(shù)、網(wǎng)絡(luò)工程、軟件工程等計算機(jī)相關(guān)專業(yè)的一門核心專業(yè)基礎(chǔ)必修課,是計算機(jī)類專業(yè)碩士研究生入學(xué)考試科目,也是各大軟件公司招聘時經(jīng)常考察的內(nèi)容?!皵?shù)據(jù)結(jié)構(gòu)”課程在計算機(jī)學(xué)科的專業(yè)教學(xué)體系中占有重要的地位,起著承上啟下的作用,其先修課程有“離散數(shù)學(xué)”“線性代數(shù)”“高級語言程序設(shè)計”,同時它又是“算法設(shè)計與分析”“操作系統(tǒng)”“數(shù)據(jù)庫系統(tǒng)概論”等課程的先修課。數(shù)據(jù)結(jié)構(gòu)不僅是一般程序設(shè)計的基礎(chǔ),而且是設(shè)計和實現(xiàn)操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)及其他系統(tǒng)程序和大型應(yīng)用程序的重要基礎(chǔ)。本課程系統(tǒng)介紹軟件設(shè)計中常用的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和基本操作,以及常用的查找和排序方法。課程的學(xué)習(xí)目標(biāo)是,通過學(xué)習(xí)使學(xué)生掌握計算機(jī)加工的數(shù)據(jù)對象的特性,以便在實際應(yīng)用中選擇適當(dāng)?shù)倪壿嫿Y(jié)構(gòu)、存儲結(jié)構(gòu)及相應(yīng)算法,并掌握算法的時間分析和空間分析方法,為應(yīng)用軟件的研制打下堅實的理論基礎(chǔ)。但是在實際教學(xué)過程中,“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué)效果不盡如人意,存在諸多亟待解決的問題。
我們在多年的教學(xué)實踐中發(fā)現(xiàn),部分學(xué)生對“數(shù)據(jù)結(jié)構(gòu)”課程存在畏難情緒,感覺課程內(nèi)容抽象枯燥,難以理解,課堂上教師講的理論大多聽得懂,但是上機(jī)實踐時卻難以下手。這影響了學(xué)生學(xué)習(xí)的主動性和積極性,課程學(xué)完以后學(xué)生的邏輯思維能力及解決實際問題的能力沒有得到明顯提高,教學(xué)效果不太理想。
大部分學(xué)校的程序設(shè)計語言課程開設(shè)在第一學(xué)期,而“數(shù)據(jù)結(jié)構(gòu)”開設(shè)在第三或第四學(xué)期,相隔時間較長,基礎(chǔ)好的學(xué)生可以很快過渡到數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí),而一些學(xué)生當(dāng)時學(xué)習(xí)程序設(shè)計語言課程時就較差,時間長了更是忘得差不多了,學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時就會感覺很吃力。比如數(shù)據(jù)結(jié)構(gòu)中經(jīng)常用到的指針、函數(shù)、結(jié)構(gòu)體、數(shù)組等內(nèi)容,在程序設(shè)計語言中也是難點,尤其是指針,很多學(xué)生學(xué)完程序設(shè)計語言后對指針仍是一頭霧水或一知半解,而指針幾乎貫穿了整個數(shù)據(jù)結(jié)構(gòu)內(nèi)容。這些學(xué)生在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時將會有很大的障礙,尤其在實踐環(huán)節(jié),很難用所學(xué)的理論知識解決實際問題[1]。
以我校(中原工學(xué)院)為例,“數(shù)據(jù)結(jié)構(gòu)”課程共60學(xué)時,其中10學(xué)時為實驗教學(xué)。為照顧考研的學(xué)生,一般考研大綱要求的內(nèi)容都會在課堂上講解,課程內(nèi)容多,任務(wù)重,理論知識強(qiáng)調(diào)得多。雖然實驗任務(wù)會至少提前1周發(fā)布出來,但是每次實驗時間只有90分鐘,一個大班按60人算,教師很難顧及到每一名學(xué)生,沒有時間檢查每個學(xué)生的完成情況。因此,出現(xiàn)部分學(xué)生應(yīng)付實踐環(huán)節(jié)、實驗報告抄襲的情況,實驗教學(xué)效果整體不理想。
“數(shù)據(jù)結(jié)構(gòu)”課程知識點多、理論性強(qiáng),教師主要采用“灌輸式”教學(xué)方式。學(xué)生在課堂上因缺少互動容易走神,聽課打不起精神,教師往往自我感覺很精彩的一堂課,學(xué)生卻收效不大。長此以往,學(xué)生逐漸失去聽課的興趣,出現(xiàn)學(xué)生課堂上看手機(jī)、睡覺甚至逃課的現(xiàn)象。
目前“數(shù)據(jù)結(jié)構(gòu)”課程的考核方式主要是閉卷筆試。對于期末考試,教師當(dāng)然都希望學(xué)生能考出好的成績,同時由于很多學(xué)校規(guī)定了不及格率上限,一旦不及格率超過上限,則需要寫出情況說明,甚至對成績進(jìn)行技術(shù)處理。因此教師在試卷命題時常會放低要求,挑選一些學(xué)生較易完成的試題,有的還會在期末進(jìn)行總復(fù)習(xí),甚至“劃重點”。這樣盡管一些學(xué)生平時學(xué)習(xí)不認(rèn)真,但在考前突擊一下,考試及格是沒有問題的。然而,學(xué)生學(xué)完、考完后真正掌握了多少知識就另當(dāng)別論了。
為使學(xué)生能夠從程序設(shè)計語言順利過渡到數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí),在開課前可以對學(xué)生的程序設(shè)計語言掌握情況進(jìn)行摸底考試,主要檢測學(xué)生對數(shù)據(jù)結(jié)構(gòu)中涉及的程序設(shè)計語言的知識點的掌握情況。這樣,教師在“數(shù)據(jù)結(jié)構(gòu)”的第一堂課上,可以針對學(xué)生在程序設(shè)計語言方面的薄弱環(huán)節(jié)進(jìn)行復(fù)習(xí)鞏固。如筆者通常會在第一節(jié)課上根據(jù)學(xué)生的情況,有選擇地把C語言中的指針、數(shù)組、結(jié)構(gòu)體、函數(shù)調(diào)用及參數(shù)傳遞等學(xué)生掌握不理想的知識點復(fù)習(xí)一遍,使學(xué)生鞏固大一學(xué)過的知識,并告知學(xué)生這些內(nèi)容將在數(shù)據(jù)結(jié)構(gòu)中頻繁用到,希望學(xué)生扎實掌握、打牢基礎(chǔ)。
俗話說“好的開端是成功的一半”,上好第一堂課是培養(yǎng)學(xué)生對本門課程產(chǎn)生學(xué)習(xí)興趣的重要一環(huán)。第一堂課的前一半時間可以用來復(fù)習(xí)程序設(shè)計語言知識,后一半時間可以講一些案例,從而引入”數(shù)據(jù)結(jié)構(gòu)”課程,如可以針對線性結(jié)構(gòu)、樹形結(jié)構(gòu)、圖狀結(jié)構(gòu)[2]各找一個案例,而這些案例最好是學(xué)生感興趣的,能夠激起學(xué)生對這門課程進(jìn)一步探索的欲望。比如筆者通常選擇電話號碼查找、人機(jī)對弈、課表安排等學(xué)生感興趣的問題,從問題提出到數(shù)據(jù)結(jié)構(gòu)選擇,最終問題求解,帶著學(xué)生一步一步分析實際問題的求解過程,并讓學(xué)生參與其中,使學(xué)生充分感受數(shù)據(jù)結(jié)構(gòu)在解題中的重要作用。在講到人機(jī)對弈案例時結(jié)合人工智能的發(fā)展,尤其是近期幾次廣受關(guān)注的人機(jī)大戰(zhàn),學(xué)生興致很濃,這樣就可以讓學(xué)生投入其中并積極地思考問題,從而對課程產(chǎn)生濃厚的學(xué)習(xí)興趣。然后,就可以引出“數(shù)據(jù)結(jié)構(gòu)”這門課所要研究的主要內(nèi)容——非數(shù)值計算的程序設(shè)計問題中計算機(jī)的操作對象以及它們之間的關(guān)系和操作,并告訴學(xué)生“數(shù)據(jù)結(jié)構(gòu)”課程在計算機(jī)學(xué)科中的地位和作用。同時,還要讓學(xué)生明確課程的特點、教學(xué)目標(biāo),以及課程的學(xué)習(xí)要求、考核辦法,并給出學(xué)習(xí)本課程的建議。
首先要重視“數(shù)據(jù)結(jié)構(gòu)”課內(nèi)實驗,教師分層設(shè)計難度系數(shù)不等的題目,讓不同層次的學(xué)生都有跳一跳可以完成的題目。教師提前2周發(fā)布實驗題目,鼓勵大家提前完成。同時要加強(qiáng)實驗監(jiān)督、考核,每次實驗必須由教師驗收程序,針對完成質(zhì)量和數(shù)量給予平時成績。對于實驗抄襲者或2次不完成實驗任務(wù)者,教師單獨談話予以警告,并扣除實驗的平時成績。
有條件的學(xué)校,可以運用一些網(wǎng)絡(luò)輔助學(xué)習(xí)平臺,教師設(shè)計好題目,讓學(xué)生在規(guī)定的時間內(nèi)提交。平臺不僅可以檢查正誤,還可以查重、統(tǒng)計,這樣可以節(jié)省教師的時間,實驗課上可以用來個別答疑。在這樣的平臺上還可以布置一些要求學(xué)生課下完成的題目和開放練習(xí)題,根據(jù)完成質(zhì)量和數(shù)量,增加平時成績獎勵分,并每周在首頁公布班級排名,這樣可以激勵學(xué)生相互比拼,增加課下實踐時間,形成良性的競爭氛圍。
為使學(xué)生溫故而知新,在每節(jié)課的前5分鐘,教師準(zhǔn)備2~3個問題,對上一節(jié)課的主要內(nèi)容進(jìn)行提問,并計入平時成績。課堂上,教師要掌控教學(xué)節(jié)奏,看到學(xué)生出現(xiàn)懈怠時,可適時提醒或提問,以保證學(xué)生的聽課效率。根據(jù)“數(shù)據(jù)結(jié)構(gòu)”課程的內(nèi)容,可以設(shè)計一些課堂討論或請學(xué)生上臺講課的方式。比如講到“隊列”時,可以采用討論的形式,引導(dǎo)學(xué)生列舉生活中需要排隊的情況,討論“隊列”的規(guī)則以及出隊、入隊的操作,并進(jìn)一步討論與一般線性表的區(qū)別和聯(lián)系,這樣學(xué)生在討論中就明白了“隊列”的邏輯特征及操作限制。再比如在講到“最小生成樹”時,可以提前布置2組學(xué)生分別自學(xué)普里姆算法和克魯斯卡爾算法,并讓學(xué)生在課堂上講解,在講解的過程中同組內(nèi)的學(xué)生可以相互補(bǔ)充,最后教師對他們的講解進(jìn)行點評。這樣的安排可能會多花一點時間,但是提高了學(xué)生的學(xué)習(xí)積極性,鍛煉了學(xué)生的自學(xué)能力和分析問題、解決問題的能力。
很多學(xué)校對考試課有嚴(yán)格的限制,規(guī)定了期末成績和平時成績的占比,比如我校規(guī)定考試課的平時成績占比不能大于30%。這種規(guī)定避免了平時成績的評定自由度過大而給一些教師提供“放水”機(jī)會,但同時也存在一定的弊端。一些平時各項表現(xiàn)都很優(yōu)異的學(xué)生可能最終成績卻不高,而一些平時表現(xiàn)一般的學(xué)生,期末突擊一下也能取得好成績,這樣就會影響學(xué)生的學(xué)習(xí)積極性,所以要加大平時成績占比。另外考試形式要多樣化,可以采用機(jī)試加筆試的形式,比如可以采用平時成績(40%)+筆試(40%)+機(jī)試(20%)。教師在命題時嚴(yán)格按照“數(shù)據(jù)結(jié)構(gòu)”課程應(yīng)該掌握的知識點命題,這樣學(xué)生就很難靠最后突擊取得好成績,真正體現(xiàn)一分耕耘一分收獲。
“數(shù)據(jù)結(jié)構(gòu)”作為計算機(jī)相關(guān)專業(yè)的核心基礎(chǔ)課,如何提高教學(xué)質(zhì)量和教學(xué)效果,使學(xué)生真正學(xué)有所得,是筆者從事本課程教學(xué)近20年一直在思考的問題。通過上述一些改革措施的實施,已經(jīng)取得了一些效果。但改革永遠(yuǎn)在路上,筆者將堅持教學(xué)改革探索,不斷提高課程教學(xué)質(zhì)量。