謝莉莉 李 勤 傅 春 張榮新
文章編號:1672-5913(2009)07-0023-04
摘要:本文在分析高職“C語言”與“數(shù)據(jù)結構”兩門課程傳統(tǒng)教學的弊端及相互關系的基礎上,探究將兩門課程有機地結合為“C語言與數(shù)據(jù)結構”的教學改革措施。改革采用重建任務驅動教學法和情境教學法,以C語言為工具,在完成任務的同時應用和設計數(shù)據(jù)結構。實踐證明,兩門課程的結合更有利于激發(fā)學生的學習興趣,提高學習效率,培養(yǎng)學生的程序設計能力、程序閱讀能力及數(shù)據(jù)結構的應用設計能力,教學效果良好。
關鍵詞:C語言;數(shù)據(jù)結構;任務驅動;情境教學
中圖分類號:G642
文獻標識碼:B
1引言
“C語言程序設計”與“數(shù)據(jù)結構”是工科院校計算機專業(yè)中開設的兩門重要的專業(yè)基礎課。在以往教學中,這兩門課程是相對獨立、分開授課的,因此導致內(nèi)容脫節(jié),教學效果差。一般“C語言程序設計”課程只注重C語言的語法體系,因此學習過卻不能用C語言編寫程序的大有人在;后者則注重講授抽象的數(shù)據(jù)關系和算法在計算機中的表示及實現(xiàn),學生在紙上能寫出抽象描述算法,上機實踐應用時卻無從下手。然而這兩門課程都以培養(yǎng)學生解決實際問題的程序設計能力為共同目標。因此,如何將這兩門課程有機地結合起來,構建C語言與數(shù)據(jù)結構的新體系,改革教學方法,提高教學質量,成了當前教學改革中亟待解決的問題。
2教學改革背景
在傳統(tǒng)的教學模式下,“C語言程序設計”與“數(shù)據(jù)結構”這兩門課程分開教學,人為地割斷了它們之間的內(nèi)在聯(lián)系。C語言程序設計的學習僅局限在語言語法的層次上,而數(shù)據(jù)結構難度較大,學生不能結合C語言運用到實際中去。通過不斷探索,我們認識到這兩門課程有很多內(nèi)在聯(lián)系,比如“數(shù)據(jù)結構”討論的抽象數(shù)據(jù)關系和算法要用C語言去實現(xiàn),因此就將這兩門課程整合為“C語言與數(shù)據(jù)結構”一門課程,在一個學期內(nèi)完成授課內(nèi)容。
為了更好地開設“C語言與數(shù)據(jù)結構”課程,提高學生分析和解決問題的能力,我們采用了任務驅動教學法。教師把教學內(nèi)容設計成一個或多個具體任務,學生自主學習,教師引導、幫助學生完成學習任務。該方法強調的是學生置身在這些有意義的任務模式中,通過完成任務來學習知識,強化技能,使學生提出問題、分析問題、解決問題的能力得到提高,因此不同于以往教學中出現(xiàn)的“注入式”、“填鴨式”教學模式。
在采用任務驅動法[1]講授“C語言與數(shù)據(jù)結構”過程中我們認識到,雖然“任務驅動”教學法相比傳統(tǒng)的灌輸式枯燥課堂有讓人耳目一新的教學風格,受到了廣大學生的歡迎,但也存在一些缺陷:
(1)“任務驅動”教學法中的任務常常存在庸俗化與片面化的傾向,將任務等同于傳統(tǒng)講授課中的練習或作業(yè);課程片面強調對軟件操作技能的訓練,忽視了對學生信息素養(yǎng)的提升。
(2) 實際教學中,能力、意識、興趣、反應速度各有差異的同一班學生對同一任務的反應各不相同,任務設計的把握成了現(xiàn)實操作中的“瓶頸”,課程標準中提倡的“關注全體學生”成了句空話。
(3) 學生只能被動地接受教師設計提出的“任務”(問題),即使培養(yǎng)了學生的解決問題能力,卻忽略了培養(yǎng)學生發(fā)現(xiàn)問題能力這一先決條件,不利于創(chuàng)新精神的培養(yǎng),純粹成了為“問題”而解決“問題”的作業(yè)式教學。
3課程設計思路
本課程的設計改變了以往“C語言程序設計”和“數(shù)據(jù)結構”分開的模式,而是以C語言為主線,將各種類型的數(shù)據(jù)結構糅合其中,使C語言與數(shù)據(jù)結構有機地結合在一起。這不但解決了數(shù)據(jù)結構中的算法描述問題,而且在算法的實現(xiàn)過程中用C語言進行程序設計,兩者相輔相成,互相促進。學生更好地掌握最常用的數(shù)據(jù)結構,理解數(shù)據(jù)結構內(nèi)在的邏輯關系,理解數(shù)據(jù)與關系在計算機中的存儲表示以及用C語言描述這些數(shù)據(jù)結構的運算和實際的執(zhí)行算法,提高了解決實際問題的程序設計能力,適應了學科迅速發(fā)展和知識更新的需要。
針對教學改革背景中提到的“任務驅動”教學法的缺點,我們對其進行重建,設計開發(fā)“C語言與數(shù)據(jù)結構”。該課程改變了教師提出任務的做法,讓教師通過創(chuàng)設情境、作品演示等各種方式激發(fā)學生的興趣,啟發(fā)學生在自己已有知識的基礎上發(fā)現(xiàn)問題、提出問題,產(chǎn)生自發(fā)的主動任務,進而為完成這些任務而“需”、“需”才“索”、“索”才“教”,由傳統(tǒng)的“教學”變?yōu)椤扒髮W”、“索學”。學生在教師或同伴的指導與協(xié)助下,在發(fā)現(xiàn)問題——提出問題——分析問題——解決問題的過程中得到清晰的思路、方法以及知識的脈絡,既提高了創(chuàng)新能力,又提升了程序設計能力。
學生的學習過程是:在教師的激發(fā)下,思考“我想做什么”——“我立即能做出什么”——“我如何把它做得更好”,由傳統(tǒng)的被動學習變?yōu)橹鲃犹剿鳌?/p>
教師的教學任務是:激發(fā)——答疑——再激發(fā)——再答疑。因學生的“索”才教,由原來的主動變?yōu)楸粍?,但這個良性的循環(huán)需要教師的把握與維持。
4“C語言與數(shù)據(jù)結構”課程的教學改革措施
目前,傳統(tǒng)的“C語言程序設計”和“數(shù)據(jù)結構”[2]相結合的教學模式主要有三種:一是添加式,即在傳統(tǒng)的“C語言程序設計”的基礎上添加幾章“數(shù)據(jù)結構”的內(nèi)容,這種方法操作簡單,容易實現(xiàn),但由于“數(shù)據(jù)結構”的課時少,而且教師只抽象講解幾種數(shù)據(jù)結構模型,學生無法根據(jù)實際題目設計和應用各種數(shù)據(jù)結構,學習效果不理想。二是獨立式,兩門課程保持原來的課時不變,學生分兩學期學習,不可避免地造成工具(C語言)、理論(數(shù)據(jù)結構)和應用(任務)的脫節(jié),達不到預期的教學效果。三是整合式,將兩門課程的知識融合在一起,整合成一門課程,以各個知識點為單元,同時介紹C語言和數(shù)據(jù)結構,將這兩門課程很好地結合起來,達到最佳的學習效果。
我們在實踐教學中探究了將兩門課程有機結合的方法。下面分別從整體設計和單元設計兩方面介紹該課程的設計。
4.1整體設計
以C語言為工具,在任務的驅動下,讓學生在學習C語言知識點的同時學習和應用數(shù)據(jù)結構。在課程內(nèi)容[3][4]安排上,表1展示了課程劃分的四個工作任務模塊,每個模塊設計相應的任務強化訓練,使學生達到技能目標和知識目標。數(shù)據(jù)結構知識點遞進圖如圖1所示。
4.2單元設計
單元設計采用情境教學法,課堂教學都是在一定的情境中發(fā)生和發(fā)展的。良好的情境產(chǎn)生良好的情緒,情緒表達出主體的狀態(tài)和客體的態(tài)度。情緒好則腦子靈,腦子靈則反應快,這才能較好地發(fā)現(xiàn)、理解、掌握和運用知識。
下面以第一單元為例講解“重構任務驅動法”的實施過程。課程創(chuàng)設問題情境,啟發(fā)學生思考“如何用C語言與計算機打交道”,“用計算機語言(C語言)和計算機交流”。教師介紹編譯和調試C語言的程序,然后啟發(fā)學生思考“如何在屏幕上輸出想顯示的話語”。圖2展示了教學步驟。
5教學改革成果及小結
實踐證明,將“C語言程序設計”與“數(shù)據(jù)結構”兩門課程有機結合的教學改革,能夠很好地激發(fā)學生的學習興趣,有效地提高學生的學習效率。學生在掌握基本理論和知識的同時,C語言的程序設計能力、程序的閱讀能力、數(shù)據(jù)結構的應用設計能力也得到了很好的培養(yǎng)。
教師在教學中貫穿了“C語言”和“數(shù)據(jù)結構”兩條主線,將兩門課程整合在一起,以任務驅動進行整體設計;采用“情境教學法”和“重建任務驅動法”進行單元設計。課堂設在實驗室,采用教、學、做一體的形式開展課堂教學。這樣提高了教學效率,使學生的技術應用能力、職業(yè)實踐能力和創(chuàng)新能力得到較好的培養(yǎng),教學效果良好。
參考文獻:
[1] 黃博軍. 任務驅動教學法在“C語言程序設計”課程中的應用[J]. 襄樊職業(yè)技術學院學報,2007,(3):68-69.
[2] 周成義等. C語言與數(shù)據(jù)結構課程的整合探究[J]. 遼寧高職學報,2005,(4):60-61.
[3] 許秀林. 程序設計基礎教程[M]. 北京:中國電力出版社,2005.
[4] 譚浩強. C語言程序設計(第二版)[M]. 北京:清華大學出版社,2000.