鄒曉兵
(重慶教育學院計算機科學系,重慶400067)
C#是微軟公司發布的一種面向對象的、運行于.NET Framework之上的高級程序設計語言。它是一種安全的、穩定的、簡單的、優雅的語言,是由C和C++衍生出來的面向對象的編程語言。它在繼承C和C++強大功能的同時去掉了一些它們的復雜特性,比如指針。C#綜合了VB簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優雅的語法風格、創新的語言特性和便捷的面向組件編程的支持成為.NET開發的首選語言[1]。目前很多高校的計算機相關專業都開設了《C#程序設計》這門課,但是采用的教學方法仍然是傳統的教學方法,學習過程中主要強調基本語法,沒有將學生的能力培養放在首位。其次,學生在學習《C#程序設計》之前大多學習過C語言,C#語言和C語言在內容上有很多相似之處,但是也有很多內容差異較大,比如數組、類、結構體等。因此,如果在《C#程序設計》這門課程中仍然采用傳統的教學方式,學生容易將C#與C語言混淆,而且需要重復一些基本的語法知識,達不到學習C#的真正目的。在傳統的教學模式中,也有一些項目或實例,但是這些項目或實例是分散的,學生學習起來也是孤立地,缺乏系統性和對課程整體的把握。有許多學者已經對項目教學法進行了研究[2-6],本文主要討論項目驅動教學法在《C#程序設計》課程中的應用。
項目驅動法來源于建構主義學習理論[7]。項目驅動教學法,就是運用構建主義的思想,并將整個學習過程分解為一個個具體的工程項目,設計出一個個項目教學方案,并認真設計出教學思路,不僅傳授給學生理論知識和操作技能,更重要的是培養他們的職業能力,這里的能力已不僅僅是知識能力或者是專業能力,而是涵蓋了如何解決問題的能力[8]。
項目驅動教學法是一種靈活多樣,且生動的教學方法,它打破了傳統的教學觀念,對學生進行全方位的培養,使學生從被動的學習知識轉變為主動地探索知識。在這種模式中,關注的重點是學生的能力培養,而不是知識本身。教師的任務是根據學生已有的知識、經驗和專業,選擇適合他們的項目,然后對學生進行指導,讓學生置身于探索知識的情境中,從根本上解決傳統教學中的滿堂灌。學生在學習過程中通過對項目的分析、設計和實現,從而將理論和實踐進行有機結合,學生在學習過程中由被動的知識接受者轉變為主動參與者,而且通過項目的實現即既可以提高學生分析問題、解決問題的能力,又可以增強他們的自信。
《C#程序設計》是一門實踐性很強的專業技能課,該課程注重的是學生能力的培養和提高,因此,改革傳統教學方法,在《C#程序設計中》合理運用項目驅動教學方法,以全面提高學生的分析問題和解決問題的能力、創新能力、團隊協作能力等。
在項目驅動教學中,項目是核心,整個教學過程都圍繞項目展開。學生通過學習,可以體會實際項目的開發過程,可以為以后的實際項目開發積累經驗。因此,項目的選擇將直接影響教學效果。
首先,項目要具有一定的代表性,最好是和學生生活、學習相關的一些項目。只有選擇學生感興趣的項目,學生的學習積極性才高,參與意識才強。選擇項目前,教師必須仔細分析學生的情況,比如已有的基礎知識、專業技能、實際動手能力等。選擇項目時,根據學生的實際情況選擇難度適中的項目。如果項目太簡單,達不到培養學生能力的目的;如果項目太難,學生學習時難于完成項目規定的任務,就會失去學習的動力和興趣。根據學生的情況和學校的實際背景,我們可以選擇“圖書館管理信息系統”作為教學項目(當然也可以選擇其它的項目,只要能讓學生在學習知識的同時,能力得到提高就行)。選擇該項目的目的是學生對圖書的借閱流程熟悉,而且該系統所涉及的知識包括軟件設計的需求分析過程、系統平臺的搭建、系統實施、系統調試,在系統的具體實現過程中將用到C#語言的主要知識,包括窗體設計、基本語法、類、數據庫編程等相關知識。學生通過該項目的學習,即可以掌握C#的基本知識,又可以培養其分析問題和解決問題的能力,尤其是可以提高學生開發實際項目的能力。
其次,對項目進行合理分解,以檢驗項目及其內容設置的合理性。C#涉及的知識較多,從基本語法、類的定義、類的繼承與多態、窗體設計、控件使用、數據庫連接與訪問到文件的輸入輸出。因此,在選擇好項目后,就需要重點考慮如何將項目分解為多個小模塊,使得每個小模塊恰好能夠覆蓋C#的一個知識點。這部分工作主要檢驗項目的合理性和內容的適當性。將項目分解為多個小模塊后,每個模塊對應相關的知識點,它既能檢驗項目內容是否覆蓋了相關的知識,又能對項目的合理性進行檢驗。在這部分工作中,如果發現項目的不合理部分,或者項目內容沒有覆蓋主要知識,就需要對項目內容適當調整,從而保證知識覆蓋的全面性。在項目的分解過程中,也不一定非要將相關的知識都放到一個模塊中??梢愿鶕W生的基礎和已學的內容將一個知識點分布到幾個小模塊中。這樣,學生通過各模塊的學習,既掌握了相關的理論知識,又增強了學生的成就感,從而提高了學生的學習興趣,充分調動了學生學習的激情。
最后,對學生進行分組,以培養學生的團隊協作能力。一般來說,一個完整的項目涉及的模塊多,結構復雜,此時就需要多人合作完成一個項目。在項目驅動的教學中,教師事先已經選好了一個項目,為培養學生解決實際問題的能力,仍然提倡讓學生自己選擇項目。學生首先采取自由結合的方式進行分組,然后教師根據分組的情況進行小范圍調整,調整時需要考慮優差生的搭配。為保證教學的順利實施,組數不能太多。
在課堂教學一開始,教師從軟件工程的角度講解軟件開發的五個階段,每個階段應該做的工作,然后引導學生分組選擇項目。教師一定要注意引導學生選擇和他們密切相關的項目。這個階段看起來與我們的教學矛盾。既然我們已經選擇了項目,就可以根據項目模塊的劃分,學生在教師的指導下完成項目,這也是絕大多數項目驅動教學的采用的方法[9-11]。但是這樣做沒有體現出“以生為本”的思想,學生還是以被動接受為主,學習的主動性不能得到有效的提高。針對這一問題,我們倡導讓學生自己找項目,然后分組討論,在多個項目中選擇比較合理的項目。在討論中對學生提出的觀點予以肯定,并對一些比較好的觀點進行鼓勵,并從中發現教師事前準備項目存在的一些不足。在討論和確定項目的過程中,教師要盡量引導學生選擇教師事前準備的項目。項目確定后,引導學生對項目進行模塊劃分,并討論劃分的合理性和科學性,覆蓋知識的全面性,最終確定出項目的小模塊。
傳統的教學模式是教師先講理論,然后學生上機操作。由于學生在理論課前沒有相應理論知識的感性認識,導致上機時教師又要重復相關的理論。為此,我們探索了一種先上機,后理論的教學方式。這種教學方式讓學生先上機,完成項目中的相應模塊,在完成模塊的過程中,學生就可以了解模塊中涉及的相應知識,以及他們對該部分知識的掌握和理解情況,教師也可以通過學生的上機情況了解學生存在的問題,以便在理論教學中強調相關知識。在這種教學模式中,學生是主體,教師是主導。學生總是帶著問題來學習,通過這種不斷強化和訓練,既可以提高學生的實際動手能力,又可以培養學生分析問題和解決問題的能力。在項目的實現過程中,教師應該對問題進行適當延伸(比如數據庫操作部分對表和視圖的操作處理判斷等),以培養學生的創新能力。

