摘 要: 本文作者對高職《數據結構》課程實踐教學的重要性、存在的問題,提出了實踐教學的探索和實施方法,得到了一定的實效。
關鍵詞: 高職 《數據結構》課程 實踐教學 探索
1.引言
《數據結構》是計算機程序設計的的重要理論技術基礎,它不僅是計算機類各專業的核心課程, 而且是其它專業的重要選修課。《數據結構》是實踐性很強的課程,本課程的教學不僅要注重學生對理論的理解、學習基本理論知識,更要注重培養學生的實踐能力,通過上機實踐驗證算法的正確性,掌握和鞏固所學理論知識。
通過本課程的學習,學生能夠學會分析研究計算機加工的數據結構的特性,今后能夠針對具體問題選擇適當的邏輯結構、存儲結構,以及相應的算法,編寫出結構清晰、正確易讀、符合軟件工程規范的程序,為進一步學習后續專業課程和軟件開發打下堅實基礎。
因此,《數據結構》課程教學中實踐教學有著相當重要的意義。
2.高職《數據結構》實踐教學的重要性
目前,我國正在大力發展職業教育,國務院作出的《關于大力發展職業教育的決定》,要求“落實科學發展觀,把發展職業教育作為經濟社會發展的重要基礎和教育工作的戰略重點”[1]。《中共中央國務院關于深化教育改革,全面推進素質教育的決定》中指出:“加強課程的社會性和實踐性,重視實驗課程的教學,培養學生實際操作能力。”因此,培養出合格的高職學生是目前各高職學校亟待解決的問題。高職教育不能等同于普通高校的教育,對《數據結構》的教學要體現出高職教育特色,我們要充分認識到實踐教學的重要性和創新性,要使學生學好《數據結構》尤其要注重本課程的實踐教學[2]。
《數據結構》課程性質本身決定了實踐教學的重要性。《數據結構》課程實踐教學包括兩方面:(1)與課程教學同步的上機實驗;(2)課程結束后的課程設計。在整個教學過程中,兩者缺一不可,相輔相成。通過兩方面循序漸進地訓練,學生能掌握更多的程序設計技巧和方法,提高分析問題、解決問題的能力。
3.當前《數據結構》實踐教學中存在的問題
《數據結構》研究的是各種數據結構中元素之間的邏輯關系及在計算機中的存儲實現[3]。只有通過實踐環節,學生才能夠更加感性地掌握這些數據結構所適用的運算及其實現和應用。然而,當前《數據結構》實踐教學中存在著較多問題:一是由于我國辦學的歷史原因,高職的教材和大綱基本上都來自普通高校的教材和大綱的改編和縮編版本,很少有適合高職教育的《數據結構》的教材;二是由于高職學生相對普通高校學生基礎差,底子薄,因而在學習本課程時產生了畏難厭學的情緒;三是學生在學習《數據結構》時,由于對前驅課程(如C語言)掌握得不夠熟練,導致學習本課程困難;四是學生普遍實際動手能力較差,實踐不能夠佐證理論;五是學生認為這門課程理論性太強,太抽象、枯燥,面對具體問題時,不知該如何應用學過的知識來給出切實可行的解決方案,理論不能夠指導實踐。
4.解決上述問題的幾個前提條件
要解決上述問題,使得教師教好數據結構,學生學好數據結構,我們必須做好準備工作。
4.1制定合理的教學計劃,正確處理理論教學和實踐教學的關系。
教師在授課之前一定要合理地制定教學計劃、進度,這首先是教師對課程教學認識水平的一個重要體現,其次關系著這門課程的教學能否正常進行開展。總體而言,教學計劃應該詳略得當,同時考慮高職的特點。
教師要教好數據結構,學生要學好數據結構,最為關鍵的一點就是注重并正確對待理論教學和實踐教學的關系。教師應在計劃中以理論為基礎,偏重于實踐,對于《數據結構》這門課將理論和實踐比例協調在2∶1到1.2∶1,在教學計劃中能夠按照知識體系的鋪展將教學分成理論教學和實踐操作兩大模塊,相互交叉進行,并將實踐操作模塊分為教學內容實驗和綜合實驗(課程設計)。
這就要求教師不斷提高自身素質,能夠根據學生實際學習情況,以及對數據結構等計算機知識的需求,做個教學有創新意識、不斷進取的新型教師。
4.2選取好教材。
所謂好教材就是要具有高職特色,教師在教材內容的選取上應堅持以學致用、學用結合的原則,集先進性、科學性和實用性于一體,盡可能地將最基礎、最適用的軟件寫入教材,略去一些純理論的推導和繁瑣的數學證明;在內容的深淺程度上,把握理論夠用、側重實用、由深入淺的原則。同時,教材文字要淺顯易懂,銜接自然,邏輯性強。由許樂平主編的《數據結構——C++描述》是一本非常適合高職的教材,其配套的《數據結構學習指導與實驗》也是一本非常好的實踐教學用書[4]。
4.3注重教學過程、合理實施教學組織、理論能夠指導實踐。
教學過程包括教師、學生、教學內容、教學手段和方法等基本要素,彼此聯系,相互影響,形成了錯綜復雜的關系。教師要注重教學過程,采用啟發式、討論式、任務驅動式等多種教學方法設計好教學過程,并正確分析、認識和妥善處理這些關系,以提高高職課程教學質量。
教師實施教學組織要根據教學內容,合理安排教學進度,注重節奏教學,精心準備,激情授課,強調交互式教學,深入淺出,理論聯系實際,突出原理的應用;同時能夠以人為本,誠心與學生交朋友,推崇親情教學。
對于高職學生,我們要重點培養其解決實際問題的能力,以應用知識為主,衡量學習成績的標準不是知不知道,而是會不會干;所學的理論知識要能夠指導實踐。教師在教學過程中應盡量多采用一些動態效果來描述算法的思想,使學生易于接受和理解,并加深印象;盡可能將前后內容聯系起來,從中尋找一些規律,進行歸納提煉和使其系統化,使學生能較好地理解各個知識點間的聯系,從而降低課程的復雜度;在課堂上多舉一些編程中常用到的一些數據結構中的算法,讓學生知道這些算法都是用來干什么的;最后通過合理、有效地設計實踐內容,來強化理論教學的效果,從而起到理論指導實踐的作用。
任務驅動教學法是一種非常好的教學方法,其實施過程為:提出任務→分析任務→完成任務→交流總結。在理論教學和實踐教學兩個模塊中教師都可以很自如地運用這個方法。
5.實踐教學探索
國務院《關于大力發展職業教育的決定》要求“加強職業院校學生實踐能力和職業技能的培養”[1]。《數據結構》由于其課程地位的重要性,課程的實踐教學不能單純考慮課程本身,而必須綜合考慮多個方面進行。加強實踐,培養學生實踐操作技能是本課程教學重點,也是高職教學的重要環節。
5.1實踐教學內容的設計。
教師要根據學校實際教學條件和本課程知識體系的特點,合理安排實踐內容,合理選題,立足基本,以培養學生動手操作能力為主,既要鞏固課堂知識、拓寬知識面,又要培養學生的分析問題、解決問題的能力和創新能力。
5.1.1實驗課的題目安排要做到立足基本、分開層次、注意難易搭配。
至少要求學生完成以下模塊的實驗(基本實踐):①線性表操作;②棧和隊列的應用;③二叉樹的操作;④圖的操作;⑤查找;⑥排序。例如在“線性表操作”實驗中,可以設置以下題目:(1)分別用數組和鏈表實現線性表的逆置;(2)分別用數組和循環單鏈表實現約瑟夫問題;(3)一元多項式的加法。通過這種分層教學法,學生可以根據自己掌握理論知識的實際情況,選擇做較難的還是稍易的題目,每一位學生都能夠上機編程,提高自己的動手操作能力。
5.1.2科學設置課程設計。
課程設計是《數據結構》實驗教學中必不可少的一個重要環節,它是學生對所學課程知識的綜合運用,能夠很好地培養學生全面、靈活的設計思想和較高的創新能力,加深學生對該課程所學內容的進一步理解與鞏固[2]。因此如何科學地設置選題是本課程實踐教學的一個至關重要的環節。建議設置一些具有綜合性和專業性的題目,同時兼顧典型性、趣味性,比如:停車場管理、職工工資管理系統模擬、民航自動售票系統、舞伴匹配問題、類似記事本的文本編輯器、若干旅游城市的旅游線路選擇等。學生課程設計前至少提前一個月給學生布置下去,供學生選擇,給他們較充分的時間去思考、查閱資料、論證可行性,在可行的基礎上編寫程序,準備到機房實踐驗證,避免杜絕學生為了應付檢查而出現“抄襲、拷貝”現象。課程設計對教師而言不是給出一個或若干選題就是任務完成,而要自始至終貫穿整個實踐環節。
5.1.3實踐題目形式的設計。
對于實踐環節,傳統的題目無論實驗還是課程設計往往是給出文字敘述的題目和一些測試數據,就由學生去完成,通常再由教師給予一定的指導。但事實上,實踐環節的題目形式應該是可以多樣化的。筆者曾做過一些探索嘗試:①借鑒全國計算機三級考試上機考試的形式,除了給出文字敘述以外,還給出大部分程序,要求學生完成實現某個功能的函數;②借鑒程序員考試除給出文字敘述以外,還給出基本完善的程序,缺少若干語句,要求學生進行語句填空;③除了給出文字敘述以外還給出一個基本完成的程序,但包含若干細小的錯誤,要求學生根據測試數據測試情況進行排錯。其中③能夠更好地考查學生的能力,也更加適合高職學生的能力實踐,因為高職計算機專業學生就業目標之一就是成為軟件測試員。
5.2開設《數據結構》興趣小組,培養學生的團隊協作精神。
培養學生的學習熱情,無論是理論教學還是實踐教學對學生的學習都非常重要,而在《數據結構》實踐教學中作用尤為突出。教師可開設興趣小組,鼓勵一些能力突出的學生利用“數據結構”理論,結合相關的軟件工程的知識,針對一些特定的課題或者具有實際市場價值的系統項目進行相關研究,這樣一方面可以激發學生的學習興趣,增強學生的編程能力、系統分析能力和科學創新能力,另一方面可以培養學生的團隊協作精神。此項工作可以借助微機協會的指導或者和學校競賽輔導小組相輔相成,經過嘗試可以發現:①小組的成員往往能夠領先完成每次實驗的內容,以他們為核心,周圍的學生也基本能夠順利完成實驗。②通過研究趣味性的題目,小組成員常常進行討論,有時組員依次發言,就自己所研究的問題、所得到的收獲、所想到的解題思路進行闡述,并指出自己選擇這種解決方案的原因,通過相互討論,并由實踐指導教師進行點評,指出方案中的優點、不足和需要改進的方法,小組成員感覺到這種方法能夠學以致用,學習積極性大大提高,雖然興趣小組開發不了大型的或者實用的程序,但經過教師指導,小組成員普遍反映這種方式既加深了對數據結構知識的理解,又增加了開發經驗,獲益匪淺。③在實踐環節的課程設計過程中,尤其對應后面涉及的幾個較大的題目,學生既可以借助興趣小組的概念,又可以自由組合,甚至由教師指定分組,以小組的形式共同實現它們。教師要以培養學生的動手操作能力和團隊協作精神為目的,鼓勵學生互相溝通、共同探討、共同參與,發揮各自的優勢,達到共同提高的目的;同時要指導學生相互分工合作,從功能分割模塊到模塊間參數傳遞,乃至綜合測試等都要給予學生必要的指導。指定分組的情況往往是:基于學生中實踐動手能力有強弱的區分,分組務必使得每組學生中都有動手能力較強的學生,由他們負責所在小組的實驗,指定他們做一些實驗輔導工作,這樣變教師指導實踐為學生指導實踐,能夠充分調動學生參加實踐的積極性。通過相互合作學生不僅得到了互相學習的機會,而且激發了學習熱情,培養了團隊協作精神,為以后的實際工作打下良好的基礎。
因此,開設“數據結構”興趣小組,解決一些特定課題或者實際生活中的問題是一項很有意義的嘗試。
5.3實踐教學方法及過程管理的改進。
5.3.1以學生為主體,加強教師在實踐教學中的主導作用。
改革實踐教學方法就是要注重學生是主體,通過對學生的系統引導,充分調動他們獲取知識的積極性和主動性,增強他們的能力,提高學生的素質。實踐是整個教學過程中的一個重要環節,實踐教學的方法直接影響著學生對實踐的態度,也影響著他們的動手能力、創新意識的培養。
5.3.2學生實踐過程的組織和管理。
根據《數據結構》課程的特點,我們可以采取范例演示、獨立實踐與分組實踐及上述三種方式交叉出現等多種形式進行實踐活動。基于現有條件和培養團隊精神的角度出發,我們可以對實驗采用獨立實踐,課程設計采用分組實踐來組織實施實踐教學活動,一方面所有的學生都能夠按照基本要求掌握數據結構必需的基本操作,另一方面學生通過分組可以相互學習、相互討論切磋,提出一個最優方案后再實施,從而加強學生之間相互溝通和合作精神,為將來從事IT業需要群體合作的工作打好一定的溝通基礎。
教師要以學生為主體,改變自己在教學環節中作用,有針對性地選擇學習內容,不再“滿堂灌”,進行共性化與個性化相結合的教學。
5.4改革考試方式,加強實驗考核。
傳統的考核方式多是閉卷筆試,對于實踐性很強的《數據結構》這一課程,單純用筆試已經很難準確和完整衡量一個學生的知識水平和運用能力,必須通過實踐操作、上機考核,才能真實反映學生所掌握知識技能。對于高職生,我們應該著重考核學生綜合運用所學知識、解決實際問題的能力,促進學生個性與能力的全面發展。因此,筆者從有利于學生掌握知識,鞏固所學內容,提高能力和素質的目的出發,對《數據結構》的考核采取了一系列的措施,并在城職院許可的范圍內進行了一些考試改革的嘗試,強調實驗考核的重要性。具體做法是:每次實驗課結束后要求學生填寫實驗報告,包括實驗目的、實驗內容、詳細設計、實驗結果和實驗體會。此外,對考試分數的分配也進行了重新調整,上機實驗和平時作業占總成績的20%,課程設計占總成績的20%,期末考試占總成績的60%。筆者通過加大上機實驗和課程設計的分值,有效地調動了學生的學習積極性,達到了督促學生勤動手、多思考的目的。
6.結語
總之,對于高職高專《數據結構》課程的實踐教學,我們應不斷探索教學方法策略,使學生通過數據結構的實踐,提高分析問題、解決問題的能力。只要我們思想上重視實踐環節的教學,提高自身實踐教學的能力,采用合理的教學方法,“數據結構”課程的實踐教學必將取得良好的效果。
參考文獻:
[1]國務院.關于大力發展職業教育的決定.國發[2005]35號,2005,11,09.
[2]王宗亮.高職高專計算機專業課程教學探索與實踐.廣東水利電力職業技術學院學報,2005,9.
[3]嚴蔚敏,吳偉民.數據結構(C語言版)[M].北京:清華大學出版社,1997.
[4]許樂平.數據結構——C++描述[M].北京:中央廣播電視大學出版社,2006.