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