表1 考核評價標準
傳統C#程序課程的考核方式主要是紙質試卷,考核學生對基本語法的掌握情況。項目驅動教學是以培養學生的能力為主,強調對學生分析問題、解決問題能力的培養,而傳統考核方式關注的是學生對書本知識的掌握情況,很少關注學生的實際能力。為更好的測試學生對C#程序的掌握情況,可以將測試分為5個部分:(1)出勤;(2)小組合作情況;(3)各小模塊完成情況;(4)答辯;(5)期末考試。每個部分考核的內容和權重如表1所示。由表1的評價內容和評價方式可以看出,通過這種評價,學生參與度較高,從而保證了考核的公正、公開和公平,并且評價結果能夠真實反映學生的實際能力。
傳統的教學方法已經不能適應專業技能課的教學,它制約了學生分析問題和解決問題能力的培養,而項目驅動教學方法更加關注學生分析問題和解決問題能力的培養,同時關注學生創新能力的培養。本文對項目驅動教學法在《C#程序設計》中的教學模式進行了探索,提出了以生為本的教學模式,以一個完整的項目為教學主線,相對獨立的小模塊為教學內容,先上機后理論的教學方法。從而提高學生的學習主動性,增強學生的主體意識,避免了傳統教學中的被動學習模式。
[1]崔群法,唐有明,王俊偉.Visual C#2008從入門到精通[M].北京:電子工業出版社,2009.
[2]吳立春.項目教學法在高職《辦公自動化》教學中的應用[J].重慶教育學院學報,2008,21(3):135-136.
[3]蔣述東.高職旅游管理專業建構項目課程體系的思考[J].重慶教育學院學報,2010,23(3):45-47.
[4]王荻.項目驅動教學探索[J].2007,36:17-18.
[5]沈維政,蘇中濱,趙潔.項目驅動教學法在Java語言程序設計教學中的應用[J].東北農業大學學報(社會科學版),2010,2:66-67.
[6]陸蕓婷.基于工作過程的《數據庫基礎》課程教學設計[J].中國科技信息,2009,15:269-270.
[7]王明金.基于構建主義的項目教學法的拓展[J].安徽科技學院學報,2010,24(3):73-75.
[8]胡必波.項目驅動教學法應用研究[J].合作經濟與科技,2008,14:77-78.
[9]陳玉發.項目驅動教學法在《Visual Basic可視化程序設計》課程教學中的應用[J].時代教育,2010,12:57.
[10]袁桂霞.“C語言程序設計”課程創新教學法研究[J].中國電力教育,2009,151:131-132.
[11]張志杰.“項目驅動教學法”在高職程序設計類課程教學中的應用[J].山西經濟管理干部學院學報,2009,17(4):111-113.