摘要:針對高校非計算機專業C語言教學中存在的問題,探討了C語言課程教學的改革思路和方案,提出了“創新教育、理論實踐、個性指導、能力培養”的教學理念。實踐表明,該理念能夠強化學生主動學習的意識,達到提高C語言教學效果的目的。
關鍵詞:C語言;非計算機專業;教學改革
作者簡介:陳偉宏(1976-),女,湖南益陽人,湖南城市學院信息科學與工程學院,副教授;何建新(1975-),男,湖南益陽人,湖南城市學院信息科學與工程學院,高級實驗師。(湖南 益陽 413000)
基金項目:本文系湖南省普通高等學校教學改革研究項目(項目批準號:湘教通[2011]315號345)、國家級大學生創新創業訓練計劃項目(項目批準號:教高司函[2013]8號7112)的研究成果。
中圖分類號:G642.0 文獻標識碼:A 文章編號:1007-0079(2013)34-0101-02
隨著計算機技術的發展,計算機與其它學科的結合越來越緊密,C語言程序設計已經成為我國高校非計算機專業學生的一門必修課。作為普遍認可的程序設計工具,C語言功能豐富、靈活性強,兼有高級語言和低級語言的特點,是一種面向過程的結構化程序設計語言。[1]該語言適合沒有程序設計經驗的學生了解程序設計思想、學習程序設計方法。但是,C語言非常抽象,邏輯性和實踐性都很強,學生普遍反映難學,如果以傳統授課方式對非計算機專業學生進行教學,難以達到理想的效果。因此,本文以高校非計算機專業學生為研究對象,積極探討C語言課程的教學改革思路,提出“創新教育、理論實踐、個性指導、能力培養”的教學理念,并形成行之有效的C語言教學實施方案。
一、C語言教學現狀分析
C語言是一種通用性程序設計語言,大多數高校非計算機專業是在大一下學期開設該課程,其先修課程是“大學計算機基礎”。C語言課程的教學目標是:掌握語言的基礎知識和程序設計方法,培養學生程序設計的基本能力;教學重點是培養學生的實踐編程能力。傳統的教學方法中,先講概念,然后介紹語法,最后講解例子和上機練習,這種教學方式不利于將知識轉化為能力。C語言很枯燥,即使上課弄懂了語法知識,但是要獨立完成程序的編寫經常感到無從下手。根據教學情況,目前C語言教學普遍存在以下幾個問題:[2]
1.學習目的不明確,沒有學習興趣
有的學生認為,C語言課程是針對計算機專業的學生開設,而非計算機專業的學生學習C語言對以后的學習和就業沒什么幫助,所以沒有興趣。有些愛好計算機的學生認為C語言程序設計編程效果沒有Visual Basic、Java等程序設計語言那么直觀,總想超前學習當前流行的一些開發工具。甚至有少數學生死記硬背,感覺枯燥無味,進而失去學習興趣,達不到理想的學習效果。
2.對編程的邏輯思維不熟悉
作為高校非計算機專業學生的一門必修課,C語言程序設計內容多,邏輯思維嚴密。而他們還是大一學生,還只學過計算機基礎課程,沒有形成編程的邏輯思維方法,對C語言的語法、程序編譯與調試等都不熟悉,導致出現學生學習困難的情況,容易產生兩級分化。
3.語法繁瑣,興趣不濃
C語言語法知識點多,語法格式要求相對嚴格,有常量、變量、運算符、三種程序設計結構、函數、指針等。要寫出正確的程序,首先要掌握這些語法知識,然后需要流暢的思路。大多數C語言教材先給出一般的語法格式,然后講解語法要點,然后舉例說明。如果教師按照這種模式授課,繁瑣的語法很容易讓學生厭倦,再加上程序設計偏離實用性,學生沒有興趣,最后的教學效果可想而知了。
4.實踐教學環節薄弱
C語言是一門實踐性很強的課程,高校非計算機專業的C語言程序設計教學環節包括隨堂實訓和實驗兩部分。由于C語言課時少,內容多,因此隨堂實訓的時間少。對于實驗內容,通常教師布置與語言教材知識點相符的任務,容易出現與解決實際問題脫節的現象。以往的課時設置一般理論課時大于實驗課時,這也是影響學生實踐能力弱的一個重要原因。如何加強實踐環節、培養學生的編程能力是教學改革的一個重點。
二、C語言教學改革思路
多年來,筆者和科研團隊成員一直從事C語言課程的教學工作,并對該課程進行了深入研究和實踐,形成以學生為中心、以案例教學為手段、以網絡學習為補充、強化學生主動學習和實踐能力培養的改革思路。
我校是一所地方本科院校,以培養應用型高級專門人才為宗旨,因此,結合C語言課程特點,定位我校非計算機專業C語言課程的教學理念為:創新教育、理論實踐、個性指導、能力培養。也就是,以創新教育為最高目標,堅持理論與實踐相統一,加強學生的個性化指導,注重學生面向應用解決實際問題能力的培養。C語言的創新教育不是要學生發明一種新技術或新方法,而是在教學過程中不斷發揮學生主動應用C語言程序設計手段解決實際問題的意識和能力。[3]理論實踐是指教材上的理論知識只有通過實訓或實驗等手段,才能真正掌握并能在實踐中應用,達到理論與實踐的統一。對于個性指導,根據學生的計算機水平不同,采取實驗內容分層設置等方式,通過靈活多樣的教學手段培養學生;用優秀學生的示范效應激勵一般學生,利用大多數學生積極向上的學習氛圍帶動少數后進生不斷提高。能力培養是目標,這里的能力是指C語言編程能力及利用C語言工具解決實際問題的能力,可以通過大學生的創新項目、程序設計競賽、社團活動、實驗實訓等形式提高學生的實際動手能力。本文在提出的教學理念指導下,對C語言課程在教學方法、實踐環節、教學手段和教學內容方面進行了合理有效的改革,并在實踐中形成了一套行之有效的教學方案。
三、C語言教學改革實施過程
1.靈活多樣的教學方法
教學是課程學習的首選方式,不同的教學方法直接影響教學效果。
(1)先進的教學理念。C語言是計算機類課程的核心和基礎,也是非計算機專業學生的必修課,其目的是讓學生通過程序設計方法了解計算機解決問題的過程,訓練學生的邏輯思維能力,達到能利用語言工具解決實際應用問題的目的。要讓學生學好這門課,首先老師要樹立先進的教學理念,引導學生自主學習。在教學過程中,把握好三個階段:上好開學第一課、指導好的學習方法、正確引導學習興趣。
非計算機專業學生在開學第一次上C語言課程,他們還只學過大學計算機基礎,這與程序設計課程的學習方法不同,所以在上第一堂C語言課時要介紹課程的教學要求和學習目的,并讓學生結合自己的專業制訂有興趣的學習計劃。有了學習計劃,還要強調自學的重要性。在介紹C語言課程特點時,提出適合不同層次學生的學習方法。當遇到問題時,鼓勵學生學會網絡求助和與同學相互交流,引導學生對知識的探究,培養學生自學和解決問題的能力。
(2)案例教學法。案例教學是一種經典的教學方法,它采用互動模式,以案例分析為基礎,一般要求涉及豐富的知識點,具有針對性、系統性、可實踐性和啟發性。[4]C語言教材內容繁多,有十多章,一般第一章為概述,第二章為語法知識,如果按部就班進行講授,第一節課內容會抽象枯燥,學生容易厭煩。如果通過案例直接引入主題,例如求圓的周長,能盡早讓學生建立程序框架概念,并開始模仿編程。對于這個案例,先用語言描述問題及解決步驟,然后現場在C語言編譯器中輸入代碼、添加頭文件和主函數,再編譯、運行,得到輸出結果,這樣學生通過這個實例認識了程序框架、語句、常量、變量、函數等,這種解題步驟符合人們的思維,容易被理解和接受。
使用案例,還能對教學內容進行適當取舍和組合,起到降低難度、分散重點的作用。例如,循環結構程序設計是教學的重點和難點。對于一個多重循環結構的程序設計,如果引入案例講授,采用手工執行循環和編譯器單步跟蹤調試的方法分析程序,循環體的功能就會變得清晰了。[5]
(3)多種編程方法拓展思維。同一個問題,鼓勵學生采用多種方法編程實現,并讓學生分析它們的不同之處。例如,求1到10的累加和。這是一個很簡單的計算題,但是可以用多種方法實現,如for、while、do while三種不同結構,scanf、gets、getchar等不同輸入輸出函數,變量的不同設置等。學生通過嘗試用不同方法解決問題,不但能加深對知識點的理解,還能鍛煉學生的編程能力,使學生養成積極思考的習慣,做到將所學知識融會貫通。
(4)分層管理,因材施教。根據學生的程序設計水平不同,設置驗證型、綜合設計型和研究創新型三個層次的案例和練習,對學生分層次管理,不同學生選取不同的教學方法;對C語言感興趣的學生,充分調動他們的積極性、主動性和創造性,鼓勵他們進行超前學習;每組選取一個優秀學生為組長,充分發揮優秀學生的示范效應。通過這種方式,優秀學生激勵普通學生,大多數學生積極學習的氛圍感染少數后進生逐步提高,達到自主學習和能力培養的目的。
2.有效的實踐環節
實踐環節包括課內的實訓和實驗,以及課外的創新活動等,其中實驗是檢驗知識綜合運用的重要手段,也是培養學生解決問題能力和創新能力的必要環節。要保證實驗效果,良好的實驗環境是前提,好的實驗方案是關鍵。
一般C語言課程的課內時間非常有限,要進一步培養學生的實踐能力和創新能力,需要充分利用課外時間學習。課外的實踐環節除做課后練習外,還可嘗試如下措施:
(1)鼓勵學生申報大學生創新項目,引導學生參與,提高綜合能力。以生活趣味類和專業應用類為主,列出系列創新課題,供學生選擇承擔,由計算機老師指導完成。
(2)舉辦和參加各類競賽,提高程序設計編程水平和創新能力。ACM程序設計競賽是可選用C語言編程的、在Windows或Linux平臺上進行的面向在校大學生的競賽,目前在我校已全面開展。我校先經過初賽、復賽選拔一批優秀學生參加ACM程序設計競賽培訓,然后每隔一段時間,參加培訓的學生還需進行定期考核。如果考核不合格,則建議退出ACM團隊,否則繼續學習。通過這種多層次、多階段選拔優秀學生方式參加省級、國家級程序設計競賽,我校學生取得了良好成績。
(3)開展社團活動或與專業相結合的創新活動。對于非計算機專業學生,教學中滲透專業特色,課外社團活動中包含程序設計內容,這種方式能讓學生體會學習程序設計的作用,活躍創造性思維和培養創新能力。
3.豐富的網絡資源
隨著網絡通信技術的快速發展,拓展了網絡的時間、空間、形式和內容。目前網絡對每個學生來說幾乎都是無處不在,無時不有,學生充分利用網絡資源學習也是一種有效的方式。因此開發豐富的網絡資源,提供學生自主學習平臺意義深遠。我校學生立項的國家級大學生創新項目“在線學習系統”中,目前已開發了面向非計算機專業的C語言課程資源,包括教學大綱、電子教案、在線視頻、操作案例、實驗指導等,還有師生互動欄目,正在進一步開發在線考試模塊。通過創新型網絡學習平臺,對培養學生自主學習能力起到積極作用。
4.與時俱進的教材
教材建設是課程建設、人才培養的重要組成部分。為適應社會對大學生計算機水平的需求,必須更新教學內容,加強教材建設。建設教材時,要處理好傳統與現代、理論與應用、深度與廣度的關系,更新教材內容,開闊學生視野,跟上當前新技術的步伐。筆者團隊編寫了C語言教材及配套的實踐指導,為培養學生編程能力提供了有力支持。
5.多方位的考核方式
考試是教學過程的一個重要環節,其本質是檢驗學生的學習效果,但僅通過期末考試來衡量學生的水平是片面的,不能真正體現學生的實踐能力和創新能力。為此,非計算機專業的C語言課程考核方式可以采取以下幾種方式:
(1)面向過程的考核。一般情況下,課程的考試成績由“期末考試×0.7+平時成績×0.3”組成。C語言課程實踐性強,其考核方式可以調整為:由理論考試、上機考試和大作業三部分組成,加大實踐操作分數的比重。如果非計算機專業學生通過省級或國家級計算機等級考試,學??芍朴喯鄳撸玫燃壙荚嚦煽兇嬲n程考試成績。[6]
(2)面向項目或競賽考核。學生參加項目或競賽都是培養學生創新能力的重要手段,可將其作為評價學生水平的一個指標。通常情況下,學生立項并結題省級以上項目或者參加競賽獲得省級以上獎勵的,學校也可制訂相應政策免修或代替課程考試成績。必須指出,競賽或項目內容必須與相應課程內容一致或關系密切。
四、結論
教學實踐證明,以“創新教育、理論實踐、個性指導、能力培養”為教學理念,采取案例教學、一題多解、分層管理等靈活多樣的教學方法以及多方位的考核方式。同時建設網絡課程資源和教材,以培養學生自主學習能力,有效提高非計算機專業學生學習C語言的教學效果。
參考文獻:
[1]譚浩強.C程序設計[M].第四版.北京:清華大學出版社,2010.
[2]丁海燕.C語言程序設計教學主線與教學創新[J].高等理科教育,2012,(4):122-125.
[3]龔沛曾,楊志強,顧春華,等.大學計算機實踐能力培養的改革和實踐[J].中國大學教學,2008,(6):16-18.
[4]熊啟軍,寧彬,谷瓊.C語言程序設計課程案例式教學研究及實踐[J].計算機時代,2013,(1):55-56.
[5]王鵬遠,蘇虹.高校非計算機專業C 語言教學改革與實踐[J].計算機教育,2011,(2):15-18.
[6]陳偉宏,吳宏斌,郭賽球,等.非計算機專業公共計算機教學改革探討[J].計算機教育,2012,(24):49-51.
(責任編輯:王意琴)