汪赫瑜
摘要:《數據結構》是計算機專業的核心基礎課程,也是一門實踐性很強的課程。在《數據結構》課程教學中,結合實際項目對教學方法進行了改革,讓學生在教師的組織引導下,通過完成項目,更好地掌握所學知識,把理論知識更好地應用于實踐,取得了良好的教學效果。
關鍵詞:項目;教學方法;教學效果
中圖分類號:G642.41 文獻標志碼:A 文章編號:1674-9324(2016)19-0147-02
一、引言
數據結構是一門學科,主要針對非數值計算(如表、樹、圖等)的程序設計問題,研究計算機的操作對象以及它們之間的關系和操作等[1]。同樣的數據對象,用不同的數據結構來表示,運算效率可能有明顯的差異。好的程序設計必須要采用好的算法,同時還要有好的數據結構。《數據結構》這門課程在計算機及相關專業本科生的教學計劃中起著承上啟下的重要作用,同時學好本門課程可以為其他專業課的學習打好堅實的基礎。
二、傳統教學存在的主要問題
在以往的教學中,老師一般都偏重概念,忽視思想,脫離應用,照本宣科,沒有從思想和過程上將算法闡述清楚;對利用數據結構和算法解決實際問題講解太少,使得許多學生認為《數據結構》是純理論課程,只重視理論學習而輕視實踐。
數據結構這門課程相對而言抽象內容比較多,算法理解相對困難。特別是一些理論知識比較抽象,在教學過程中無法將其直觀地表現出來。比如樹和圖的抽象數據類型的定義中,數據關系的描述;再如圖的關鍵路徑算法、最短路徑算法,要理解這些思想都比較困難,給教學帶來了一定的難度[2]。
“C語言程序設計”是“數據結構”的前導課程。但很多學生對多維數組、結構體、指針這三種數據類型的認識和理解不深,尤其是缺乏對函數的遞歸調用及遞歸過程的理解。這些內容是數據結構課程的重要基礎和必備知識,在數據結構課程中使用頻度相當高。很多同學編程能力差,這都導致了數據結構課程的教學效果不理想,部分學生信心受挫,對數據結構這門課產生抵觸情緒。
課程考核方式單一。當前數據結構考核主要就是期末筆試考試,造成許多學生為考試過關而學,并不注重自身能力的提高,造成大部分學生在學完課程后連簡單的程序設計都無法完成。這種背離教學培養目標的現象已嚴重阻礙了數據結構課程的良性發展。
綜上所述,許多高校在講授數據結構這門課程時,遇到的一系列問題,我們應該尋找行之有效的方法加以解決。
三、項目驅動教學模式[3]
為了解決數據結構教學過程中存在的主要問題,提出了一種基于“項目驅動”的教學法,該方法是實施探究性教學模式的一種教學方法。它是將所學知識隱含在一個或幾個項目當中,在學科學習中,“項目驅動”教學法以問題作為載體,創設一種類似科學探究的情景或途徑,引導學生學習新的知識,并讓學生自主通過已學的知識,分析問題、完成項目,并通過項目再更好地理解所學知識,做到融會貫通,既培養了學生的實踐能力又鞏固了已學的知識。
(一)教學方法
采用“基于項目驅動”的教學模式,主要就是通過“項目”的提出,將學生帶入思考環境中,從而引出需要解決“項目”中問題的方法——新的知識點,通過新知識點基本功能的講述,實現所提出的“項目”的基本功能,接著引導學生思考如何去完善這個“項目”,從而引出新知識點的全部功能或各種用法,使學生在主動思考中自覺地接受知識這樣一種教學模式;將傳統模式中以教師為中心、學生被動地聽,以講述知識點為主、理論與實際嚴重脫節的教學方式,改變為以學生為中心、通過學生主動思考,來引導學生探索新知識,設計項目從而使理論與實際相結合,來激發學生的學習興趣,培養學生解決實際問題的能力。學習、思考、動手相結合,相輔相成,老師引導學生邊學邊做,小組成員協作完成相應的學習任務,實現“學中做”、“做中學”,使學生不會覺得所學知識枯燥無味,還能更好地理解一些復雜的問題。讓學生真正掌握知識和相應技能。
(二)教學組織過程
在教學手段上重點知識主要以多媒體技術為依托,制作高質量的多媒體課件,突出教學內容的重點,對難理解的算法采用圖形設計和動態演示的方式形象地表示出來,加強學生對抽象問題的理解,用以擴大學生的編程思維能力。
在教學過程中除了對重點知識進行講授之外,還對實際項目進行系統分析,定期安排小組進行研討,每個小組分階段給出項目需使用的主要理論知識,需完成的主要功能,以及在實現時遇到的主要困難,整個過程中以學生為主,教師為輔,引導學生完成項目。
(三)考核方式
數據結構是一門理論與實踐結合非常緊密的學科,針對這一特點,我們采取的考核方式從傳統的筆試,改為以監督學生的學習過程為主的方法,主要從三方面進行考核。
1.平時成績。平時成績主要包括平時課堂表現,上機實驗的完成情況,作業完成情況,小組研討時的表現進行評價,平時成績占總成績的25%。
2.綜合項目成績。綜合項目中設置了3個項目,內容涵蓋線性表、棧和隊列、樹、圖、查找和排序等知識。根據學生撰寫的文檔質量、學生設計的軟件的功能完善情況、演示及答辯,明確每個學生所做的工作,綜合評價每個小組成員對所做項目的貢獻度。綜合訓練成績占總成績的45%。
3.期末考試成績。期末閉卷考試考核學生對本課程的綜合理解與掌握的情況,采用選擇、填空、綜合應用等多種題型進行考核,內容涵蓋數據結構主要知識點:算法時間復雜性、空間復雜性分析、線性表、棧和隊列、串、數組和廣義表、樹、圖、查找和排序等內容。期末閉卷考試成績占總成績30%。
四、綜合項目的設計與實施
《數據結構》這門課程主要講授線性結構、樹形結構和圖形結構三種結構,所以針對重點內容主要設計三個項目進行訓練。每個項目只給出基本功能,要求學生查閱資料,分析需求,盡可能多地完成功能。
(一)項目設計
1.線性結構綜合項目。線性結構是最基礎,也是最重要的一種結構,通過此項訓練讓學生掌握線性結構的知識;要求編程實現XXX管理系統,使學生掌握線性結構的存儲(順序存儲和鏈式存儲)及相關算法設計(錄入、修改添加、刪除、查找、排序、統計等)。充分運用所學知識,以及對所設計項目需求的充分理解,設計功能完善的系統。
2.樹形結構綜合項目。樹形結構是一種非常重要的非線性結構,它用于描述數據元素之間的層次關系,通過此項訓練讓學生掌握樹形結構的知識,使學生重點掌握樹與二叉樹的建立、轉換,二叉樹的存儲和遍歷,和二叉樹相關的一些運算。
3.圖形結構綜合項目。圖形結構是一種比樹結構還復雜的非線性結構,該結構的應用極其廣泛。通過此項訓練讓學生掌握圖結構的知識;使學生重點掌握圖的存儲和遍歷及圖的各種應用實現;重點是關鍵路徑、最短路徑、最小生成樹的實現。
(二)項目實施
把學生按每小組5人進行分組,組內同學共同設計完成訓練項目。根據教學的進度,每個項目大約設計5~6周,每周安排答疑和上機時間,并在設計過程中根據需要在上課時安排小組研討。每個項目完成后,每小組要提交書面文檔(主要包括問題定義、問題分析、設計思路、主要的數據結構、功能模塊圖及函數的定義及功能等);實現的軟件設計提交電子文檔;最后通過答辯檢驗學生的綜合知識掌握的程度,明確在項目完成過程中每個學生所做的工作,同時組內成員要互相講解自己完成的部分,使得每個學生都能完整地掌握項目設計的全部內容。
(三)效果評價
采用“基于項目驅動”的教學模式進行教學,教學效果的評價主要通過驗收綜合訓練的結果。主要有三部分組成,一是學生書寫的文檔,包括問題定義、問題分析、設計思路、功能模塊圖、功能描述、運行結果以及分析組成;二是學生設計的軟件,通過演示了解完成的具體功能,尤其是了解除了給出的基本功能之外又完成了哪些附加功能;三是通過答辯了解每個學生所做的工作,以及對小組其他成員所做工作的學習情況;最后通過分析學生每個綜合訓練的最終成績來評價此教學方法的效果。
對于每一個項目來說,每個小組的文檔部分完成情況良好,內容完整,描述清楚。軟件實現從正確性、完整性、可讀性、可理解性、可修改性、靈活性及操作方便性等方面綜合評價。學生們針對報告的設計思路能夠做到很好的實現,但都存在功能考慮不全的問題,主要原因是需求分析做的不夠好,很多功能學生們都想不到,但通過訓練使學生們得到充分的鍛煉,編程能力有很大地提高。答辯部分主要看學生們回答問題的準確性和完整性,通過學生們回答問題及講解主要算法,反映學生對算法的理解和掌握情況良好,解決具體問題的能力都有很大提高,同時還提高了學生們的語言表達能力。
總體來說,采用基于項目的教學方法改革取得了一定的效果,學生們都能充分重視和認真對待每個項目,培養了學生們的團隊精神,從而合作完成設計及實現。
五、結語
將實際項目應用到數據結構的教學中,激發學生的求知欲和自主學習的積極性。讓學生將課堂上學到的知識直接應用于具體項目,能夠使學生更好地理解理論知識,并能提高學生的實際動手能力。為后續課程的學習和科研工作的參與打下良好的基礎。經過此教學方法的改革達到了很好的教學效果,學生們掌握本課程的知識情況比往屆學生要好,得到了廣大同學的認可。
參考文獻:
[1]嚴蔚敏,吳偉民,等.數據結構C語言版[M].北京:清華大學出版社,2007:22-23.
[2]游靜,李寧,徐守坤.數據結構教學問題的思考[J].時代教育,2008,(10):147-146.
[3]徐雅斌,周維真,施運梅,劉旭紅,凌濤.項目驅動教學模式的研究與實踐[J].遼寧工業大學學報(社會科學版),2011,(13):125-127.