李 妮
(運城學院 公共計算機教學部,山西 運城 044000)
C語言程序設計課程項目教學實踐
李 妮
(運城學院 公共計算機教學部,山西 運城 044000)
在C語言程序設計課程中應用項目教學法突破了傳統的教學模式,將理論知識的學習與應用能力培養有機結合.根據應用目標的要求,項目課堂教學過程分解為三個階段,課程內容和項目案例也分解為三個層次模塊有效地配合項目課堂教學.
C語言程序設計;項目教學法;應用能力
在信息爆炸的知識經濟時代,信息技術的普及要求現代工作者能夠在解決實際問題時具備更多的信息技術技巧及能力.如何提高學生利用信息技術表述、分析問題和解決問題的能力,培養創新型和應用型人才成為高等教育的重要目標之一.
傳統的教學方法很難滿足信息化社會應用型人才的培養要求.因此,近二十年來,世界各國都在探索新的教育教學法或教學模式,特別是以培養實踐能力為核心的項目教學法.由于項目教學法對于充分發掘學生的創造潛能,并促使其在提高動手能力、組織能力等方面起著十分重要和有效的作用,它在基礎教育、職業教育、高等教育和成人教育中得到了廣泛的應用,對教育的發展產生極為深刻而廣泛的影響.
基于建構主義的項目教學法與傳統的教學法相比,有很大的區別,主要表現在改變了傳統的三個中心,由以教師為中心轉變為以學生為中心,由以課本為中心轉變為以項目為中心,由以課堂為中心轉變為以實踐為中心.項目教學法突破傳統的教學模式,可以在增強學生的動手能力、思變能力、探究能力、創新能力和社會能力的同時,又能構建一個開放性、研究性的學習環境,并可使學生以足夠的空間,按自己的方式去進行研究性的學習.
非計算機專業的C語言程序設計教學多用傳統教學法.傳統C語言程序設計教學,經常會出現課堂上學到的理論知識與實踐脫節,教師用例過于理論化,學生很難用學到的知識解決實際問題.這正是教學方法不注重能力培養,學習背景沒有嵌入實際情景而造成的.
項目教學法能夠使理論知識與應用能力培養有機結合[1].教學過程中,師生通過共同學習理解、分解并逐步實施一個與現實緊密結合的小型項目進行教學活動.它實質上就是一種基于建構主義學習理論的探究性學習模式,強調知識意義和能力建構性,強調協作學習,在不斷解決問題、實現階段任務中完成對知識的意義建構.根據信息技術課程特點,采用項目教學法,增強學生的動手能力、思變能力、探究能力、創新能力和社會能力的同時,構建一個開放性、研究性的學習環境,使學生以足夠的空間,按自己的方式去進行研究性的學習.
項目課堂教學的內容是由知識和項目一步步分解而來,知識重構和項目內容的選取是否在難度、復雜度上適合學生,項目子內容或子案例是否分解的正確合理,這些因素決定了項目教學內容的合理性及實施效果.項目的完整程序很容易地能夠建立起來,但是也遇到了一些問題:項目案例是綜合性的程序設計,很難將項目案例程序合理分解為較小的課堂用例[2],融入到授課過程中;在課堂教學中,往往只選取一個主要的項目案例與課程內容結合,學生從中獲取的實踐經驗不夠,能力提高不顯著.
為了有效地實施項目教學法,應將項目與課程的內容相結合,分階段分層次實現.依據“應用入手,學中建,建中學;分解項目,逐步深入與完善”的項目教學思想[3],將課堂教學過程分解為三個階段,將項目和課程內容也分解為這三個層次模塊配合項目教學三個階段的學習.
初級階段的知識模塊主要是結構化程序設計基礎,包含C語言程序設計課程的基本知識、基本數據類型及其定義與操作、程序的基本結構.初級階段的項目模塊包括設計項目軟件系統的初級界面、軟件菜單主界面的優化——實現人機交互、開發編寫某些二級菜單軟件界面和軟件菜單主界面的循環顯示等.項目教學初級階段的過程如下:
第一次理論課是對C語言程序設計課程的總體介紹,為了讓學生對項目教學方法有大致的了解,教師應選擇簡單的項目例子,向學生展示C語言在生活中的應用,例如學校信息管理系統、工資管理系統和超市商品管理系統等.介紹項目的功能,項目開發的總體過程,并要求學生以小組為單位[4]選擇一個合適的項目共同去完成.教師需要提供一些項目案例供學生自由選擇,學生也可以根據自己的興趣自擬題目.要求學生課下根據自己選擇的項目進行市場調研并寫出需求分析.教師通過實驗報告了解每個小組的項目調研情況,給出修改意見,學生繼續對項目的設計做修改.
通過對基本數據類型和程序的基本結構的學習,教師總結教學項目案例中項目軟件系統界面的設計特點,要求學生根據要設計項目的風格,設計項目軟件系統的初級界面.學生模仿教學案例中的程序,討論界面的內容并編程實現.教師檢查每個小組的項目程序,給出修改意見,小組討論后繼續完善程序.接著進一步對軟件菜單主界面進行優化:實現人機交互、軟件主界面的循環顯示等.
教師將此階段的項目成果進行點評,并在教學博客上展示優秀的項目程序.
中級階段的知識模塊主要是模塊化程序設計基礎,包含函數的編寫和調用、變量的作用域與生存期的運用.中級階段的項目模塊包括軟件功能模塊的劃分、實現軟件系統各級菜單的顯示、選擇、循環實現、優化某些功能函數設計,設計合理的全局變量等.項目教學中級階段的過程如下:
教師通過分析幾個典型的教學項目案例,總結函數的特點,運用模塊劃分方法定義合理的軟件項目模塊功能,講解系統模塊結構圖的畫法,分析各模塊功能及函數功能.學生通過初級階段對項目的調研,綜合分析系統功能,討論軟件功能模塊的劃分,并在實驗報告中畫出系統模塊結構圖,詳細描述各模塊功能及函數功能.每個組內的成員都要分擔一部分功能模塊的實現,從中體會多人合作開發軟件的方法.教師通過參與小組的討論指導學生,給出必要的提示.
要實現每個功能模塊的選擇實際上就是實現軟件系統中各級菜單的顯示、選擇、循環等操作.教師選取項目案例講解系統中各級菜單的操作過程,例如怎樣通過鍵盤的選擇,從主菜單進入二級菜單;若想返回主菜單重新選擇,主菜單怎樣重新顯示等.主菜單中的每個選擇項都是一個功能模塊,若有下一級的菜單,是對功能模塊更小的劃分.教師選擇幾個項目案例中的多個功能模塊進行分析并編程實現,講解項目中函數和變量的使用,以及如何對項目模塊獨立調試和綜合調試等.項目小組共同完成系統的主菜單部分,其中每一個菜單項由組內成員對自己項目模塊獨立調試并分別編程實現,最后將所有功能模塊進行綜合調試.教師檢查每個小組的項目程序,提出修改意見,學生繼續對整個項目程序進行優化.通過教學博客展示各小組的項目程序,小組間進行相互的學習,并提出優點和改進意見.
高級階段的知識模塊主要是復雜數據結構和程序設計方法,包含數組、指針、結構體、文件的操作和應用.高級階段的項目模塊包括利用數組和指針設計、優化每個功能模塊的函數,利用文件存儲數據,利用結構體再次優化項目程序.項目教學高級階段的過程如下:
結合批量數據的輸入、操作、存儲和輸出,教師對教學項目案例進行再次優化,對以前項目程序進行改寫,講解如何利用數組和指針設計、優化每個功能模塊的函數,利用文件存儲數據的方法.這部分是項目教學的難點,教師需要指導學生利用數組和指針,采用不同的方法對項目程序進行改進.小組討論后,每個組員對自己承擔的那部分功能模塊進行修改,最后將所有功能模塊進行綜合調試.
結構體數據類型可以把有邏輯聯系的多種類型的數據結合在一起,可以對項目程序進行再次優化.教師講解如何用結構體來重新設計實現數據字典中的數據結構,并用此數據結構來優化并完善程序.小組討論后,采取統一的結構體數據類型,每個組員對自己承擔的那部分功能模塊進行修改,最后將所有功能模塊進行綜合調試.
教師將最終的項目成果在博客上展示,并對項目教學效果進行評價.評價結果由三部分組成:各小組對組員的評價、小組間的相互評價和教師對學生的評價[5].
非計算機專業計算機基礎教育體系課程的教學應注重學生從實際中尋找問題、解決問題,提高實踐能力和情感的培養,項目教學方法在C語言程序設計課程中的應用,提高了學生掌握并具備運用信息技術解決工作、生活中問題的能力.
〔1〕孟朝霞.C語言程序設計課程項目教學目標建設與實踐[J].中國科技信息,2010(04).
〔2〕李妮,孟朝霞.案例教學法探討——在非計算機專業本科生《C語言程序設計》課程中的應用[J].中國科技信息,2008(11).
〔3〕孟朝霞.C語言課程的應用性目標模型[J].運城學院,2009(01).
〔4〕李妮.小組合作學習教學探討[J].運城學院,2007(05).
〔5〕李妮.大學計算機基礎.課程中的項目教學法實踐[J].運城學院,2009(01).
G642
A
1673-260X(2011)10-0242-02
2009年山西省普通本科高等教育教學改革研究項目(2009309);運城學院科研項目(JY-2009004)