文章編號:1672-5913(2008)18-0013-01
摘要:本文結合作者近幾年指導本科生C語言實驗的一些經驗,探討了如何在C語言實驗教學中提高學生的綜合實踐能力;并就如何在第二課堂培養IT人才,提出了合理有效地利用ACM、開源軟件、網絡論壇等多種國外先進教學手段進行培養的觀點。
關鍵詞:C語言;實驗教學;第二課堂;ACM;開源軟件
中圖分類號:G642 文獻標識碼:B
目前C語言程序設計課程是高等院校的重點課程之一,是眾多計算機和軟件專業的學生接觸的第一門專業基礎課,所以編程能力的培養顯得尤為重要。
1在實驗教學中培養學生能力
1.1培養學生獨立思考的能力
教師應避免直接回答學生提出的問題,而是給出必要的提示,引導他們去查閱教材和筆記,去認真思考與分析,找出錯誤的原因。記得一次C語言上機實驗中,有同學問了這樣一個問題:“通常函數參數的個數都是固定的,但我們最常用到的printf、scanf這些函數的參數個數可以是不固定的,這在C語言里是如何實現的?”由此可看出這個同學在問這個問題之前,獨立進行了思考,可能也查閱了很多參考資料。這種經過深思熟慮而提出的問題是非常有價值的,相信他會得到真正的提高。
1.2培養學生動手調試的能力
計算機是一門需要實踐的學科,多動手、多動腦是學好語言所必須的,在C語言實驗中,對于程序中出現的問題要自己多動手、多調試,盡量來自己解決,因為有些問題看似簡單,實則包含著很多內容,再簡單的程序都要結合語言的自身特點,以一種最優化的結構去表達,不能忽視任何小問題。比如有這樣一個小程序求兩個數之和。
main1()
{
int a, b, s;
scanf(“a=%d, b=%d”,a, b);
s=a + b;
printf(“s = %d”, s);
}
對于初學者來說,寫出這樣的程序還是很好的,無論從語法上還是語義上都沒有錯,可是上機運行時就會發現不能得出結果,通過調試會發現scanf函數實際上還有許多約束。動腦寫程序和動手調試程序都是學習計算機必備的能力,因為編譯通過,不等于程序正確;一種輸入正確,不等于所有的輸入都正確;一次運行正確,不等于次次運行都正確。程序總會出一些莫名其妙的錯誤,想解決這些錯誤,唯一的手段就是調試。調試不僅是解決程序問題的重要手段,也是學習的好工具。實驗指導教師一定要并引導學生通過調試而不是對著屏幕干看來尋找程序的錯誤。同學們去調試程序不僅可以發現程序中存在的問題,同時還可以更好地相互交流學習,可使同學們的編程能力得到迅速提高。
1.3培養學生自己發現問題和解決問題的能力
在指導實驗過程中實驗教師要引導為主,傳授為輔。既不能只指而不導,為圖省事給學生包辦代替、什么都替學生去做,又不能放任自流、對學生不聞不問。一定要通過啟發等方式來引導學生自己解決遇到的問題。教師要鼓勵學生通過個人實踐來獲得判別能力。在這個過程中,學生不可避免地會犯各種錯誤,甚至會面對失敗,但失敗的經驗也是學生積累的最寶貴的財富。這樣可以讓學生充分地感受自己發現問題、獨立解決問題的樂趣,提高他們的動手能力和分析問題、解決問題的綜合能力。
1.4培養學生創新的能力
創新是對未知的探索與求解,教學不僅要向學生傳授知識和技能,還要創造必要的條件,培養學生的獨立創造的個性品質,培養他們的創新素質。
具體為同一問題可讓學生設計出不同的解決方案,給他們無限的發揮空間。如一個簡單問題:猴子吃桃問題,猴子第一天摘下若干只桃子,當即吃了一半零一個,第二天又吃了剩余桃子的一半零一個,以后每天都吃前一天剩余桃子的一半零一個,到第十天想吃時,發現只剩下一個桃子了,求第一天猴子共摘了多少桃子。大多數同學都用循環結構程序設計的方法來編程,可實際上還可以用遞歸等方法來編,教師不應給出題目的解決辦法和思路,至多只能提示一下思考方向,完全讓學生通過自己的能力來解決問題,對在此過程中出現的失誤和失敗,也要肯定學生的探索精神。這樣學生在糾正缺點彌補不足的過程中就已經使自己的實踐能力得以提高,每位同學的創新思維也大大加強了。
2在第二課堂上培養學生
2.1利用ACM提高學生的編程能力
ACM國際性大學生程序設計競賽自1970年開始,其宗旨是使大學生能通過計算機充分展示自己分析問題和解決問題的能力。參加本項比賽的選手至少需要掌握計算機科學的常用算法,基本的計算理論(如離散數學,具體數學,組合數學基礎),數據結構基礎,程序設計語言(規定是C/C++或者是Java)。在本項比賽中考察學生的不僅僅是能夠完成指定任務的程序,更要求在完成程序的功能的基礎之上提高程序的運行效率與空間占用率。時時刻刻都應當去考慮如何去最大限度的優化,改善你的程序結構,以達到用最小的空間,最優的算法實現程序的功能。從數學角度考慮,題目主要的方向集中在工程數學,一般題目都會給出要求和幾組輸入和輸出作為程序設計的參考,也是檢驗程序正確性的標準之一?,F在很多大學都有ACM在線答題系統,同學們課余只要有時間,就可以在線做題,見識到各種各樣的題型,編程能力自然得到提高。
2.2充分利用互聯網、利用開源軟件
我們可以查看、研究開源軟件的源代碼,并且可以在遵從一定規則的前提下使用這些源代碼開發新的軟件。
網絡論壇通常是一個很大的網站,在這個網站上注冊有成百上千甚至數萬個正在開發的開源軟件項目,每個人都可以注冊自己的項目,也可以想辦法參加自己感興趣的項目的開發。參與這樣的項目開發,不僅能鍛煉技術、還能鍛煉英語以及溝通的能力,更重要的是能開拓眼界,知道世界上其他國家的計算機專業的學生們都在做什么。當學生們在使用某個開源軟件的過程中發現了不足,就可以其進行改進,并把改進的結果回饋給開源社區,并慢慢地真正融入這個社區當中。當學生們慢慢地在這個社區當中成長了,也許就可以慢慢地創建自己的項目了。
2.3效仿國外Linux社區,舉辦各種實踐活動
有許多同學想學習一下Linux,因為Linux和Windows差別很大,學生們碰到的第一個問題往往是不會安裝。因此可效仿國外Linux社區的做法,搞一次小型的Linux Install Festival,即讓Linux高手幫助新手們安裝Linux系統。這既讓新手們提高了能力,也給校內的同學們一個相互交流的機會。
3結束語
通過以上活動,同學們能夠在實驗教學中提高綜合實踐能力。在今后學習離散數學、數據結構、算法、組合數學、人工智能、計算機組成原理、匯編語言、操作系統、數據庫原理、計算機網絡、編譯原理等專業課和其他基礎課的過程中,如果同學們嘗試著多做一些實踐,那么學習效果一定會事半功倍。
參 考 文 獻
[1] 朱清時. 什么樣的基礎課教材是最好的[J]. 中國大學教學,2006,(8).
[2] 譚浩強. C程序設計[M]. 北京:清華大學出版社,2002:120.