摘要:本文以提升學生的程序員素質為目標,以培養(yǎng)學生的動手能力、學習能力和創(chuàng)新能力為核心,從課程的組織、選題、流程、考核等方面對程序設計實踐課程進行了改革,取得了較好的成果。
關鍵詞:程序設計實踐;素質培養(yǎng);學習能力培養(yǎng);課程改革
中圖分類號:G642 文獻標識碼:B
文章編號:1672-5913 (2007) 22-0025-03
1傳統(tǒng)程序設計實踐課程的不足
程序員素質的內涵很豐富,沒有統(tǒng)一的標準,公認包括如下幾個方面 [1-5]:① 持續(xù)學習的能力;② 團隊協(xié)作能力;③ 需求理解能力;④ 文檔習慣;⑤ 良好的代碼編寫風格;⑥ 測試習慣。
在目前的計算機課程體系中,程序設計實踐課程是培養(yǎng)程序員素質的一門關鍵課程,一般安排在程序語言課程之后,通過指導學生動手完成一個設計課題來達到三個目標。一是讓學生加深對編程語言的理解,提高綜合運用能力、自學能力與創(chuàng)新能力;二是讓學生體驗完整的開發(fā)過程,獲得具體的開發(fā)經(jīng)驗;三是訓練邏輯思維能力,培養(yǎng)嚴謹?shù)目茖W作風。在具體的實踐中該課程存在如下問題[4]:
(1) 在學生的組織上,經(jīng)常是多個學生獨立完成同一個課題。學生沒有被組織起來,相互間的協(xié)作、溝通不夠。
(2) 在課程的選題上,過于偏重于語法,課題內容陳舊,趣味性不強,不能引起學生的興趣與積極性。
(3) 在開發(fā)的流程上,教師無法對學生的開發(fā)過程實施準確有效的監(jiān)督與控制,編程習慣、編程風格等方面的引導、訓練不夠。
(4) 在課題的考核上,評分以程序最終實現(xiàn)的功能為主,考核指標中缺乏對文檔、代碼格式等方面的考慮,并且無法完全杜絕抄襲的發(fā)生。
這些問題極大地阻礙了學生程序員素質的培養(yǎng)。針對這些問題,我們結合教學的實際,以提升學生的程序員素質為目標,以培養(yǎng)學生的動手能力、學習能力和創(chuàng)新能力為核心,在組織、選題、流程、考核等方面對程序設計實踐課程進行了改革,取得了較好的成果。
2程序設計實踐課程中程序員素質的培養(yǎng)
2.1團隊協(xié)作能力的培養(yǎng)
團隊協(xié)作能力是程序員應具備的基本素質。我們在課程中把學生分為若干個小組,每組3~5人。分組時適當參考學生的實際能力,避免能力較弱的學生分在同一組。
每組一個組長,由老師指定或者學生推舉產(chǎn)生。組長應當具有較好的動手能力和奉獻精神,負責整個小組的成員組織以及程序開發(fā)的進度協(xié)調。
小組中的每個成員都要完成一定的編碼量,可以獨立或者與其他人合作來完成整個課題。碰到問題時一起交流、討論,各盡所能,取長補短。好的思路可以被整個團隊共享。
實踐證明,這種組織方式一方面培養(yǎng)了學生的責任感,提高了團隊協(xié)作能力,另一方面也有利于課題的進展,減少了被難題卡住的可能性。對教師來說,這種方式部分減輕了對學生個體的答疑工作量,使教師能把更多的精力放在程序設計的整體指導上。
2.2學習能力的培養(yǎng)
由于采取了小組模式,多人合作來共同完成一個任務,因此可以選擇相對較大的課題。從培養(yǎng)學習能力的角度出發(fā),選題時我們考慮了如下幾個方面:
(1) 由于程序設計教學是編程語言教學的進一步深入,因此對編程語言中的一些語法難點進行了有意識的強化,包括動態(tài)內存管理、文本菜單、文件操作、鏈表操作、高級指針、排序查找算法等,以夯實學生的理論基礎。
(2) 選題時注意實用性與趣味性,并盡量與學生的專業(yè)相結合,以提高學生參與的積極性與主動性。
(3) 選題時注意新穎性,一方面提高了學生的興趣,另一方面也能避免從網(wǎng)上搜到現(xiàn)成的代碼。
(4) 課題具有一定的伸縮性,每個課題都設置了一些選做的功能,以滿足不同層次的學生。鼓勵水平高的學生完成較多的功能以及對功能的合理擴展。
(5) 為了培養(yǎng)學生的自學能力,出題時布置了一些超出課本范圍的內容,如一些函數(shù)(數(shù)學函數(shù)、延時函數(shù)、發(fā)音函數(shù)、隨機函數(shù)等)的使用以及界面的設計等。
(6) 鼓勵學生自己提出符合上述要求的新課題,以進一步提高學生參與的積極性。
表1是我校近年來老師與學生所設計的部分課題,涉及體育、專業(yè)、娛樂等多個方面。實踐證明,課題的多樣性擴大了知識點的覆蓋面,提升了學生的參與熱情,保證了程序設計實踐課程的質量,促進了學生學習能力的培養(yǎng)。
表1 我校近年老師與學生所設計的部分課題
2.3分析設計、編程風格、文檔習慣等多種能力的綜合培養(yǎng)
學生的動手能力是通過開發(fā)實踐鍛煉出來的。對開發(fā)過程實施積極有效的控制干預,是實現(xiàn)培養(yǎng)目標的關鍵。我們在課題進程中實施組長監(jiān)督與教師引導的二級管理,注意培養(yǎng)學生的多種能力,并在不同階段各有側重。具體如表2所示。傳統(tǒng)的程序設計實踐課程對編碼、調試能力強調較多,這里不再詳述,下面討論其他幾種能力的培養(yǎng)。
表2 課題實施各階段能力培養(yǎng)的側重點
(1) 分析能力與設計能力
對于剛學完編程語言的學生,這兩個方面不宜提過高的要求。我們在這兩個階段與學生進行較多的交互與指導,使學生能明確課題的功能需求與性能需求,學會正確表達程序設計的思路。通過對這兩種能力的培養(yǎng),可以讓學生了解自己的任務在整個課題中的地位,并建立初步的軟件工程觀念。
(2) 編程風格
在現(xiàn)代軟件開發(fā)中,良好的編程風格不僅有助于代碼的移植和糾錯,也有助于不同技術人員之間的協(xié)作。我們參考了一些知名軟件公司的開發(fā)規(guī)范,從變量命名、注釋、空行、縮進格式等方面對學生進行簡單的引導與訓練,幫助學生培養(yǎng)良好的編程風格,以適應將來社會的需求。
(3) 測試習慣
測試是軟件工程質量保證的重要環(huán)節(jié)。在課題的實施中,我們要求學生掌握一定的測試方法,并養(yǎng)成及時測試的習慣,每編完一個函數(shù)都要進行測試。這樣做既能提高學生的查錯能力,也能幫助學生樹立的軟件產(chǎn)品質量保障的觀念。
(4) 文檔習慣
文檔是軟件產(chǎn)品的重要組成部分。一些知名的軟件公司要求員工必須將30%以上的工作時間用于編寫技術文檔。我們對此也予以充分重視,要求學生在各個階段都進行文檔的記錄,包括分析方案、設計方案、每天的開發(fā)進度、總結報告等。對于學生來說,這樣做可以培養(yǎng)良好的習慣。對于教師來說,可以通過這些文檔掌握課題進度,及時進行干預,并且這些文檔也是最后評分的重要依據(jù)之一。
(5) 自學能力
自學能力是創(chuàng)新能力的基礎。我們在課題實施中,強調發(fā)揮學生的主觀能動性。布置課題時,提供了一些網(wǎng)站、工具書和論壇供學生參考。學生遇到問題時,教師以引導和提示為主,一般不直接提供答案。從而使得整個過程成為學生主動求知、探索的過程。
2.4全方面的考核
為了最大程度的杜絕抄襲現(xiàn)象,在課題結束時,我們要求每個學生進行答辯,介紹自己的作品和工作。成績的評定在綜合多個方面之后給出,主要的指標體系包括如下幾個方面:
(1) 程序方面,從功能的實現(xiàn)與代碼的風格兩個角度來進行評價。
(2) 文檔方面,從文檔的質量、數(shù)量以及報告的內容來綜合評價。
(3) 團隊協(xié)作方面,主要評價個人在團隊的作用,包括個人工作在課題中的比重,與他人的合作情況等。
(4) 答辯表現(xiàn),包括PPT的制作和問題的回答情況等。
通過以上這些方面,能夠對學生進行比較全面、公正的評價。
3比較
程序設計實踐課程改革前后的比較如表3所示。從表中可以看出,新的實踐課程能夠保證課程質量,全面提高學生各方面的能力。學生的反響也比較好,不少學生在總結報告中表示“得到了很大的鍛煉”、“受益匪淺”、“找到了編程的樂趣”。
表3 程序設計實踐課程改革前后的比較
4結束語
合格的軟件人員是我國信息化進程中的中堅力量。為了培養(yǎng)符合社會需求的軟件人才,我們進行了一定的探索。我們的程序設計實踐課程注意發(fā)揮學生的主動性,注重對學生程序員素質的培養(yǎng),因而取得了比較顯著的成效。這也是一個值得深入探討的課題,我們將繼續(xù)進行研究,以期能進一步提高效果。
參考文獻
[1] 教育部計算機科學與技術專業(yè)教學指導分委員會. 中國計算機本科專業(yè)發(fā)展戰(zhàn)略研究報告[R]. 中國大學教學, 2005, 5:7-10.
[2] Gerald Weinberg. The Psychology of Computer Programming: Silver Anniversary Edition [M]. New York: DORSET HOUSE Publishing Company, 2003
[3] Andrew Hunt, David Thomas. The Pragmatic Programmer: From Journeyman to Master [M]. New York: Addison Wesley Publishing Company, 1999
[4] 李曉明, 陳平, 張銘, 朱敏悅. 關于計算機人才需求的調研報告[J]. 計算機教育,2004,(8):11-18.
[5] 梁肇新. 編程高手箴言[M]. 北京:電子工業(yè)出版社, 2003.
作者簡介
郭劍(1978-),男,講師,南京郵電大學計算機軟件基礎教學中心,主要研究方向為演化計算、計算機在通信中的應用。
朱立華(1970-),女,副教授,南京郵電大學計算機軟件基礎教學中心主任,主要研究方向為計算機軟件。
孫力娟(1963-),女,教授,碩士生導師,南京郵電大學計算機學院副院長,主要研究方向為演化計算、計算機網(wǎng)絡。
基金項目:南京郵電大學教學改革研究項目(JG00406JX16)