[摘要]程序設計能力是計算機專業(yè)學生的基本能力,也是最重要的能力,必須花大力氣培養(yǎng)。本文從教學的角度分析當前計算機專業(yè)學生程序設計能力培養(yǎng)中存在的問題,提出了切實可行的有助于程序設計能力培養(yǎng)的“重實踐的課程教學模式、分層次培養(yǎng)學生程序設計能力”的針對性的策略和措施。
[關鍵詞]程序設計能力;案例教學;教學模式
1、引言
程序設計能力是計算機類專業(yè)學生的基本能力, 也是檢驗計算機類專業(yè)畢業(yè)生是否合格的基本標準。但目前的事實是,很多計算機專業(yè)學生程序設計能力低,畢業(yè)后不能勝任計算機行業(yè)的工作,不得不就業(yè)于非計算機行業(yè)。如何提高計算機專業(yè)學生程序設計能力,培養(yǎng)滿足社會需求的計算機專業(yè)人才,是教學改革的重點,筆者在多年的教學實踐中,積累一些經驗,并應用于實際教學,收到較好的教學效果。下面從教學的角度,分析當前教學存在的主要問題,提出了一些有效的方法和建議,與大家共享,希望起到拋磚引玉的作用。
2、現(xiàn)狀及存在的主要問題
目前的現(xiàn)狀是計算機專業(yè)學生程序設計能力整體水平低,原因很復雜,本文僅從教學的角度來分析其主要存在的問題,歸納起來主要表現(xiàn)在:
2.1 “重理論,輕實踐”的教學模式不能滿足計算機類程教學的要求
在教學模式上,很多課程基本上仍以課堂講授為主,實踐課時少。計算機大都數(shù)課程都是實踐性很強的課程,如果沒有
足夠的實踐教學,是很難讓學生弄清楚理論知識,更不用說把知識運用于實踐。這種“教師講,學生聽,重理論,輕實踐”教學模式,教學直觀性差、效率低,信息量小,教學進程緩慢,不利于學生自主學習能力和程序設計能力的培養(yǎng),以至于課程學習結束了,學生還不明白該課程的作用和意義,明顯影響教師授課的效果。
2.2 教師、管理者對程序設計能力培養(yǎng)過程認識不夠明晰
程序設計能力的培養(yǎng),不是一門課程或一個教師就可以解決的問題,它需要在整個大學學習過程中逐步培養(yǎng),是由多門課程的學習和多個老師的教授共同完成,是一個“接力棒傳遞”
的過程。但教師、管理者并沒有非常清楚地意識到這一點,因此,很多教師在課程教學中,不注意“承前啟后”,對本課程的教學任務重點不是特別清楚,采取“因書施教”,被教材牽著走,弱化了課程在程序設計能力培養(yǎng)中“接力棒傳遞”作用。例如,程序設計語言教材都是從語法開始編寫的,第一次開設課程設計語言課程,語法是教學的重點,但后續(xù)開設的語言類課程,語法就不是講解的重點,但很多教師還是沿用教材的安排,花大量時間介紹語法,從而影響教學目標實現(xiàn)。
2.3 實踐教學環(huán)節(jié)管理不嚴,學生編寫代碼量太少
實踐教學環(huán)節(jié)是計算機課程教學中一個重要的必不可少的環(huán)節(jié),必須嚴格管理。實際情況是,很多課程的實踐教學常常是做樣子,沒有發(fā)揮它的真正作用。表現(xiàn)在:一是學生不重視,很多學生認為實踐課可去可不去,或者去了也是干別的事情;二是實踐課教師的配備也不充足,一個班級的學生實踐課,常常是由任課教師一個人擔當,從而嚴重影響實踐教學效果。三是學生程序代碼編寫不積極主動,除了完成老師布置的作業(yè)、實驗、課程設計,再沒有編寫其它代碼,代碼編寫量太少。
2.4 教師缺乏項目開發(fā)實踐經驗
從師資力量來看,教師隊伍的知識結構不全面,主要表現(xiàn)為程序開發(fā)實踐經歷不豐富。從事計算機教學的老師,很多沒有親自參與軟件項目開發(fā),缺乏一定的實踐經驗,因此在講解實際應用系統(tǒng)開發(fā)時,不能生動活潑,游刃有余。教師隊伍的實踐開發(fā)經歷有待進一步加強。
3、提高學生程序設計能力的主要策略和措施
針對上述分析存在的問題,在現(xiàn)有的條件下,提出如下切實可行的策略和措施。
3.1采用“理論+實驗+設計”的課程教學模式
計算機課程是實踐性很強的課程,針對這一特點,對計算機課程增加“課程設計”綜合實踐環(huán)節(jié),采用“理論+實驗+設計”的教學模式,改變了傳統(tǒng)“重理論,輕實踐”的狀況,使課程實踐環(huán)節(jié)比以前得到大大的加強,有利于學生對知識的理解和程序設計能力的培養(yǎng),尤其是“課程設計”這個實踐環(huán)節(jié),能激發(fā)學生的學習興趣、拓寬學生的思路,有利于培養(yǎng)學生分析問題、解決問題的綜合能力?!罢n程設計”安排在課程結束后立即進行,由任課教師完成。這種課程教學模式,不但要求教師注重理論知識的傳授,更應重視理論的實踐應用,使學生的實踐教學不再是一句空話,學生的程序設計能力訓練得到有效的保證。
3.2 分層次培養(yǎng)學生的程序設計能力
程序設計能力培養(yǎng)是由多門課程即“課程群”和很多教師共同完成。培養(yǎng)學生程序設計能力,可分四個層次[1]:基本程序設計能力、模塊化程序設計能力、數(shù)據(jù)庫應用系統(tǒng)開發(fā)能力以及多層分布式系統(tǒng)開發(fā)能力。這個四個層次有一定的邏輯先后關系、相互聯(lián)系和相互促進。在教學過程中,狠抓學生這四個層次程序設計能力的訓練培養(yǎng)。
3.2.1 基本程序設計能力的培養(yǎng)[2]
基本程序設計能力是程序設計能力進一步提高的基礎,也是后續(xù)許多計算機專業(yè)課程學習的基礎,由大學一年級第一門程序設計語言課程來完成,對于大多數(shù)學生來說,這是一個新的領域,因此必須高度重視。學生的基本程序設計能力表現(xiàn)為能比較熟練地運用一門高級程序設計語言提供的數(shù)據(jù)類型、運算符、語句和函數(shù)和過程獨立地編寫解決簡單問題的程序,在一定的程序設計集成環(huán)境下獨立地上機調試程序,掌握最基本的程序測試和調試的方法。為了有效培養(yǎng)學生基本程序設計基本能力,在教學過程中 從程序設計語言的選擇,教材的選用,到任課教師的安排,都必須進行周密的考慮。
根據(jù)多年的教學實踐經驗,譚浩強編寫的《C語言程序設計》作為程序設計課程的啟蒙教育,是比較好的選擇;教學人員安排,要求至少具有三年教學工作經驗、工作責任感強的老師擔任此課程的教學。
3.2.2 模塊化程序設計能力的培養(yǎng)
學生在學完第一門程序設計課程后,只掌握基本程序設計能力,能編寫處理一些簡單的問題程序(代碼通常不超過20行)。對于復雜一點的問題,還不能運行模塊化技術分解一個程序的功能進行設計程序。模塊化程序設計能力培養(yǎng)主要由《C語言課程設計》完成,由《C語言程序設計》教師擔任,更利于學生能力培養(yǎng)。在《C語言課程設計》中,教師重點培養(yǎng)學生抽象思維能力,對程序要解決的復雜問題按功能進行分解成一個個具有獨立意義的子功能,用C語言函數(shù)分別實現(xiàn)各個子功能,并使每個函數(shù)包含程序代碼長度符合學生容易理解的代碼長度。
案例教學法是快速培養(yǎng)模塊化程序設計能力的有效教學方法。任課教師精心準備幾個典型的案例[3],并對這些案例進行詳細分析、講解,讓學生運行程序和閱讀程序代碼,分析程序中各函數(shù)的功能和算法,分析各函數(shù)間的調用關系,使學生對程序的一般組成和結構有一個直觀的認識,然后讓學生模仿一個類似的實例,編制一個程序實踐,使學生逐步適應和學會運用抽象思維方式,學會模塊化程序設計技術,編寫出有一定規(guī)模、具有一定實用性的程序的能力,從而掌握模塊化程序設計的基本思想。在后續(xù)課程學習中,如《數(shù)據(jù)結構》、《操作系統(tǒng)》,教師要對模塊化程序設計技術做進一步加強、提高。
3.2.3數(shù)據(jù)庫應用系統(tǒng)開發(fā)能力的培養(yǎng)
信息管理系統(tǒng)應用非常廣泛,信息管理系統(tǒng)實際上就是數(shù)據(jù)庫應用系統(tǒng),因此,數(shù)據(jù)庫應用系統(tǒng)開發(fā)技術是計算機專業(yè)類學生必須掌握的技術。數(shù)據(jù)庫應用系統(tǒng)開發(fā)能力(單機環(huán)境)的培養(yǎng)主要是通過《數(shù)據(jù)庫原理》、可視化面向對象程序設計(如VB)等課程設計完成。
在實踐教學中,主要采取兩項措施保證這種能力的訓練。一是教師講解數(shù)據(jù)庫原理、面向對象程序設計(如VB、Delphi)課程時,一定要仔細分析一個信息系統(tǒng)開發(fā)案例,如“圖書管理系統(tǒng)”,“人才信息管理系統(tǒng)”,“學生信息管理系統(tǒng)”等等。這種生動實用的案例學習,能激發(fā)學生的學習興趣和動力,也很容易使學生理解掌握數(shù)據(jù)庫應用系統(tǒng)開發(fā)的一般規(guī)律。二是通過隨后開設的《數(shù)據(jù)庫課程設計》、《VB課程設計》、《Delphi課程設計》,要求學生自己用學到的知識,嚴格按照軟件工程的思想,開發(fā)數(shù)據(jù)庫應用系統(tǒng)實例。這種反復的訓練,使學生數(shù)據(jù)庫應用系統(tǒng)開發(fā)能力得到進一步鞏固、完善。
3.2.4 多層分布式系統(tǒng)開發(fā)能力的培養(yǎng)
隨著Internet/Intranet網(wǎng)絡的發(fā)展與廣泛應用,應用系統(tǒng)的規(guī)模不斷擴大,業(yè)務量的變化,用戶需求的進一步提高,多層分布式應用系統(tǒng)開發(fā)模式成為系統(tǒng)開發(fā)的主流,掌握多層分布式系統(tǒng)開發(fā)的基本過程、思想,也成為學生程序設計能力必不可少的教學內容。這種體系結構的軟件設計,要考慮兩個個方面的問題,一個是業(yè)務邏輯層(也叫應用服務器)設計,是程序設計的一個重點難點。另一個是網(wǎng)絡環(huán)境下,軟件系統(tǒng)部署和運行在多臺計算機上,需要相互協(xié)調地工作,必須考慮網(wǎng)絡通信協(xié)議的使用,客戶端與服務器之間怎樣建立連接,以及怎樣實現(xiàn)數(shù)據(jù)的交流等因素。
這個層次通常在數(shù)據(jù)庫應用系統(tǒng)開發(fā)能力培養(yǎng)和計算機網(wǎng)絡課程開設后進行。多層分布式系統(tǒng)開發(fā)編程技術訓練,可以在第三個層次培養(yǎng)案例基礎上進行,只需將系統(tǒng)的單機環(huán)境改為網(wǎng)絡環(huán)境,教師學生都只要把精力重點放“多層、分布式”技術上,既節(jié)約了時間,而且效果好。
3.3 加強實踐環(huán)節(jié)要求和管理[4]
計算機課程光是“聽老師講”和“自己看書”是絕對不夠的。在努力提高課堂教學的同時,必須大力加強實踐環(huán)節(jié)的要求和管理?!袄碚?實驗+設計”教學模式,表明實踐環(huán)節(jié)的重要性,但還得管理好實踐環(huán)節(jié)。對于課程的實驗環(huán)節(jié)主要從以下幾個方面加強落實管理。
一是抓好常規(guī)實驗。教師必須認真對待上機實驗課,要像理論課教學那樣,每次都要明確指明實驗的目的、要求,對上機實驗內容要精心安排,對學生上機實驗要嚴格監(jiān)督。
二是抓好課程設計,即綜合實訓。為了快速、有效培養(yǎng)這方面的能力,通常由課程設計的指導教師,分析幾個代表行的案例,然后由教師布置一些事先想好的課程設計作業(yè),以小組為單位進行課程設計。每一個小組要挑選一到兩個專業(yè)素質較好的學生擔任正副組長,讓他們對本組項目全權負責,充分發(fā)揮優(yōu)秀學生在課程設計中的積極作用,既可以減輕指導教師的壓力,又有利于課程設計質量的保證,發(fā)揮學生的創(chuàng)造能力。課程設計落實得好,將使學生的知識運用能力和程序設計能力得到迅速成長,教學效果也顯著。
為了保證學生認真對待實踐環(huán)節(jié),防止學生復制或不做,比較好的辦法是要求每個學生提交實踐作業(yè),并進行批閱,批閱的成績,參與課程結束的期末成績評定,實踐表明,這種辦法效果非常好。
三是組織各種程序設計比賽,鼓勵學生自己積極編寫程序代碼,對于程序代碼編寫多又好多學生,給予表揚和適當?shù)奈镔Y獎勵,提倡在大學畢業(yè)前,編寫10萬行代碼。試想一個在校大學生,如果編寫了近10萬行的代碼,程序設計能力一定達到較高水平。
3.4 將科研項目與學生程序設計能力培養(yǎng)結合起來
教師要積極參加科研活動,通過科研項目活動不斷提高科研水平、教學水平和實踐水平。在進行科研過程中,可以將優(yōu)秀好學的學生吸收進來,共同完成科研項目的開發(fā)。將科研與學生程序設計設計能力培養(yǎng)兩者結合起來,不但提高了教師的實際項目開發(fā)能力,也培養(yǎng)了學生的知識應用能力、解決實際問題能力和程序設計能力。
4、結束語
程序設計能力是計算機專業(yè)學生的基本能力,同時又是最重要的能力,需要花大力氣培養(yǎng)。試想一個軟件開發(fā)團隊,如果沒有幾個程序設計能力強的程序設計人員作堅強后盾,無論需求分析和設計方案做得多么好,最終可能只是空中樓閣。因此,培養(yǎng)學生程序設計能力值得去研究和探索。不斷改革教學手段,采取有效的措施,強化實踐教學力度,提高學生的自主學習能力和程序設計能力,培養(yǎng)出更多滿足時代需求的合格計算機應用人才,具有重要的現(xiàn)實意義和深遠歷史意義。
[參考文獻]
[1]李祎, 李用普. 電子信息專業(yè)學生計算機能力培養(yǎng)體系構建研究[J]. 合肥學院學報,2007,(8).
[2]李勇軍. 怎樣提高學生的編程能力[J].信息技術,2006,(4).
[3]李堯. VFP教學中采用案例教學法的分析與實踐[J].內江師范學院學報,2006,(12).
[4]徐進華. 提高學生程序設計能力的幾個措施[J]. 計算機時代,2005,(11).
[作者簡介]
何昭青,女,1964年生,漢族,碩士,湖南邵陽人,湖南第一師范信息技術系副教授,主要研究方向:網(wǎng)絡教育,軟件工程,計算機優(yōu)化算法。
基金項目:湖南省第一師范學院校級教改課題(XYS07N15),湖南省教育科學十一五規(guī)劃重點課題(XJK06AZC010)。
(本文責任編輯 劉東敏)