摘要:從C語言在教學體系中的地位及其特點出發,在分析高校教學實際的基礎上提出了C語言教學中以實驗教學改革促進課堂教學的觀點,結合專業特點,通過由淺入深的漸進教學和積極引導培養學生的學習興趣,激發學生學習的積極性,從而帶動整個C語言課程教學,提高教學效果。
關鍵詞:C語言;實驗;教學改革
作者簡介:呂風杰(1973-),男,山東沾化人,濱州學院計算機科學技術系,講師;馬士明(1983-),男,山東濱州人,濱州學院計算機科學技術系,助教。(山東濱州256600)
基金項目:本文系濱州學院教學研究資助項目(項目編號:BZXYJYXM200737)的研究成果。
中圖分類號:G642.423#8195;#8195;#8195;#8195;#8195;文獻標識碼:A#8195;#8195;#8195;#8195;#8195;文章編號:1007-0079(2012)10-0118-02
C語言以其結構化、靈活性好、可移植性強、效率高等優點被廣大院校理工科專業選為程序設計的入門課程。[1]隨著應用型人才培養改革的不斷深入,學生培養目標和教育教學理念也不斷更新,但自進入高校課堂20余年來,受傳統應試教育的引導,大都將授課重點放在C語言的基本語法的理論講授上,而實驗教學大多用于C語言的語法規則的驗證和說明,這種教學模式僅從語言的使用這個單一的角度進行教學而使得大多數學生在學完之后吃不透、用不活所學語言知識。面對這種形勢,原先的實驗教學計劃已遠不能滿足要求,如何從培養學生能力的角度出發優化實驗教學內容,使實驗教學與理論教學形成一個目標明確、由淺入深、緊密聯系的有機整體已成為當前C語言教學中的迫切性問題。本文從C語言的特點出發,對如何在當前課時、實驗資源有限的情況下,通過實驗教學促進、完善課堂教學效果,培養學生實踐能力、創新能力和應用能力進行了深入的探討與實踐。
一、改革實驗教學內容
在應用型人才培養模式下,實驗教學的組織要兼顧實踐性與創新性。我們在原有教學大綱的基礎上,根據電子信息類專業的特點重新修訂了實驗大綱,教學內容中提高了設計性和綜合性實驗的比例。
1.改革實驗內容組織結構
為了不影響專業教學計劃,又能保證實驗教學改革的順利進行,我們結合理論教學進度,編寫了相對開放的實驗教學大綱和講義,將實驗分為基礎性實驗、設計性實驗和綜合性實驗三個層次,又將每個層次的實驗內容分為必做和選做兩類,以供不同專業按要求進行靈活選擇。根據理論教學進度安排基礎性實驗,讓學生熟悉編程、調試環境,掌握基本指令并學會簡單編程,加深對課堂理論教學內容的理解;在單元章節之后安排設計型實驗,采用任務驅動教學法,驗證性與應用性實驗相結合,在完成基礎性實驗的基礎上,逐步豐富功能要求,并要求學生在實驗報告中加以總結歸納,培養學生的綜合思維能力;綜合型實驗其實是一個開放性試驗,安排于每個知識單元或模塊(從知識的角度出發,獨立于理論教材編排)完成之后,每一個項目只給出具體的功能及性能要求,對具體方法不作要求和指導,并將一個實驗課題分為設計、調試、總結、改進等幾個進程,先由學生根據題目要求完成功能設計并通過調試,再由教師根據學生的設計從功能及性能方面進行有針對性的分析講解,進而提出設計建議,然后由學生完成設計改進并寫出實驗報告及分析總結,以達到實踐性與創新性的同步提高。
2.創新實驗內容
目前,高校教學過程中所用教材及參考書大都以普教為目標,極少有針對專業或行業的例題和習題出現,而各高校開設的C語言實驗教學內容恰恰大多為所用教材或參考書的習題。這類經典習題專業針對性差,對學生來說缺乏趣味性,用以進行功能驗證尚可,但對于能力提高或創新教育的確是勉為其難了。而且隨著網絡等學習資源的普及使得問題的解決極為簡單,學生僅需上網搜索一下即可得到完整答案,于是實驗課程就成了簡單的驗證,很難起到鍛煉和提高的作用。
為此,我們專門針對電子信息類專業的特點精心設計了實驗內容,基礎性實驗采用經典案例,針對性強,利于學生的入門學習;設計型和綜合型實驗盡量選擇與學生專業相關的項目,如數字濾波的實現、數據分析與驗證等。這樣一方面能夠貼近學生所學專業,使學生不但學會了C語言,而且使得C語言有了“用武之地”;另一方面,在實際學習過程中,能夠將學過的其他專業知識融入進來,提高了學生的興趣及學習積極性,對其他專業課程的學習以至學生的學習風貌與學習態度起到了積極的推動作用。
二、改革實驗教學模式
隨著各高校對高等教育應用型人才培養改革的不斷深入,各專業的教學內容有了較大幅度的修改和增加,在實際教學安排中“C語言程序設計”的理論與實踐課時都進行了一定程度的壓縮,為保證實踐教學效果,在組織教學時進行了一些改革。
1.推行任務推動教學
隨著計算機技術的應用與發展,C語言作為各理工科專業的程序設計入門課程,其培養方向應該是掌握程序設計及調試的一般方法,所以在實驗教學組織中應以程序設計為主線,有意識地淡化C語言本身語句、語法的介紹,并積極推行典型算法與案例教學相結合的方法,通過精心設計與編排,將復雜枯燥的語法知識分解到每個生動、有趣、實用的程序實例中,把軟件工程學的思想貫穿于算法分析和程序設計的過程中。例如,在每個知識單元開始之前先提出一個典型問題,如“業績提成計算”、“數據排序”等,從問題入手,然后循循善誘,通過任務的分解、解決、綜合逐步加以解決,這樣不但使學生在程序分析與解決中掌握了相關語法,而且程序設計和解決問題的能力也得到了極大的提高。[2-3]
2.突出結構化程序設計特點
結構化程序設計是C語言程序設計的一大特點,而在當前的教材中卻極少涉及到相關的實例,從而使得結構化程序設計在C語言教學中成了一句實實在在的空話。有些學生平時學得很認真,對語法、語句等細節也很熟悉,但碰到稍微復雜一點的編程則無從下手。在教學中,教師應該將現代程序設計的相關理念傳授給學生:一般來講,一個較復雜的軟件??梢园垂δ芊指顬槿舾蓚€典型的小模塊,每個小模塊最終都成為功能單一、結構清晰、接口簡單、容易理解和編寫的小程序,而加工對象——“數據流”就是將這些模塊串接起來的“主線”,只要讓學生掌握了典型的算法就可將這些算法變成像搭積木一樣組裝成相應軟件的算法。
如在學過數組部分后,教師給出一個由計時函數GetTickCount()、格式輸出函數printf()函數、格式輸入函數scanf()一起構成的能夠測試人的反應時間的“反應計時器”函數。在此基礎之上布置學生設計主函數和相關函數,通過調用“反應計時器”函數完成兩個個體各一組樣本的采集(如各采集并存儲10個獨立的反應時間),并計算各自平均值、標準差等指標;進而進行t檢驗,對個體差別進行分析驗證。這樣不但使學生學會了相應的算法實現,而且對結構化程序的靈活性和易于擴展等特點及工程應用中的程序設計方法有了較為深刻的理解,同時對工程數學中較為“死板”的統計與檢驗內容的實際應用有了一個感性的認識,達到了實踐能力與創新能力共同提高的培養目標。
另外,在教學過程中,教師還應有意識地總結歸納一些典型算法,并作為驗證型實驗內容,要求學生熟練掌握,如累加、累乘、查找、排序等,在后續設計型和綜合型實驗中將相關內容加入,使得學生能夠用會、用活,為以后的程序設計奠定基礎。同時,典型算法的熟練掌握也可增加學生學習計算機語言的信心,并提高學習興趣。[4]
3.充分利用多媒體及網絡教學平臺
多媒體課件具有演示直觀、動態性強等特點,易于被學生所接受和理解,尤其對于實踐教學,多媒體課件能夠進行直觀的演示與模擬,滿足了實驗教學的要求,把難以理解的內容或不容易觀察到的事物用多媒體充分顯示出來,調動學生的視覺直觀功能,為突破難點創造出良好的氛圍,有效地彌補傳統教學的不足。
運用網絡教學平臺進行課后習題的布置與討論,引導學生提出問題并找尋解決方案。一方面,充分節約了課堂教學時間,緩解了課時不足帶來的影響;另一方面,能夠將更多的學生吸引到問題的分析與討論中,“討論出真知”——相對課堂教學而言,網絡討論擴大了討論的參與面,能夠最大限度地窮盡并糾正學生在問題理解過程中可能出現的問題,極大地提高了學生的學習積極性與學習效果。
4.強化實驗教學過程管理
C語言是一門實踐性很強的課程,除了要把理論知識學好外,上機實踐也是相當重要的一個關鍵環節。學習中存在的疑點或難點,學生可通過上機調試得到明確解答,同時也加深對學習內容的理解。對學生而言,在每一次的上機前應做好充分準備,編寫好上機內容;對上機中出現的問題應能調試分析,編寫實驗報告,分析程序結果。學生只有反復上機操作才能對C語言有更深、更全面的認識和理解,逐步提高實際操作和學習的能力。對教師而言,應精心設計上機實驗內容。設計上機內容時,盡量把所學的內容綜合起來,達到知識的系統化。同時,也可布置一些趣味性較濃的內容,以提高學生的學習興趣,變學生的被動學習為主動學習。另外,上機內容盡量結合學生專業,讓學生覺得學有所用。
三、改革實驗教學評價模式
注意綜合素質的培養與評價,在“C語言程序設計”期末考核中采用實驗與理論考核相結合、平時成績與期終考核成績相結合的綜合考核評價方式,并采用實驗教學成績一票否決的形式,從而改變學生在以往課程學習中“重理論,輕實踐”的思想,激發學生學習的積極性與自主性,尤其在創新性培養上。具體做法是摒棄原先那種以對錯判分的一刀切的評價方式,在平時教學中對學生實驗完成的成績評判要采用個案分析的方法,在充分理解學生設計意圖的基礎上因勢利導,對設計中的創新之處或閃光點要給予充分的肯定;對不足和錯誤之處要幫助學生仔細分析,然后由學生自己總結改正,以提高學生的自信心,保護其學習興趣,最后根據學生的完成情況及鉆研態度進行綜合評判。
四、總結
任何一種程序設計語言都有其獨有的語法特點,作為程序設計入門課程的“C語言程序設計”也不例外,但是,應該認識到在高校C語言教學中,學習語法不是學習程序設計語言的真正目的,而是應該在掌握語法的基礎上,通過學習與實踐,真正地學會使用C語言來解決各種實際問題,進而使學生掌握程序設計思想,真正成為學生進入程序設計領域的“敲門磚”、“導航燈”。通過對近兩年的學生期終理論考試成績對比分析發現,改革前后對于語法部分的得分率沒有明顯變化,而綜合編程題的得分率比以前有了大約25%的提高,且學生學習的積極性比以前有較大的提高,課程結束后不少學生又通過計算機等級考試等各種形式進行了進一步的學習與提高,C語言實踐教學改革取得了理想的效果。
參考文獻:
[1]譚浩強.C程序設計[M].北京:清華大學出版社,2006.
[2]鄭人杰,馬素霞,殷人昆,等.軟件工程概論[M].北京:機械工業出版社,2001.
[3]敖志廣,呂振遼,高克寧.非計算機專業本科生C語言的教學實踐[J].計算機教育,2007,(1):53-54.
[4]林向寶.C語言教學探討[J].黑龍江交通科技,2007,(4):120-121.
(責任編輯:王祝萍)