周原 梁鵬
摘? 要:基于學生在自主學習中的個體化差異,文章提出在《數據結構》教學中建立以學生為中心的教學模式改革實踐。文章首先分析了《數據結構》課程教學中存在的諸多問題,通過對問題的全面分析后,提出了結合任務驅動型的教學方法。最后,通過對成績結果的分析表明,該課程教學改革措施有力地提升了學生的學習能力,并提高了學生的學習成績。
關鍵詞:數據結構;教學改革;任務型驅動
中圖分類號:G642 文獻標志碼:A 文章編號:2096-000X(2019)05-0142-03
Abstract: Based on the difference about the self-monitoring learning ability of the students , this paper introduces a teaching reform which centers on students on the course of Data Structure. This paper first describes some problems in the teaching of "Data Structure" and then points out that task-based teaching approach is a way out in improving students' learning as well as increasing their academic performance.
Keywords: data structure; teaching reform; task-based teaching approach
引言
《數據結構》課程是計算機專業(yè)的一門核心基礎課程,它的前導課程是《C/C++程序設計》和《離散數學》,該課程與其它課程的獨立性不同,它有很強的承上啟下的作用?!稊祿Y構》沒有學好,導致后面《算法分析與設計》等相關課程很難開展。目前國內很多院校的《數據結構》課程教學重點在于程序設計基礎方面,缺少個性化教學和主動任務驅動教學,從而導致無法針對學生的學習能力差異進行區(qū)別性教學[1]。本文的主要研究內容在于,面向具有不同程序設計基礎的學生群體,在存在差異化程序設計能力的前提下,以《數據結構》課程為案例,研究任務驅動型教學方法,結合學科競賽和在線微課視頻,實現傳統(tǒng)學習方式的“被動性、依賴性、統(tǒng)一性、虛擬性、認同性”向現代學習方式的“主動性、獨立性、獨特性、體驗性與問題性”轉變過程。
一、《數據結構》在教學中主要存在的問題
經過多年教學一線的實踐經驗發(fā)現,學生學習《數據結構》課程主要存在以下問題:
1. 不同專業(yè)的學生程序設計思維存在差異。以計算機科學學院三個專業(yè)為例:軟件工程專業(yè)、物聯網工程專業(yè)、計算機應用專業(yè)。這三個專業(yè)的學生在程序發(fā)散性思維方面存在明顯的差異,軟件工程專業(yè)學生表現出來在編程方面的邏輯思維最強,而在硬件方面的動手能力相對較弱。物聯網工程專業(yè)學生卻在硬件方面動作能力較強,而在編程能力相對較弱。
2. 學生編程實踐能力存在差異。由于不同的專業(yè)課程設置,軟件工程專業(yè)在學習完《C語言程序》,還有《程序設計訓練》等課程后,編程能力得到強化。而數學師范專業(yè)或電子商務專業(yè)在學完《數據結構與算法》后就沒有相應的后繼算法編程課程,明顯對編程重視程度不同,由此也導致編程能力的差異非常大。
3. 課程內容比較抽象,每種數據結構都是由抽象數據類型描述,相對比較難以理解?!稊祿Y構與算法》課程中順序表,棧,隊列,樹,圖等數據結構都是高度抽象的數據描述,難以用現實事物進行案例說明,學生無法將知識點具體化、形象化,從而導致難以理解課程內容。
二、任務驅動型教學方法的實施[2]
經過多年一線教學,清華大學出版社出版的李春葆教授主編的《數據結構教程》非常適合本校學生。本文將以此教材作為基礎,來做為實例進行任務驅動教學[3]。
在教學過程中,根據課堂的教學內容來布置相應的上機實踐任務,由此來鞏固與加強學生對所授知識的理解。但不管布置什么類型的題目,都有學生會覺得該題容易(處于舒適區(qū)),同時也有另外一部分同學覺得很難(處于恐慌區(qū)),在這些題目的完成過程中,勢必影響到這部分同學學習的積極性。如果能創(chuàng)設難度適中的上機實踐任務(處于最佳區(qū)域學習區(qū)),就能驅使學生在能力范圍之內通過努力學習解決此任務,由此也能逐步擴大本人的舒適區(qū),意味著知識與能力的增強。通過課程的進度不斷創(chuàng)設任務集,使每一個學生都能找到與之匹配的學習區(qū)的任務。學生通過解決任務當中的問題,因而產生的愉悅感能進一步激發(fā)學生的學習動力[4]。
(一)簡單編程到模塊化編程的任務
由于學生都是上個學期剛剛學完C語言,基本上還沒有模塊化編程的思想,所有代碼都喜歡寫在主函數里面。導致程序結構紊亂,思路不清晰。通過一個實例,如:實現抽象數據類型復數的加減乘除等基本操作。將復數的每一個操作都用一個具體函數來實現。這樣通過一個代表性的任務,讓學生建立模塊化編程的思想。
(二)改錯型任務驅動訓練
學生在編程過程中一旦調試或編譯時遇到錯誤,這時最容易出現畏難情緒。調試能力得到不到提高,會嚴重打擊到學生學習《數據結構與算法》的熱情。由于長年在教學一線,熟悉學生容易出現的問題,精準設置了三類錯誤程序進行改錯。一類是選擇學生自己寫的作品,選擇比較具有代表性的。這種一般含有大量語法錯誤,格式錯誤,命名錯誤等。二類是針對學生常犯的錯誤,自己進行設置錯誤,一般通過編譯器的提示與對代碼的理解可以進行逐步的修改與完善。三類是設置編譯沒有任何語法錯誤,但是運行卻得不到正確結果的代碼。解決此類問題需要建立在學生對代碼進行全篇理解的基礎上才能通過調試解決問題。經過改錯型任務驅動訓練后,學生對語法更加熟悉,解決編譯與調試問題思路會更加清晰,明白怎么去解決問題,找到問題的卡殼之處。
(三)基礎型任務到拓展型任務驅動
在學習過程中,由于存在學生能力的差異,針對性的布置不同任務就顯得尤為重要。所以在每個章節(jié)的理論教學結束后,都會根據學生掌握情況進行差異化布置任務,并對每名學生的完成情況進行記錄,為以后的學習制定合適的任務[5]。
通過設置豐富任務題集,對不同能力的同學進行針對性布置任務,使任務處于學生能力范圍內的學習區(qū)。學生通過完成任務后產生的成就感能進一步激發(fā)他挑戰(zhàn)更加難的任務,從而使他的舒適區(qū)逐步擴大。
(四)競賽型題目任務驅動
為了提高學生綜合運用所學知識來解決實際問題的能力,收集了一些海外高校競賽題。例如管道通訊問題就可以利用數據結構中最小生成樹普里姆(Prim)算法得到求解。這些問題的設置拓寬了學生的視野,也提高了學生查閱資料,解決實際問題的能力。
三、實施任務驅動型教方法的保障與激勵措施
《數據結構與算法》課程中知識點多,而且量非常大。僅靠課堂上的講授時間不足以保證學生能完全弄懂弄明白,而對絕大部分學生來說,利用課后的時間通過自學來掌握教材上的知識點,往往要付出巨大的努力。為了讓學生聽得懂,掌握得住,用得上。通過將《數據結構與算法》上的知識點分三類做成教學小視頻。分別是:知識點類,練習類,代碼類。視頻的好處是可以反復觀看,相當于老師在反復講同一個知識點。這樣為學生掌握基礎知識點提供了非常有效的保障。
另外,對于學生提交的紙質作業(yè),郵件提交的代碼作業(yè),上機實踐課提交實踐作業(yè)。每次都會根據完成質量分等級進行詳細記錄,分批對部分同學作業(yè)進行詳細點評,指出其寫得好的地方和不足之處,以及努力的方向,最后再寫上鼓勵和期望的話語。讓學生感覺到老師對他的關心與期盼。并且在課堂上提出表揚,既為其他學生樹立了榜樣,同時是對該生付出的努力進行肯定。對于完成質量不達標的同學就作業(yè)內容進行不點名批評,既保護了隱私照顧了自尊同時又對該生進行了鞭策。經過以上措施的實施,能非常明顯的感覺到學生在聽課的互動投入程度,作業(yè)完成質量上,實踐作品的用心程度,都有很大的進步。
四、實施效果分析
教改模式實施后,學生對作業(yè)的投入程序得到顯著提升,各班級學生完成作業(yè)的合格率優(yōu)秀率也得到了提高,例如:計算機應用專業(yè)優(yōu)秀率由14級的15%提高到16級的23%。缺交作業(yè)的現象降低了不少,例如:計算機應用專業(yè)的缺交作業(yè)或都不合格情況由14級的25%下降到16級的10%。各班級情況統(tǒng)計具體如圖1所示。
教改模式實施后,各個專業(yè)的學生對知識點的掌握更加扎實,在題目難易程序幾乎不變的基礎上,不同專業(yè)各級修完該課程后,期末考試成績得到了提升。例如:計算機應用專業(yè)14級的期末考試平均分為78.23分,到16級時期末考試平均分提高到了83.33分。各班級成績具體如圖2所示。
教改模式實施后,學生的學習方法得到的豐富,學習主觀能動性得到提高,學習能力也得到了加強。這樣為后繼專業(yè)課程的學習打下更加扎實的基礎,使教師的教學更加容易開展。學生的能力與自信心增加后,參加各類比賽的獲獎率大幅提升,如2016年“藍橋杯”省賽一等獎獲獎人數為5人到2018年一等獎獲獎人數增加到12人。國賽也有4人獲得了二等獎。報考軟件工程師的比例由2016年的5.4%增加到2017年16.2%。
五、結束語
通過以學生為中心的《數據結構》課程教學的探索和實踐過程中,深刻感受到,老師不僅僅只是教授知識,而且還要在教授知識的方法上,手段上也要與時俱進,同時還要想辦法提供各種教學資源,同時激發(fā)學生學習動力,培養(yǎng)學生動手能力,使得以后的《數據結構》課程的教學效果越來越好。
參考文獻:
[1]郝宗波.數據結構課程教學改革探討[J].計算機教育,2011,02.
[2]黃博軍.任務驅動教學法在“C語言程序設計”課程中的應用[J].襄樊職業(yè)技術學院學報,2007,03.
[3]李春葆.數據結構教程(第5版)[M].清華大學出版社,2017,05.
[4]李華群,曾惠芳.提升獨立學院“算法與數據結構”課程教學質量的探討[J].教育與職業(yè),2008,12.
[5]揭安全,李云清,楊慶紅,等.數據結構實踐教學體系的設計與實施[J].計算機教育,2010,09.