孫瑜
(西安科技大學(xué) 計算機學(xué)院,陜西 西安 710054)
注重實踐的程序設(shè)計課程教學(xué)
孫瑜
(西安科技大學(xué) 計算機學(xué)院,陜西 西安 710054)
怎樣讓學(xué)生感興趣,怎樣做才能喚醒學(xué)生的力量,提高學(xué)習(xí)的積極性,是課程改革能否成功的一個關(guān)鍵。“程序設(shè)計不是聽會的,也不是看會的,而是自己上機練會的。”動手才是化難為易的金鑰匙,實踐是能力賴以生長的土壤,實踐出真知,實踐長能力。
程序設(shè)計;實踐;興趣
《C/C++語言程序設(shè)計》是計算機學(xué)科體系中的核心課程之一,主要講授程序設(shè)計語言的基本知識和程序設(shè)計方法,使學(xué)生了解高級程序設(shè)計語言的結(jié)構(gòu),掌握程序設(shè)計的思想和方法,以及基本的程序設(shè)計過程和技巧,具備初步的分析問題和利用計算機求解問題的能力。課程核心是培養(yǎng)程序設(shè)計能力,加強實踐是培養(yǎng)設(shè)計能力的重要途徑。本文基于教學(xué)中存在的問題,從案例驅(qū)動教學(xué)、注重實踐教學(xué)等兩方面探究如何在實際教學(xué)中提高學(xué)生的學(xué)習(xí)積極性和思維能力,實現(xiàn)學(xué)生從單純的程序編寫到解決實際問題能力的轉(zhuǎn)變。計算機程序設(shè)計類課程實踐性很強。實踐性強體現(xiàn)為無論多簡單或多復(fù)雜的程序設(shè)計問題都要形式化為數(shù)學(xué)式子或相應(yīng)的操作步驟,最終都要編寫程序,開發(fā)出能夠解決相應(yīng)問題的計算機軟件;學(xué)習(xí)該類課程既要注意學(xué)習(xí)好理論,更要注重進(jìn)行實際上機操作的訓(xùn)練,運用理論知識進(jìn)行程序設(shè)計解決實際問題,做到理論與實踐相結(jié)合。
本文對2011、2012和2013年度參加C和VB二級考試的一年級理工類學(xué)生做了抽樣統(tǒng)計(數(shù)據(jù)來源為西安科技大學(xué)大學(xué)教務(wù)處),結(jié)果表明報考率和通過率差強人意,尤其是C語言,9個班級中通過率在50%以上的只有3個班級,最低的通過率僅為17.3%。通過問卷調(diào)查的方式獲悉學(xué)生普遍對C語言的學(xué)習(xí)有畏懼心理。程序設(shè)計類課程理論性抽象性較強,語法知識繁多,結(jié)構(gòu)復(fù)雜,調(diào)試程序更是初學(xué)者的“攔路虎”,學(xué)生往往難以理解程序設(shè)計的思維方式,對教學(xué)內(nèi)容似懂非懂,而掌握良好的程序設(shè)計方法則更加困難;采用傳統(tǒng)的教學(xué)方法講解課本上的內(nèi)容難以調(diào)動學(xué)生的學(xué)習(xí)積極性。主要原因主要有以下三方面:第一,教學(xué)重理論輕實踐,過分注重計算機語言語法知識的講解,輕視了算法設(shè)計、邏輯思維和編程方法的培養(yǎng);第二,學(xué)生計算機編程能力有待提高,大多數(shù)學(xué)生基本上是初次接觸計算機程序設(shè)計,習(xí)慣采用數(shù)學(xué)思考方式來進(jìn)行程序設(shè)計,還沒有真正掌握計算機編程的基本思路;第三,實驗課時不足,實踐課時通常是理論課時的一半,大部分專業(yè)是16個學(xué)時,這樣的學(xué)時安排遠(yuǎn)遠(yuǎn)不能滿足學(xué)生能力培養(yǎng)的需求。教學(xué)要以學(xué)生為中心,要讓學(xué)生容易接受理解。教師只有從學(xué)生的角度體會“學(xué)”之困惑,反思“教”之缺陷,才能明了如何通過“教”幫助學(xué)生學(xué)習(xí),體現(xiàn)現(xiàn)代教育以人為本的思想。程序設(shè)計基礎(chǔ)課程對許多學(xué)生來說,是第一次接觸編程,因此,學(xué)生往往難以理解程序設(shè)計中分析問題、解決問題的方式,尤其是抽象思維。所以,教師不但要研究教學(xué)內(nèi)容,更要研究教學(xué)對象——學(xué)生,根據(jù)學(xué)生的學(xué)習(xí)特點,研究教學(xué)內(nèi)容傳授中重點和難點的解決辦法。
程序設(shè)計基礎(chǔ)教學(xué)內(nèi)容的組織方式主要有兩種:以語言知識為主線、以程序設(shè)計為主線。目前普遍采用的方式是前者,經(jīng)過一些高校多年的探索實踐,以程序設(shè)計為主線的組織方式也取得了成功的經(jīng)驗。以語言知識為主線的教學(xué)內(nèi)容組織方式往往以上述語言表達(dá)模塊為單位,同時考慮程序設(shè)計的學(xué)習(xí)進(jìn)程來組織教學(xué)內(nèi)容。典型的教學(xué)內(nèi)容組織路線是:概論-數(shù)據(jù)類型和表達(dá)式(標(biāo)準(zhǔn)類型)—分支—循環(huán)—數(shù)組—函數(shù)—指針—結(jié)構(gòu)—文件。以程序設(shè)計為主線的方式則重點圍繞學(xué)生程序設(shè)計能力培養(yǎng),以程序設(shè)計的學(xué)習(xí)進(jìn)程為主,打破語言模塊的完整性,循序漸進(jìn)地組織相關(guān)教學(xué)內(nèi)容。在教學(xué)中,以語言知識為主線的教學(xué)內(nèi)容組織方式重視語法知識的完整性,側(cè)重以語法的理解帶動程序設(shè)計能力的培養(yǎng);以程序設(shè)計為主線的方式則更加強調(diào)編程實踐,側(cè)重以編程帶動對語法知識的深入理解。因此,以程序設(shè)計為主線的教學(xué)組織方式往往按照程序設(shè)計的漸進(jìn)學(xué)習(xí)進(jìn)程,結(jié)合實際案例來組織和實施教學(xué),將程序開發(fā)過程的相關(guān)內(nèi)容貫穿和滲透到每個知識點的講授中去。一種以程序設(shè)計為主線的教學(xué)內(nèi)容組織路線是:概論—初識程序設(shè)計—語句級控制(分支與循環(huán))—數(shù)組應(yīng)用—模塊級控制(函數(shù))—指針、結(jié)構(gòu)應(yīng)用—程序設(shè)計進(jìn)階(遞歸、鏈表結(jié)構(gòu))—文件應(yīng)用。在采用以程序設(shè)計為主線的實施方式時,可以將課程內(nèi)容分為若干漸進(jìn)式的程序設(shè)計學(xué)習(xí)階段。在每個階段的教學(xué)過程中,通過案例講解程序設(shè)計的思想和方法,引出知識點,必要時再使用多種方法(如多媒體動畫)進(jìn)行深入的講解與分析,并通過布置思考題和實驗題,讓學(xué)生通過學(xué)習(xí)思考和大量的上機練習(xí)培養(yǎng)編程能力,掌握知識。
問題驅(qū)動教學(xué)是圍繞教學(xué)目標(biāo),通過完成事先設(shè)置的相關(guān)聯(lián)任務(wù)(例題)來達(dá)成教學(xué)目標(biāo)的實現(xiàn)。在開課前,對典型的例子演示運行結(jié)果,激發(fā)學(xué)生的學(xué)習(xí)興趣,明確學(xué)習(xí)任務(wù)和目標(biāo);在課堂上,將本次課程的內(nèi)容和知識點通過幾個具體的任務(wù)表現(xiàn)出來,引導(dǎo)學(xué)生在完成任務(wù)的過程中掌握所涉及到的理論知識,并注重反例教學(xué),讓學(xué)生“吃一塹,長一智”。這種教學(xué)方式學(xué)習(xí)目的明確,任務(wù)清晰,能極大地調(diào)動學(xué)生的學(xué)習(xí)積極性,對教學(xué)效果的提高起到非常明顯的促進(jìn)作用。

