摘要:從《C語言程序設計》課程在教學和實踐環節普遍存在的若干問題出發,分析了問題的成因并提出從理論教學和實踐教學兩大方面入手的一些改革策略,以提高學生綜合應用能力。這些策略分別是對理論教學內容上合理布局、問題探究式教學法的應用、因材施教,進行差異教學、實踐教學內容的合理整合、及對學生編程與調試能力的培養等改進策略。
關鍵詞:理論教學;問題探究式教學法;實踐教學模式;因材施教
一、引言
《C語言程序設計》課程是高校重要的基礎課程,它通過Visual C++6.0的運行環境,將高級語言程序設計的思想和方法直觀的展現在學生面前。學生通過對該課程的學習,不僅熟練的掌握了《C語言程序設計》的基本語法和數據結構,更重要的是在實踐中逐步掌握了《C語言程序設計》課程中算法的設計與實現,為學生將來能自主的分析問題和解決問題打下堅實的基礎。
《C語言程序設計》課程是學生學習使用計算機的高級語言進行編程的第一門公共基礎課程,也是大學本科學生進行計算機二級考試中設置的計算機編程語言之一。其教學質量的高低是衡量一所學校整體教學質量的重要依據。因此,改革《C語言程序設計》課程的授課體制,使學生由被動的接受轉為主動的學習。
如何增強學生的邏輯思維能力、獨立設計與調試程序的能力,自主創新能力是《C語言程序設計》課程教學改革研究的重點。
二、現行教學中存在的問題
1.理論教授方式的不當導致學生的學習問題。按照傳統的教學模式,教師上課時主要采取邊講授、邊演示的方式,學生總是處于被動接受的狀態,所以教師講授時如果把握不好教學知識點的難易及各知識點之間的相互關系,就很容易讓學生感到該課程知識點散亂,枯燥無味。學生們只是在感觀上理解教師所教授的內容,但并不真正掌握編程的技巧和方法,學習的積極性和主動性較差。因此,如何提高學生學習的積極性,從被動接受轉換為主動學習,是需要解決的首要問題。
2.實驗題目選擇不當產生的學生動手能力差的問題。《C語言程序設計》課程的實驗普遍為“命題型”實驗,教師根據講授的內容,指定幾個實驗題目要求學生完成,以此來驗證所學內容中的一、兩個重要的知識點。這種“命題型”實驗雖然對學生熟悉知識點和掌握簡單的程序設計技能有益,但也存在致命的缺陷。首先,“命題型”實驗之間無連續性,這就導致學生在做完本學期的十二個實驗之后,依然不知道如何去編制一個完整實用的程序,沒有一個整體的設計思路;其次,“命題型”實驗的實驗結果往往是唯一確定的,若實驗結果與預期不符,就意味著學生的程序有錯誤,這種實驗設計對培養學生的創新能力是百害而無一利的,它扼殺了學生的學習興趣與主觀能動性,學生成為老師的提線木偶;再次,這種相互獨立的實驗很難保證實驗內容的完整性,使得學生有一種“只見樹木不見森林”的感覺。同時,由于學生數量相對較大,教師難以經常接觸和詳細了解大部分學生,導致缺乏對每個學生綜合應用能力的客觀而準確的評價。針對上述問題就需要教師對現有教育方法、講課內容、重難點有針對性地進行改革。通過對課程教學、實驗教學上的改革,使得學生在牢固掌握理論基礎知識的基礎上,再加強對編程能力、調試能力培養。
三、教學改革中采取的對策
1.理論教學內容上合理布局。目前,《C語言程序設計》課程的教學內容比較偏重C語言語法知識的灌輸,教學用例組織缺乏前后照應,個別用例不太適合當前大學生的知識背景,不適合非計算機專業學生理解和消化。因此,如何精選教材、合理安排教學內容是教師備課和授課的重點,一名優秀的教師應該重視教材,但又不能盲目的依賴教材,更不能照本宣科。因為各個專業的學生對于程序設計應用的領域和深度的要求都有所差異。因此,教師首先需認真研究教材,掌握教材中各章節的要點及聯系,濾清線索。然后,在充分理解和熟練掌握教材的前提下,結合各專業學生的實際情況,對教材內容進行優化設計,重新整合。譬如對《C語言程序設計》的語法內容以夠用為標準,不要面面俱到,對不常用、難理解的語法不作重點闡述,只需教會學生今后需要時如何去查找即可。對于學生應該掌握而教材中沒能詳細闡述的內容,教師應在備課時通過查閱大量的相關資料,予以適當、適度地補充,并選擇些典型的有代表性的用例來展示其應用,這將有助于學生對所學內容的整體理解和掌握,使學生獲得全面合理的知識和規范系統的編程理念。
在教學內容上,改變傳統的先語法后編程的教學模式,注重算法的講解,首先以“啟發式”教學法來提出問題,引導學生按高級語言設計的思路分析問題,強調其與純數學領域的分析方法的差異,并寫出算法步驟,然后再基于C語言的語法規則編寫代碼。語法規則貫穿與問題實例中講解,通過C語言常用語法規則在具體程序中應用,將語法規則展現在學生面前。使學生在“用中學,學中用”。實踐證明,這種“注重算法,在用中學語法”的教學方法,增強了學生自主分析問題和解決問題的能力,也大大調動了學生學習《C語言程序設計》課程的積極性。
2.“問題探究式”教學法的應用。鑒于《C語言程序設計》課程在培養自學能力、創新能力中的作用和學生對程序設計高級語言知識掌握的差異較大的事實,互動探討的模式在教學中特別重要,由此“問題探究式”教學法適應課程特點,既有效改善填鴨式教學模式,又重視了學生自然存在的基礎差異,尊重個性。其特點是以學生為中心,以“問題”為線索,通過對“問題”的思考、探究,最終得出解答,完成既定的教學任務。
要想課堂教學的互動性好,就要將學生的積極性調動起來,讓學生跟著教師的思路去思考、去質疑。而“問題探究式”教學法是抓住學生思路的最佳教學法。例如在介紹程序設計的分支結構時,為了讓學生能更好的理解分支結構類型的算法的設計,就以他們熟悉的求ax2+bx+c=0二次方程的根的問題入手,請學生回憶數學上的求解公式并試圖用C表達式書寫出來。很快學生就得到了a>0時的兩個實數根的C表達式。緊接著詢問學生a<0或a=0時的解該如何求?學生們踴躍發言,得出答案。教師可將三種情況寫在黑板上,要求學生將三種情況連起來。學生們思考后就會提出用if語句將它們連起來。教師再將學生們的想法以流程圖的形式畫在黑板上。鼓勵學生說,你們真厲害,算法已經讓你們給想出來了,學生們非常高興。師生在輕松愉快的氛圍中了解了算法。接著教師可以要求學生在實踐課上將程序調試一下,同時又讓學生們想想如果在執行時可以反復的計算各種不同系數的二次方程的根應該如何實現?讓他們課后預習循環結構,為循環算法的講解打下個伏筆。整堂課都由問題貫穿始終。讓學生通過解決一個個的問題里掌握知識點,并在潛移默化間學會了分析和解決問題的方法和思想。
同時教師可以借助多媒體演示基本內容和實例,將重點、難點在黑板上板書講解,既避免了黑板教學信息量小和無法動態演示程序的問題,也解決了多媒體教學中交互性內容缺乏和被動大量灌輸信息的問題。也可以將一些平時學生易出錯、易混淆的問題提出來組織課堂討論,引導學生深入的思考和提出解決方案。如可能的話,在課堂上抽出幾分鐘,讓學生上臺把自己的想法講給大家聽也是一種很好的自主學習的方法。這樣可以迫使學生養成課下查閱大量的相關資料的好習慣,從而提高學生自主學習的能力。
3.因材施教,進行差異教育。“因材施教,差異教育”策略在教學過程中起著重要的作用,根據學生的個體差異,有針對性的調整授課內容和進度,使學生能在最短的時間內以最佳的狀態掌握所教授的知識。首先,在課前應對學生的心理和前序課程的設置情況有個初步的了解。其次,要精心安排授課內容。課堂內容一定要遵循由淺入深、由簡單到復雜的過程。動不動就分析程序代碼的教學模式只能讓學生喪失對這門課程的興趣。教師授課時應當邊分析問題邊書寫代碼,并通過講述或引導學生理解每條語句或每個模塊的意義,盡量做到最直觀的教學效果。最后,精心設計課堂教學的每個環節。譬如課堂用例要盡量貼近學生的實際生活,使之能產生濃厚的興趣;作業要給學生留有思索和發揮空間,不宜過多、過大;講課過程中要多注意學生的反饋,并隨時調整授課的節奏和內容;IT領域是一個更新極快的領域,新知識、新觀念層出不窮,這就要求教師將它們及時補充到教學中去,以適應社會的需求。
4.實踐教學內容安排要難易結合。實踐教學是培養和提高學生編程能力最好的手段,安排學生自主學習,在沒有教師的講解和引導下探究解決問題的方法。因此絕不能簡單地把學生帶到機房,而應讓學生帶著問題上機,在上機前,應對每一節實踐課要完成的任務和目標一定要十分清楚。上機題目的難易程度一定要適中。題目過難學生將無從下手,感到茫然,喪失學習興趣,甚至厭惡上機;題目過于簡單,又會使部分學生提前做完無所事事,浪費寶貴的實踐機會。因此,實踐內容的安排對于實踐課程非常重要,直接關系到學生的編程能力能否通過實踐課程得到提高。前幾個實踐內容應安排簡單一些或者教師上課時的例題。激發學生的學習興趣去完成下一個題目。中間的幾個實踐題目安排一些教材上或一些經典例題的改編題目,鍛煉學生的應用能力,從例題入手模仿其設計算法進行設計,既回憶了教學內容又提高了編程能力。最后用于提高的題目由多個知識點綜合組成,達到鍛煉學生綜合應用的目的。同時在實踐過程中驗證性實踐題目、綜合性實踐題目、設計性實踐題目要同時并進,尤其是對綜合性實踐和設計性實踐要學生給出詳細的實踐方案后才可以進入實驗室,教師只是引導和輔導作用。
5.實踐課程學生分組學習,小組討論。在實踐課程中,教師在布置完實踐題目后,如果學生自行練習,教師只忙于解答單個學生提出的問題,而忽視了總體性的指導。上機人數又多,學生在遇到問題時往往得不到教師的及時解決,于是消極怠工,不再全身心的認真完成實踐題目。針對這種情況,教師可以在上課前將班級的學生分成若干個小組,每組選派一個能力較強的學生作為組長。當學生遇到問題時,可以先同組內的成員進行討論,這樣就鍛煉了大家解決問題的實際能力。如果學生遇到的問題在組內解決不了時,教師就可以有針對性的對這一組的學生進行講解,這樣這一組的學生就都學到了新知識或解決問題的方法。對普遍出現的問題,教師可以通過投影對全班學生進行講解。
6.調試能力與編程能力并重。通過對學生實踐課程的觀察發現學生普遍存在的問題是調程時遇到問題之后不知道如何解決,不知如何修改程序,致使程序無法正常運行,從而產生挫敗感,甚至放棄編程。因此,提高學生調試和處理錯誤的能力迫在眉睫。首先教師可以注意觀察學生在實踐環節中經常出錯的現象,在上課舉例時故意也犯一下這些錯誤,讓學生根據錯誤提示信息進行查找,進行修正,從而引起學生的重視。其次可以給學生一些二級考試的改錯題,讓學生試著修改,并記錄下來調試時遇到的困難及解決方法。日積月累學生的調程能力就慢慢提高了。
四、結束語
理論和實踐相結合是學好《C語言程序設計》課程的關鍵。理論學習是實踐的基礎,實踐又能使理論得到鞏固和深化。本文通過對傳統的理論教學和實踐教學中存在的問題的剖析,提出了“問題探究”教學法的應用、“啟發式”教學法的應用、因材施教、課堂分組討論和實踐內容的調整等教學改革策略,其目的是為了提高學生的編程能力和自主創新能力。
參考文獻:
[1]張建珍.C語言教學方法研究[J].計算機教育,2007,(9).
[2]王欣如,李芝興.程序設計課程與探究式教學方式[J].計算機科學,2009,(7).
[3]行龍.引入研究性教學理念著力提高教學質量[J].中國大學教學,2007,(9).
[4]程建軍,陳曉云,馬志新.程序設計語言課程的增量式教學改革與實踐[J].吉林大學學報,2005,(8).
[5]陳娟,張長海.“高級語言程序設計”教學探討[J].計算機科學,2009,(7).
基金項目:2012年河海大學校研究性教學示范課程《C語言程序設計》(2012-412074)