文章編號:1672-5913(2008)20-0098-02
摘 要:本文針對高年級學(xué)生編程能力后續(xù)培養(yǎng)不足的問題進(jìn)行了研究,以發(fā)揮學(xué)生的主動性積極性為核心,以施加對學(xué)生的積極影響為出發(fā)點(diǎn),從知識體系、自學(xué)指導(dǎo)、學(xué)生組織、項(xiàng)目實(shí)踐、交流合作等方面進(jìn)行了多樣化的嘗試與探討。
關(guān)鍵詞:編程能力;后續(xù)培養(yǎng);素質(zhì)教育
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:B
1 傳統(tǒng)培養(yǎng)方法的不足
程序員最重要的能力就是編程能力。就我國目前的情況而言,絕大多數(shù)程序員都是經(jīng)高校培養(yǎng)成才[1-2]。傳統(tǒng)的教學(xué)觀念認(rèn)為,編程類課程是學(xué)生獲得編程能力的主要途徑,因而在這方面進(jìn)行了較多的研究[3-7],也取得了一定的成果。但是這種觀點(diǎn)是不夠全面的,在教學(xué)實(shí)踐中,它往往導(dǎo)致以下幾種情況的出現(xiàn):
第一,對學(xué)生能力的培養(yǎng)不具有持續(xù)性。在低年級教完編程語言之后,高年級缺乏后續(xù)的指導(dǎo)。
第二,學(xué)生在編程方面的學(xué)習(xí)偏重于理論方面,尤其是語法方面。學(xué)生的實(shí)踐機(jī)會不多,應(yīng)用能力不強(qiáng)。
第三,學(xué)生學(xué)習(xí)的主體地位得不到保障。學(xué)生沒有被有效的組織起來,不能積極主動的學(xué)習(xí)編程。
這些問題極大地阻礙了學(xué)生編程能力的培養(yǎng)。針對這些問題,我們以提升學(xué)生的編程能力為目標(biāo),以發(fā)揮學(xué)生的主動性積極性為核心,以施加對學(xué)生的積極影響為出發(fā)點(diǎn),從知識體系、自學(xué)指導(dǎo)、學(xué)生組織、項(xiàng)目實(shí)踐、交流合作等方面對編程能力的后續(xù)培養(yǎng)進(jìn)行了多樣化的嘗試與探討,取得了較好的效果。
2 后續(xù)培養(yǎng)的主要途徑
2.1 知識體系結(jié)構(gòu)的健全
一名合格的程序員除了掌握程序開發(fā)語言之外,還需要相當(dāng)多的軟件工程知識與廣博的背景知識,這些遠(yuǎn)不是一兩門編程類課程所能傳授給學(xué)生的。因此,為了進(jìn)一步建立與健全學(xué)生的知識體系結(jié)構(gòu),我們主要開設(shè)了三類后續(xù)課程,如表1所示。
第一類是直接與編程相關(guān)的課程,包括理論性課程與實(shí)踐性課程兩種。理論性課程或者偏重于編程技能的傳授,或者與某一應(yīng)用領(lǐng)域相結(jié)合,著重于軟件或者平臺工具的使用及再開發(fā)。實(shí)踐性課程旨在培養(yǎng)學(xué)生的動手能力,主要是讓學(xué)生在老師的指導(dǎo)下來完成一個算法或軟件模塊。實(shí)踐性課程是一個很重要的環(huán)節(jié),我們一般在二年級和三年級的每個學(xué)期中都安排兩個星期讓學(xué)生來專門進(jìn)行此項(xiàng)活動。
第二類是軟件工程相關(guān)的課程,主要是幫助學(xué)生了解和掌握軟件工程體系,豎立軟件質(zhì)量觀念。大多數(shù)高校都開設(shè)了其中的部分或者全部,在此不再贅述。
第三類課程主要是計算機(jī)相關(guān)應(yīng)用領(lǐng)域的課程。這些課程與學(xué)生的所學(xué)專業(yè)相關(guān),因此不同學(xué)校、不同專業(yè)各有側(cè)重。重要的是,這些課程的老師也應(yīng)當(dāng)認(rèn)識到自己對學(xué)生編程能力的培養(yǎng)負(fù)有間接責(zé)任。
2.2 自學(xué)的指導(dǎo)
編程能力的培養(yǎng)離不開學(xué)生的自學(xué)。在高年級,自學(xué)應(yīng)該成為學(xué)生獲取相關(guān)知識與內(nèi)容的重要途徑之一,并且良好的學(xué)習(xí)能力本身也是一名合格的程序員所必需的素質(zhì)。
在這個階段,教師應(yīng)當(dāng)更多的提供學(xué)習(xí)的指導(dǎo),而非知識的傳授。自學(xué)肯定會遇到很多困難,因此這個環(huán)節(jié)中面臨的主要問題是如何讓學(xué)生從盡可能多的渠道獲取指導(dǎo)與幫助。圍繞這個問題,我們作了三個方面的工作,如表2所示。
(1) 參考書目的推薦。我們推薦的書籍基本都是與編程直接相關(guān)的,分為兩類,一類是開發(fā)語言的指導(dǎo)書籍,旨在讓學(xué)生更深入的學(xué)習(xí)編程語言,這類書包括《C程序設(shè)計》、《Effective C++》等。另一類書籍主要側(cè)重于編程的技能與技巧傳授,包括《代碼大全》、《程序設(shè)計實(shí)踐》等。
(2) 依托課程的教學(xué)平臺,我們在上面建立了BBS及討論區(qū),在這些網(wǎng)絡(luò)空間中,不僅有課程相關(guān)內(nèi)容的補(bǔ)充與延伸,還有學(xué)習(xí)經(jīng)驗(yàn)介紹、開發(fā)技巧交流、在線課堂等內(nèi)容,并有教師來負(fù)責(zé)相關(guān)的答疑與指導(dǎo)工作。
(3) 為了讓學(xué)生更多的接觸實(shí)際,更好地使用網(wǎng)絡(luò)工具,我們篩選了一批比較知名的網(wǎng)站與技術(shù)博客,如程序員網(wǎng)站(www.csdn.net)、微軟開發(fā)人員網(wǎng)絡(luò)(msdn.microsoft.com)等。除此之外,我們整理了一部分討論比較熱烈的網(wǎng)絡(luò)技術(shù)組,如Google的C語言(comp.lang.c.moderated)、C++語言(comp.lang.c++.moderated)討論組。這些技術(shù)組成員眾多,分布于全球各個國家,許多頂級開發(fā)人員也參與其中,并熱心討論、回答每一個問題。往往一個問題在半小時之內(nèi)就能得到相當(dāng)專業(yè)的答復(fù)。因此我們鼓勵學(xué)生參與這些技術(shù)組的討論,并積極嘗試回答問題。
2.3 學(xué)生的組織
在編程能力的后續(xù)培養(yǎng)中,面臨的一個問題是學(xué)生沒有被很好地組織起來,學(xué)習(xí)處于自發(fā)的摸索狀態(tài),主要靠單打獨(dú)斗,缺乏必要的交流與引導(dǎo)。為了增強(qiáng)學(xué)生與學(xué)生、學(xué)生與實(shí)際之間的接觸,讓學(xué)生從交流中獲取更多的“信息量”。在學(xué)校的組織下,我們做了如下工作:
(1) 將學(xué)生組織成各種層次、各種類型的興趣小組和社團(tuán),并進(jìn)行各種內(nèi)部學(xué)習(xí)和交流,這樣高年級學(xué)生或者編程能力較強(qiáng)的學(xué)生能夠?qū)W(xué)習(xí)經(jīng)驗(yàn)、開發(fā)技巧傳授給相對較弱的學(xué)生。
(2) 為了提升學(xué)生的興趣,擴(kuò)大先進(jìn)編程技術(shù)、編程思想的影響力,我們組織了不同級別的程序設(shè)計競賽,并選出一些優(yōu)秀的學(xué)生參加更高級別的比賽,如ACM程序設(shè)計大賽、數(shù)學(xué)建模等。
(3) 定期舉辦碩博論壇、校友論壇等學(xué)術(shù)活動,請一些編程能力出眾的碩士生、博士生,或者畢業(yè)的校友來進(jìn)行講座,為在校的學(xué)生介紹前沿技術(shù)動態(tài),并提供學(xué)習(xí)指導(dǎo)與幫助。
2.4 多層次的實(shí)踐
學(xué)生必須經(jīng)過一定的項(xiàng)目實(shí)踐,才能真正提高編程能力。除此以外,項(xiàng)目實(shí)踐還能培養(yǎng)團(tuán)隊協(xié)作、編程風(fēng)格、文檔習(xí)慣等程序員所必需的能力。學(xué)校應(yīng)該盡可能的提供實(shí)踐機(jī)會。在項(xiàng)目實(shí)踐方面,除了前面提到的程序設(shè)計、算法設(shè)計、軟件設(shè)計等實(shí)踐環(huán)節(jié)外,我校還向?qū)W生提供了多種機(jī)會:
(1) 建立創(chuàng)新基地。學(xué)校成立了三個校級大學(xué)生實(shí)踐創(chuàng)新活動基地,七個院(系)大學(xué)生實(shí)踐創(chuàng)新基地。學(xué)生在這里不僅可以結(jié)識很多高水平的老師,還可以尋找到興趣一致的同學(xué),從而大大提高了研究的勁頭。
(2) 開放實(shí)驗(yàn)室。我校有不少國家級和省部級實(shí)驗(yàn)室。這些實(shí)驗(yàn)室不僅項(xiàng)目較多,而且相當(dāng)多的屬于前沿學(xué)術(shù)項(xiàng)目。只要學(xué)生具備一定的編程功底,就可以與實(shí)驗(yàn)室老師聯(lián)系,得到加入科研項(xiàng)目的機(jī)會。
(3) 與培訓(xùn)機(jī)構(gòu)合作。我校與全球最大的IT培訓(xùn)機(jī)構(gòu)印度NIIT公司合作,學(xué)生可以申請參加其中的課程,在培訓(xùn)人員與教師的指導(dǎo)下完成預(yù)定的項(xiàng)目。不僅學(xué)生可以從中得到較多的收獲,合作的教師也能掌握先進(jìn)的培訓(xùn)方法,了解行業(yè)的實(shí)際需求。
(4) 提供資金贊助學(xué)生。學(xué)校每年都提供一定的資金。學(xué)生如果有感興趣的項(xiàng)目,或者比較有創(chuàng)新的想法,都可以向?qū)W校申請,由學(xué)校來資助。
(5) 對外交流合作。我校與諾基亞、江蘇移動、江蘇電信等多個IT知名企業(yè)合作,與不少企業(yè)建立了合作關(guān)系。我校在一些企業(yè)建立了軟件開發(fā)培訓(xùn)基地和嵌入式開發(fā)人才培養(yǎng)基地,由企業(yè)代為培訓(xùn)。另外,中興、華為等大型企業(yè)也為我校提供了專門的實(shí)習(xí)崗位,學(xué)生可以直接參與實(shí)際的工程項(xiàng)目。這些培訓(xùn)與崗位,為學(xué)生了解行業(yè)背景、培養(yǎng)動手能力和鍛煉編程技術(shù)提供了最直接、最有效的途徑。
3 反響與效果
幾年的嘗試證明,上述舉措收到了學(xué)生的熱烈歡迎。學(xué)生以爭做技術(shù)牛人為榮,也普遍感覺“動手時感覺沒有以前那么多困難”、“對一些算法的理解比以前深多了”,在各級各類競賽中,我校學(xué)生也斬獲頗豐,僅2007年在國際、國內(nèi)各種競賽中獲獎就達(dá)幾十人,獲獎人數(shù)及獲獎率均列前茅。一些后續(xù)課程的老師也表示學(xué)生的基本編程功較以前更為扎實(shí),教學(xué)相對順利一些。
更重要的是來自用人單位的好評,根據(jù)用人單位的反饋,不少用人單位均表示“學(xué)生的動手能力很強(qiáng)”、“上手很快”等。而我校的就業(yè)率一直穩(wěn)居江蘇省前列,這也從一個側(cè)面反映了效果。
4 結(jié)束語
在教學(xué)過程中,學(xué)生知識的獲得、編程能力的培養(yǎng),不可能只依靠一門或幾門編程課就能達(dá)到目標(biāo),這些僅僅是一個開始,還有很多后續(xù)的工作要做。我們對編程能力的后續(xù)培養(yǎng)進(jìn)行了多樣化的改革與嘗試,取得了較好的效果。而這些措施,反過來也能促進(jìn)教學(xué)內(nèi)容與實(shí)際需求的貼近,以及教師自身水平的提高。
參考文獻(xiàn)
[1] 李曉明,陳平,張銘,朱敏悅.關(guān)于計算機(jī)人才需求的調(diào)研報告[J].計算機(jī)教育,2004,(8):11-18.
[2] 教育部計算機(jī)科學(xué)與技術(shù)專業(yè)教學(xué)指導(dǎo)分委員會.中國計算機(jī)本科專業(yè)發(fā)展戰(zhàn)略研究報告[R].中國大學(xué)教學(xué),2005,(5):7-10.
[3] 鄭蕓.運(yùn)用目標(biāo)教學(xué)方法培養(yǎng)學(xué)生編程能力[J].高教論壇,2007,(2):118-119.
[4] 徐進(jìn)華.提高學(xué)生程序設(shè)計能力的幾個措施[J].計算機(jī)時代,2005,(11):52-53.
[5] 田孟紅.培養(yǎng)學(xué)生編程能力的實(shí)踐與思考[J].文山師范高等??茖W(xué)校學(xué)報,2004,17(4):367-369.
[6] 吳海珍,蔣加伏.面向編程能力培養(yǎng)的VB語言教學(xué)改革[J].湖南師范大學(xué)教育科學(xué)學(xué)報,2005,4(6):120-122.
[7] 李海倫,唐全.“程序設(shè)計”課程教學(xué)改革的研究與實(shí)踐—加強(qiáng)算法設(shè)計教學(xué),提高學(xué)生編程能力[J].計算機(jī)教育,2005,(7):21-22.