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