魯斌 劉昌余
摘 要:本文結(jié)合筆者在針對(duì)專升本學(xué)生講授《數(shù)據(jù)結(jié)構(gòu)》課程的一些心得體會(huì),根據(jù)專升本學(xué)生的特點(diǎn),從教材選取、先修課程鞏固、學(xué)生學(xué)習(xí)興趣激發(fā)、問題驅(qū)動(dòng)教學(xué)法、實(shí)踐環(huán)節(jié)設(shè)計(jì)與考核方法等方面對(duì)數(shù)據(jù)結(jié)構(gòu)課程教學(xué)改革提出了一些個(gè)人的建議和意見,希望能對(duì)該課程的教學(xué)改革起到積極的參考和促進(jìn)意義。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);專升本;教學(xué)改革
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A
1 引言(Introduction)
《數(shù)據(jù)結(jié)構(gòu)》是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)課程體系中一門非常重要非常核心的專業(yè)基礎(chǔ)課程,屬于專業(yè)理論性和技術(shù)性都很強(qiáng)的課程。數(shù)據(jù)結(jié)構(gòu)這門課程主要介紹了軟件設(shè)計(jì)中經(jīng)常會(huì)遇到的線性表、堆棧、隊(duì)列、串、數(shù)組、樹、圖等典型數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法,以及各種經(jīng)典的排序和查找算法,它要求學(xué)生掌握幾種基本數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和對(duì)應(yīng)操作的實(shí)現(xiàn)方法,并且要學(xué)會(huì)考察各種算法的復(fù)雜度。作為與專業(yè)知識(shí)、技能直接聯(lián)系的基礎(chǔ)課程,數(shù)據(jù)結(jié)構(gòu)一直受到很高的重視,它是算法分析與設(shè)計(jì)、數(shù)據(jù)庫原理、操作系統(tǒng)、編譯原理等課程的先修課程。數(shù)據(jù)結(jié)構(gòu)一般是低年級(jí)學(xué)生的必修課,課程內(nèi)容以抽象數(shù)據(jù)類型為基礎(chǔ),因此,學(xué)生學(xué)起來很吃力,老師教起來也費(fèi)勁。如何教好這門課,是對(duì)任課老師的一個(gè)巨大考驗(yàn)。統(tǒng)招專升本學(xué)生多是通過各省統(tǒng)一考試而選拔上來的優(yōu)秀普通全日制專科畢業(yè)生,盡管在自己的專科同學(xué)中屬于比較優(yōu)秀的群體,但是相比全日制普通本科生,似乎在學(xué)習(xí)上或多或少會(huì)差一點(diǎn)。筆者教過數(shù)據(jù)結(jié)構(gòu)這門課,授課對(duì)象正是本校的統(tǒng)招專升本學(xué)生,結(jié)合自己在教學(xué)中的一些體會(huì),談一下對(duì)數(shù)據(jù)結(jié)構(gòu)教學(xué)的一些認(rèn)識(shí)。
2 教學(xué)中專升本學(xué)生的特點(diǎn)(Characteristics of
Students of "college to undergraduate" in the
process of teaching)
《數(shù)據(jù)結(jié)構(gòu)》一向是計(jì)算機(jī)專業(yè)教學(xué)中的一個(gè)難點(diǎn),而筆者教過的專升本學(xué)生對(duì)這門課普遍反映難度很大,總感覺聽不懂。經(jīng)過調(diào)查和了解,這些專升本學(xué)生的學(xué)習(xí)情況歸納為三個(gè)方面。
首先,學(xué)生的學(xué)習(xí)基礎(chǔ)不齊,差別較大?,F(xiàn)在很多大學(xué)已經(jīng)不再招收專升本的考生了,而有些學(xué)校即使招收專升本的考生,但是競(jìng)爭(zhēng)激烈、考上的難度很大,因此,一些有志于深造本科的高職生為了保險(xiǎn)起見就報(bào)考了筆者所在的學(xué)校。筆者教過的這些學(xué)生中有很多來自于周邊各種職業(yè)學(xué)院畢業(yè)的學(xué)生,甚至有省城職業(yè)學(xué)院的畢業(yè)生。還有一些學(xué)生本來是不想讀這個(gè)專業(yè)的,另外還有一些學(xué)生在原來高職學(xué)校的專業(yè)并不是現(xiàn)在所讀的專業(yè),但是當(dāng)他們報(bào)考本校的時(shí)候,發(fā)現(xiàn)本校招收專升本考生的專業(yè)里沒有他們的原專業(yè)或想讀的專業(yè),而最相近的就是現(xiàn)在這個(gè)專業(yè),他們不得不報(bào)考了現(xiàn)在這個(gè)專業(yè)。此外,也有的學(xué)生是已經(jīng)??飘厴I(yè)之后工作兩三年了才又來讀的。由于學(xué)生及專業(yè)的來源不一致,這些學(xué)生在同上一門課的時(shí)候就顯得基礎(chǔ)參差不齊。
其次,一部分學(xué)生的先修知識(shí)儲(chǔ)備不足?,F(xiàn)在的高職教育實(shí)際上是以“理論夠用”為教學(xué)原則,側(cè)重于實(shí)操。因此,一些專升本學(xué)生掌握的基礎(chǔ)理論知識(shí)及其熟練程度無法與正規(guī)本科生相比。他們可能輪番學(xué)過Java、C++、PHP、VB或C#等流行的編程語言,也可能學(xué)過Photoshop平面設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)或計(jì)算機(jī)維護(hù)維修等應(yīng)用型的課程,卻可能沒學(xué)過離散數(shù)學(xué)或線性代數(shù)等數(shù)據(jù)結(jié)構(gòu)的先修課程。
再次,專升本的學(xué)生比正規(guī)本科生認(rèn)真。筆者同時(shí)教過專升本的學(xué)生和正規(guī)本科生,專升本的學(xué)生學(xué)習(xí)態(tài)度要認(rèn)真得多。總體來看,專升本學(xué)生上課聽講比較專心,盡管也有不聽講的學(xué)生。如果在課堂上遇到?jīng)]聽懂的問題,下課后也有不少同學(xué)會(huì)圍著老師問問題,直到他們搞明白為止。老師布置的課后作業(yè),他們也完成地很好。遲到、早退和曠課的現(xiàn)象也較少??赡苁且?yàn)檫@些學(xué)生經(jīng)歷了高考卻只讀了高職,現(xiàn)在終于讀上了本科,所以特別珍惜這次教育機(jī)會(huì)吧。相比之下,從高考直接考上來的全日制本科生就表現(xiàn)得非常自由散漫。
3 教學(xué)改革中的幾點(diǎn)建議(Some suggestions on
teaching reform)
(1)選取合適的教材
當(dāng)前,《數(shù)據(jù)結(jié)構(gòu)》教材多不甚數(shù),有采用C語言描述的,也有采用Java或C++語言描述的。受社會(huì)潮流影響,正規(guī)本科生的教材多選擇Java或C++等面向?qū)ο蟮恼Z言來描述的。然而,因?yàn)楦鱾€(gè)職院課程設(shè)置的不同,來自于各個(gè)不同高職院校的學(xué)生可能有的學(xué)了Java語言而沒學(xué)C++,或者反之;還有些非計(jì)算機(jī)專業(yè)的學(xué)生可能沒學(xué)過這些當(dāng)前流行的基于面向?qū)ο笏枷氲木幊陶Z言。因此,建議對(duì)專升本學(xué)生一律要采用C語言描述的教材。C語言作為一門簡(jiǎn)單的入門級(jí)教學(xué)語言,工科專業(yè)的學(xué)生多半都學(xué)過。并且,在學(xué)校招收專升本學(xué)生的時(shí)候,也都會(huì)考C語言程序設(shè)計(jì)的。
此外,數(shù)據(jù)結(jié)構(gòu)經(jīng)過這么多年的發(fā)展,內(nèi)容相對(duì)固定,知識(shí)點(diǎn)變化不大,因此,市面上各版本的教材大同小異。然而,目前認(rèn)可度高的好教材都是針對(duì)重點(diǎn)大學(xué)的本科生而編寫的,不太適合介于普通本科生和高職高專學(xué)生之間的專升本學(xué)生。專升本學(xué)生的合理定位應(yīng)該是應(yīng)用型本科生,而應(yīng)用型本科是最近幾年才被提出來的新事物,確實(shí)鮮有合適的課程及教材可供參考。從目前情況看,要么自己編寫教材,要么就低不就高,只能選取面對(duì)高職高專學(xué)生的教材用于教授那些專升本學(xué)生。
(2)鞏固先修課程的基礎(chǔ)
每個(gè)學(xué)校都會(huì)根據(jù)自己的專業(yè)設(shè)置而制定相應(yīng)的教學(xué)計(jì)劃,什么時(shí)候上什么課程都嚴(yán)格按計(jì)劃執(zhí)行,以保證學(xué)習(xí)的連貫性。數(shù)據(jù)結(jié)構(gòu)的先行課程是離散數(shù)學(xué)、C語言程序設(shè)計(jì)等,學(xué)生對(duì)C語言等課程的掌握程度直接影響到數(shù)據(jù)結(jié)構(gòu)的教學(xué)效果。而在數(shù)據(jù)結(jié)構(gòu)中用到的C語言知識(shí)點(diǎn)主要是數(shù)組、指針、函數(shù)和結(jié)構(gòu)體等[1],這些知識(shí)點(diǎn)本來就是C語言的難點(diǎn),往往放在C語言課程的后半段,而老師一般會(huì)把主要精力放在前半段的基礎(chǔ)知識(shí)點(diǎn)上,因此,有些學(xué)生可能對(duì)這些在數(shù)據(jù)結(jié)構(gòu)中用得較多的知識(shí)點(diǎn)不熟悉,甚至就沒學(xué)過。這要求我們講授數(shù)據(jù)結(jié)構(gòu)的老師要給學(xué)生補(bǔ)課了,幫助學(xué)生鞏固好這些先修課程需要用到的知識(shí)點(diǎn)。畢竟我們教的是數(shù)據(jù)結(jié)構(gòu)課程,要補(bǔ)上程序設(shè)計(jì)語言的課程,既要占用數(shù)據(jù)結(jié)構(gòu)的課時(shí),又要額外花時(shí)間精力備課,因此對(duì)老師來說還是要付出很多的,對(duì)數(shù)據(jù)結(jié)構(gòu)的教學(xué)進(jìn)度也會(huì)有很大的影響。這個(gè)時(shí)候就只能把先修課程的必要知識(shí)點(diǎn)納入到本門課程的教學(xué)計(jì)劃中,給學(xué)生多講解一些這方面的內(nèi)容,對(duì)本門課程的內(nèi)容有所側(cè)重或舍取,否則,會(huì)影響本門課程的教學(xué)和學(xué)習(xí)效果。
(3)激發(fā)學(xué)生的學(xué)習(xí)興趣
學(xué)生對(duì)數(shù)據(jù)結(jié)構(gòu)這門課的畏難情緒很嚴(yán)重,有的學(xué)生認(rèn)為數(shù)據(jù)結(jié)構(gòu)比數(shù)據(jù)庫原理、操作系統(tǒng)更難。這種畏難情緒會(huì)影響學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的興趣,甚而產(chǎn)生學(xué)習(xí)上的心理障礙。數(shù)據(jù)結(jié)構(gòu)的理論非常抽象,老師講解起來比較枯燥乏味,教學(xué)難度較大,學(xué)生聽起來也可能不易理解,難以提高學(xué)習(xí)興趣。教師對(duì)教材的講解時(shí)一定要做到層次分明、條分縷析,并且在講授過程中可以穿插一些數(shù)據(jù)結(jié)構(gòu)相關(guān)名人的傳奇人生及生活逸事,以此提高學(xué)生興趣。還有其他的方法激發(fā)學(xué)生的學(xué)習(xí)興趣,比如,教學(xué)中采用案例說明時(shí),盡量選取一些貼近生活的例子;在每個(gè)數(shù)據(jù)結(jié)構(gòu)及其操作介紹完成后,利用源代碼演示相關(guān)過程及結(jié)果。通過多種手段,使得學(xué)生的學(xué)習(xí)興趣得到提高。
(4)問題驅(qū)動(dòng)教學(xué)法
數(shù)據(jù)結(jié)構(gòu)比較正統(tǒng)的講授模式下,大部分老師按照“邏輯結(jié)構(gòu)→存儲(chǔ)結(jié)構(gòu)→操作方法→編程實(shí)現(xiàn)”的流程講解[2,3]。盡管這也是一種循序漸進(jìn)的講解方式,但是學(xué)生并不能深刻理解數(shù)據(jù)結(jié)構(gòu)的現(xiàn)實(shí)意義和應(yīng)用價(jià)值。如果教師換一種講解的思路,按照“問題定義→算法設(shè)計(jì)→選擇數(shù)據(jù)結(jié)構(gòu)”的流程講解,能幫助學(xué)生很快抓住數(shù)據(jù)結(jié)構(gòu)的精髓,了解算法與數(shù)據(jù)結(jié)構(gòu)之間的關(guān)系。事實(shí)上,這種講解的流程更加符合人類的思維過程。
(5)實(shí)踐環(huán)節(jié)的設(shè)計(jì)
實(shí)踐環(huán)節(jié)主要培養(yǎng)學(xué)生的動(dòng)手能力的,當(dāng)前數(shù)據(jù)結(jié)構(gòu)的實(shí)驗(yàn)課還是使用控制臺(tái)程序界面,本身就比較枯燥無趣了,在實(shí)驗(yàn)內(nèi)容的安排上不宜再一板一眼地要求實(shí)現(xiàn)某個(gè)數(shù)據(jù)結(jié)構(gòu)的操作了。與問題驅(qū)動(dòng)教學(xué)法一樣,可安排一些現(xiàn)實(shí)生活中的簡(jiǎn)單問題用于學(xué)生實(shí)驗(yàn)。比如,可讓學(xué)生利用線性表兩種不同的存儲(chǔ)結(jié)構(gòu)分別設(shè)計(jì)出成績(jī)管理系統(tǒng),并比較使用不同存儲(chǔ)結(jié)構(gòu)的區(qū)別。成績(jī)管理是學(xué)生最熟悉的內(nèi)容,這樣的實(shí)踐課有助于培養(yǎng)學(xué)生對(duì)于真實(shí)事物的抽象能力和邏輯思維能力。
(6)考核方法
我們對(duì)普通本科生的考核一般是三七開,平時(shí)成績(jī)占總成績(jī)的百分之三十,期末考試成績(jī)占百分之七十,而平時(shí)成績(jī)包括遲到、早退、曠課等平時(shí)表現(xiàn)和實(shí)驗(yàn)實(shí)踐課的考查。對(duì)于專升本的學(xué)生來說,既然他們存在著理論基礎(chǔ)薄弱的先天不足,可以把考核向?qū)嶋H動(dòng)手能力傾斜,即提高平時(shí)成績(jī)中實(shí)驗(yàn)實(shí)踐課在總成績(jī)中的權(quán)重。
4 結(jié)論(Conclusion)
盡管數(shù)據(jù)結(jié)構(gòu)課程比較難教難學(xué),但也并非高不可及。在教學(xué)實(shí)踐中不斷摸索,不斷總結(jié),持續(xù)改進(jìn)教學(xué)理念和方法,發(fā)展出一套適合專升本學(xué)生的教學(xué)模式,提高學(xué)生的邏輯思維能力和實(shí)踐動(dòng)手能力。唯有這樣,才能較好地完成數(shù)據(jù)結(jié)構(gòu)這門課程的教學(xué)任務(wù),才能使得教育質(zhì)量和教學(xué)效果得到持續(xù)提高。
參考文獻(xiàn)(References)
[1] 劉興林.大學(xué)工科C語言程序設(shè)計(jì)教學(xué)探索與實(shí)踐——以五
邑大學(xué)為例[J].軟件工程師,2014,17(5):39-40.
[2] 吳英杰,王一蕾,王曉東.面向問題求解的實(shí)踐教學(xué)模式:算法
與數(shù)據(jù)結(jié)構(gòu)實(shí)踐教學(xué)改革[J].計(jì)算機(jī)教育,2007,(7):29-31.
[3] 樊俊青,等.高職高專院校數(shù)據(jù)結(jié)構(gòu)與算法教學(xué)改革與實(shí)踐
[J].計(jì)算機(jī)教育,2010,(16):17-20.
作者簡(jiǎn)介:
魯 斌(1977-),男,博士,講師.研究領(lǐng)域:復(fù)雜網(wǎng)絡(luò),軟件
開發(fā).
劉昌余(1984-),男,博士,講師.研究領(lǐng)域:事件檢測(cè),計(jì)算
機(jī)應(yīng)用.