圖1 問題驅(qū)動的教學(xué)流程
模仿創(chuàng)新即通過模仿而進(jìn)行的創(chuàng)新活動。在《C/C++語言程序設(shè)計》課程中,模仿體現(xiàn)在學(xué)生根據(jù)教師所給程序進(jìn)行驗證分析,碰到類似的情況和功能實現(xiàn)可以參照相應(yīng)的程序;創(chuàng)新是在所給驗證性實驗的基礎(chǔ)上,根據(jù)新要求,實現(xiàn)新程序,并能綜合應(yīng)用所學(xué)知識實現(xiàn)復(fù)雜功能程序。課程實驗教學(xué)將學(xué)生學(xué)習(xí)到的理論知識應(yīng)用到實際問題。考慮到學(xué)生的基礎(chǔ)不同,應(yīng)盡量設(shè)計有層次和梯度的實踐訓(xùn)練內(nèi)容,使不同水平的學(xué)生都能得到最大可能的提升。每次的實際教學(xué)設(shè)計中,可以把實驗內(nèi)容分成三部分:驗證、改編和綜合。
1.驗證程序。結(jié)合案例教學(xué)方法,針對每次上課所學(xué)知識點的不同,分別提供給學(xué)生一些已包括所學(xué)知識點、實現(xiàn)實際問題、可直接運行出結(jié)果的有吸引力的案例,即源程序,讓學(xué)生自己執(zhí)行程序和查看結(jié)果,根據(jù)源程序和運行結(jié)果分析其程序中所包含的知識點及程序具體實現(xiàn)的功能,加強學(xué)生分析問題的能力。有時候源程序中包含一些常見錯誤,讓學(xué)生發(fā)現(xiàn)問題,調(diào)試程序,帶來成就感。
2.改編程序。在已給程序的基礎(chǔ)上,提出具體的功能改編要求,學(xué)生需要結(jié)合已學(xué)知識修改相應(yīng)的程序,從而實現(xiàn)新功能。例如,學(xué)生可以通過改編“猜數(shù)字游戲”源程序,實現(xiàn)“提示猜測數(shù)字大小、每個數(shù)字最多猜7次”等功能。
3.綜合程序。在學(xué)習(xí)了基本的程序設(shè)計知識后,通過綜合程序練習(xí)同學(xué)們運用知識解決問題的能力,例如象棋游戲、成績管理系統(tǒng)、智能排序等綜合程序。基于案例的教學(xué)方式有時教師遇到問題暫時卡住時也可問學(xué)生如何解決,學(xué)生會很有興趣積極地幫助教師完成該案例的調(diào)試,這樣真正做到上下交互,教學(xué)相長。這種教學(xué)方式忌只放PPT,要當(dāng)場分析和編程,不能用解說代碼代替實際開發(fā),這樣學(xué)生就更感興趣學(xué)習(xí)編程了。
1.建立“程序設(shè)計學(xué)習(xí)QQ群”。責(zé)任教師申請一個學(xué)習(xí)程序設(shè)計類課程的QQ群,所有的輔導(dǎo)老師和學(xué)習(xí)這門課程的學(xué)生都加入群。開學(xué)初老師把QQ群公布給學(xué)生,讓學(xué)生課后每次上QQ都能看到群里的討論。在QQ群里,學(xué)生與老師,學(xué)生與學(xué)生之間隨時隨地在網(wǎng)上進(jìn)行討論、答疑。在學(xué)習(xí)群里“能者為師”,學(xué)生之間經(jīng)常互相解答問題,這樣既提高了學(xué)生的知識水平和問題的回復(fù)率,也減輕了輔導(dǎo)老師的工作量。
2.定期組織學(xué)習(xí)小組之間的編程競賽。每個班按10人左右分成若干個學(xué)習(xí)小組,老師為組織者和裁判,在教學(xué)大綱的范圍內(nèi)出題進(jìn)行小組之間的編程競賽,由老師出一個相同的題目,小組內(nèi)的成員之間通過小組群,互相協(xié)作,共同參與,最后由組長整理提交程序的結(jié)果,老師做裁判,又快又準(zhǔn)完成程序設(shè)計的小組為勝,獲勝的小組成員每人都獲得平時成績加4分的獎勵。這種編程競賽方式能充分調(diào)動每個小組成員參與的積極性,提高學(xué)生的學(xué)習(xí)興趣,同時又能激發(fā)了學(xué)生的團(tuán)隊合作精神。
3.制作“微課”形式的視頻。仿照“做游戲?qū)W英語”的形式,制作各知識點的微課視頻,在網(wǎng)上共享,以備學(xué)生課下自主學(xué)習(xí)。
[1]吳文虎.我怎么講好“程序設(shè)計基礎(chǔ)”這門課[J].中國大學(xué)教學(xué),2011,(12):10-12.
[2]王洪波.杏壇英華——北京大學(xué)青年教師優(yōu)秀教案集[M].北京:國家圖書館出版社,2009.
[3]教育部高等學(xué)校計算機科學(xué)與技術(shù)教學(xué)指導(dǎo)委員會.高等學(xué)校計算機科學(xué)與技術(shù)專業(yè)核心課程教學(xué)實施方案[M].北京:高等教育出版社,2009.
[4]何欽銘.“程序設(shè)計基礎(chǔ)”課程教學(xué)實施方案[J].中國大學(xué)教學(xué),2010,(5):62-65.
[5]劉芳.《C語言程序設(shè)計》教學(xué)存在的問題及改進(jìn)[J].教育理論與實踐,2012,32(36):51-52.
[6]孫慧然.“程序設(shè)計基礎(chǔ)課”理論與實驗教學(xué)的改革與實踐[J].實驗技術(shù)與管理,2012,29(4):299-300.
G633.6
A
1674-9324(2014)22-0178-02
西安科技大學(xué)計算機學(xué)院教改項目:2013-JG-01。