謝水連
摘要:《C語言程序設計》是地方高校非計算機類專業學生很重要的一門專業基礎課程。該課程可以使學生具備當今社會所需的基本計算機編程能力,培養學生思維能力,提高學生綜合素質。然而,目前地方院校的《C語言程序設計》教學存在諸如教學效果低下,學生興趣不高等種種問題。本文結合地方院校特點,嘗試從教學方式,評價手段等角度對該課程教學改革提出一些建議。
關鍵詞:C語言;教學方式;評價手段
中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2017)05-0199-02
當今社會是信息社會。社會發展的需求,使得計算機成為當代眾多新型技術中發展最快、應用最廣的一項技術。經過幾十年的發展,計算機已經逐步深入到社會的方方面面,改變了人們的生產方式、工作方式以及娛樂方式等。對當代大學生而言除了掌握基本的計算機基礎知識及各種辦公軟件,如word,ppt,excel外,掌握一門高級程序編程語言也是至關重要的。所以許多地方院校理工類的學生除了學習計算機基礎知識外,都再選修一門程序設計。程序設計的語言種類很多,如visual foxpro,visual basic等。但各高校一般選擇的是更為基礎的C語言程序設計。C語言具有許多其他程序語言無可比擬的優點,其語法結構簡潔精妙,寫出的程序性能高效,算法描述通用直觀。C語言如果能夠學好,對掌握其他語言的基本思想,編程理念,算法設計都有非常大的幫助。另外,雖然C語言是面向過程的高級程序語言,但是對于它的掌握也有助于學習各種面向對象程序設計語言,如當今流行的C++,Java等新型語言。對于某些衍生自C語言的程序語言,只需簡單學習相應語法即可迅速上手,如大型科學計算語言,Matlab。雖然各地方院校和學生對這門課普遍重視,但是該課程教學仍然存在很多問題,直接表現為教學效率低下,學生興趣不高。
一、存在的問題
筆者多年從事C語言程序設計的教學,發現在教學過程存在如下一些問題。
1.理論性強,枯燥無味。C語言程序設計課程理論性、實踐性和應用性很強,其數據結構復雜,知識點繁多,內容本身枯燥無趣。對于絕大多數非計算機專業學生而言,C語言程序設計只是一門了解程序設計基本原理、編程基本步驟、算法設計基本思想的一門公共基礎課。所以很多老師對這門課的教學也主要從語法出發做理論介紹。然而近年來大學的大規模擴招,地方院校的很多學生基礎較為薄弱,尤其是有些學生連基本的計算機知識都沒有。教師雖然很用心,花上整堂課講授各種數據類型的語法、表達式以及函數等知識,但是學生幾乎對這些標識符和概念完全沒有感覺,不知道這些符號的意義,更談不上思考如何應用于編程過程,因此很容易對這門課產生厭學的心理。另外,部分專業老師仍然采用講數學課的方式教授程序設計。數學課的教學方式與計算機課的思維理念十分不同。數學課有一些直觀的例子可以想象,只是介紹數學定理和概念,學生依然可以想象理解所學的內容。然而計算機課就不一樣,以教數學的方式教計算機學生只會聽的云里霧里,疲于記住各種定義,語法,卻又無法真正有體會理解。
2.輕視實踐,偏重驗證。理論部分投入過多的時間,在有限的課時下,不可避免地壓縮實踐課時的時間。對于這樣一門極其偏重應用的課程,如此方式的教學意義幾乎不大。C語言程序設計必須是通過大量的調試,犯錯,改錯才能夠對那些基本語法有深刻的理解。以嘉應學院應用數學專業的C語言教學為例,該專業是師范專業,C語言課時較少,平均每周三節。上課方式采取2+1的方式,即每周一次理論課,兩周一次上機課。老師講得較多,所演示的案例往往也是與教學相關的典型案例。然而學生缺乏大量時間去動手練習,雖然學習了基本語法,但是卻未學到編寫程序的基本思維,根本無法編寫程序解決實際問題,學習效果不佳。在最后的學生評價環節也往往通過一個期末筆試決定學生最終的成績。這種考核方式的弊端在于試卷中有大量的選擇和填空,少部分編程。對于那些成績優異的學生,可能他們只對基本概念了解透徹,并不能反映他們真正掌握了C語言的內涵。實踐和編程才是這門課的根本。
二、教學改革措施
基于以上教學過程中的種種問題,我們可以從以下幾個角度對地方院校的C語言課程進行教學改革。
1.教學內容和方式。在理論教學方面。C語言教學內容大致包括數據類型,表達式,基本輸入輸出,分支選擇結構,循環結構,函數,數組,指針等。考慮到師范專業一般這門課的學時較少,在上課的時候無需追求大而全。現在各所高校一般選用譚浩強的《C程序設計》這本公認的學習C語言程序設計的經典教材。但是對于初步掌握編程基本思想而言,無需把整本內容講完,事實上講到數組就差不多夠用了。應該花大量時間介紹基本語法、算法設計以及具體的實現。在講授每一個章節時,可以聯系其他學科,尤其是在數學中的應用。比如在講數組時,可以聯系數學中的矩陣相關計算。在講循環結構的過程中,也可以引導學生用C語言去解決簡單的數值計算方法中的計算,如Jacobi迭代,Gauss-Seidel迭代求線性方程組等。
在實踐環節方面。傳統的上機實踐教學模式中,教師一般會給出一個上機實驗內容,通過講解、示范、演示后再讓學生操作一遍。這種方式學生不易犯“錯誤”,但限制了學生對問題的思考。而程序設計就是要發現、總結大量錯誤,提高經驗值,才能在未來的編程道路上得心應手。因此應該盡可能總結歷年的學生實驗情況,以及各種計算機等級考試常見的學生語法錯誤,有針對性地設計實驗內容讓學生動手操作。引導學生修改程序,讀懂程序錯誤提示,提高學生實踐水平以及動手能力。加強學生舉一反三的能力培訓,讓實踐教學反哺理論教學,使學生對理論有更深層次的理解,并能夠自己學習后續章節。進一步,使學生能夠閱讀程序理解程序所表達的意義。培養學生良好的程序編寫習慣和風格,注重程序注解的說明。
2.教學評價方面。現在一考定成績的方式,常使學生產生學習過程、知識理解不重要,把基本語法背下來即可蒙混過關的思想。于是將所有精力放在了最后幾周集中學習。這就導致了在學期開始一些基本的語法錯誤,老師上課講過多遍學生一直無法接受。而一旦前面基礎沒有打好,后面的程序語言幾乎無法進行,這使得教師的教學過程難度加大。所以要針對教學成績評定方式進行改革,扭轉學生錯誤觀念,例如,將成績評定方式定為考試與考察相結合、開卷與閉卷相結合,除傳統期末考外,尤其要重視平時隨堂小測驗在最后總成績中的比重。另外加大實踐環節的成績比重。可以以實際問題為背景,在學期末設置一個稍微大型的綜合性實驗。例如學生信息管理系統,學生成績管理系統,圖書館圖書管理系統等。這些系統幾乎會適用到整個C程序各種變量的定義,函數的應用以及子函數的調用等。另外還可以培養學生初步的算法設計的思想。將這種稍微大型問題拆分為若干小問題,引導學生在課后通過小組研究、網上或圖書館搜索資料、軟件構建模型等途徑解決,自己獨立編寫小模塊,使學生在探索實踐的過程中學會C程序基本知識及應用,這也是教學改革的最終目的。這種方式也有助于培養學生團結合作的品格。不同的學生所設計的系統可能功能差不多,但程序的可讀性、穩健性、可用性、友好性都有差別,可以使學生互相學習提高。
三、結論
通過上述討論可以發現,傳統的C語言程序設計教學形式已經不能夠滿足現階段教學實際要求,在當今各高等院校普遍注重實踐型和應用型教育的背景下,對其進行教學改革是時代進步和學科發展的必然選擇。編程理念是授課和學習的最終目的,所以教學改革也應以此為目標,從課堂教學、實踐課程及成績評定等角度進行針對性的完善和改革,以此提升課堂教學效率。
參考文獻:
[1]蔡曉麗.陳舜青,丁志云,計算機C語言實驗教學改革探討[J].電腦知識與技術,2010,(5):4191-4192.
[2]余冬梅.基于C語言的計算機語言類課程的教學方法研究與實踐[J].現代計算機,2010,(8):67-69.
[3]譚浩強.C程序設計[M].北京:清華大學出版社,2014.
[4]譚浩強.C程序設計題解與上機指導[M].北京:清華大學出版社,2005.