孫瑜
(西安科技大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安 710054)
注重實(shí)踐的程序設(shè)計(jì)課程教學(xué)
孫瑜
(西安科技大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安 710054)
怎樣讓學(xué)生感興趣,怎樣做才能喚醒學(xué)生的力量,提高學(xué)習(xí)的積極性,是課程改革能否成功的一個(gè)關(guān)鍵?!俺绦蛟O(shè)計(jì)不是聽(tīng)會(huì)的,也不是看會(huì)的,而是自己上機(jī)練會(huì)的?!眲?dòng)手才是化難為易的金鑰匙,實(shí)踐是能力賴以生長(zhǎng)的土壤,實(shí)踐出真知,實(shí)踐長(zhǎng)能力。
程序設(shè)計(jì);實(shí)踐;興趣
《C/C++語(yǔ)言程序設(shè)計(jì)》是計(jì)算機(jī)學(xué)科體系中的核心課程之一,主要講授程序設(shè)計(jì)語(yǔ)言的基本知識(shí)和程序設(shè)計(jì)方法,使學(xué)生了解高級(jí)程序設(shè)計(jì)語(yǔ)言的結(jié)構(gòu),掌握程序設(shè)計(jì)的思想和方法,以及基本的程序設(shè)計(jì)過(guò)程和技巧,具備初步的分析問(wèn)題和利用計(jì)算機(jī)求解問(wèn)題的能力。課程核心是培養(yǎng)程序設(shè)計(jì)能力,加強(qiáng)實(shí)踐是培養(yǎng)設(shè)計(jì)能力的重要途徑。本文基于教學(xué)中存在的問(wèn)題,從案例驅(qū)動(dòng)教學(xué)、注重實(shí)踐教學(xué)等兩方面探究如何在實(shí)際教學(xué)中提高學(xué)生的學(xué)習(xí)積極性和思維能力,實(shí)現(xiàn)學(xué)生從單純的程序編寫(xiě)到解決實(shí)際問(wèn)題能力的轉(zhuǎn)變。計(jì)算機(jī)程序設(shè)計(jì)類課程實(shí)踐性很強(qiáng)。實(shí)踐性強(qiáng)體現(xiàn)為無(wú)論多簡(jiǎn)單或多復(fù)雜的程序設(shè)計(jì)問(wèn)題都要形式化為數(shù)學(xué)式子或相應(yīng)的操作步驟,最終都要編寫(xiě)程序,開(kāi)發(fā)出能夠解決相應(yīng)問(wèn)題的計(jì)算機(jī)軟件;學(xué)習(xí)該類課程既要注意學(xué)習(xí)好理論,更要注重進(jìn)行實(shí)際上機(jī)操作的訓(xùn)練,運(yùn)用理論知識(shí)進(jìn)行程序設(shè)計(jì)解決實(shí)際問(wèn)題,做到理論與實(shí)踐相結(jié)合。
本文對(duì)2011、2012和2013年度參加C和VB二級(jí)考試的一年級(jí)理工類學(xué)生做了抽樣統(tǒng)計(jì)(數(shù)據(jù)來(lái)源為西安科技大學(xué)大學(xué)教務(wù)處),結(jié)果表明報(bào)考率和通過(guò)率差強(qiáng)人意,尤其是C語(yǔ)言,9個(gè)班級(jí)中通過(guò)率在50%以上的只有3個(gè)班級(jí),最低的通過(guò)率僅為17.3%。通過(guò)問(wèn)卷調(diào)查的方式獲悉學(xué)生普遍對(duì)C語(yǔ)言的學(xué)習(xí)有畏懼心理。程序設(shè)計(jì)類課程理論性抽象性較強(qiáng),語(yǔ)法知識(shí)繁多,結(jié)構(gòu)復(fù)雜,調(diào)試程序更是初學(xué)者的“攔路虎”,學(xué)生往往難以理解程序設(shè)計(jì)的思維方式,對(duì)教學(xué)內(nèi)容似懂非懂,而掌握良好的程序設(shè)計(jì)方法則更加困難;采用傳統(tǒng)的教學(xué)方法講解課本上的內(nèi)容難以調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性。主要原因主要有以下三方面:第一,教學(xué)重理論輕實(shí)踐,過(guò)分注重計(jì)算機(jī)語(yǔ)言語(yǔ)法知識(shí)的講解,輕視了算法設(shè)計(jì)、邏輯思維和編程方法的培養(yǎng);第二,學(xué)生計(jì)算機(jī)編程能力有待提高,大多數(shù)學(xué)生基本上是初次接觸計(jì)算機(jī)程序設(shè)計(jì),習(xí)慣采用數(shù)學(xué)思考方式來(lái)進(jìn)行程序設(shè)計(jì),還沒(méi)有真正掌握計(jì)算機(jī)編程的基本思路;第三,實(shí)驗(yàn)課時(shí)不足,實(shí)踐課時(shí)通常是理論課時(shí)的一半,大部分專業(yè)是16個(gè)學(xué)時(shí),這樣的學(xué)時(shí)安排遠(yuǎn)遠(yuǎn)不能滿足學(xué)生能力培養(yǎng)的需求。教學(xué)要以學(xué)生為中心,要讓學(xué)生容易接受理解。教師只有從學(xué)生的角度體會(huì)“學(xué)”之困惑,反思“教”之缺陷,才能明了如何通過(guò)“教”幫助學(xué)生學(xué)習(xí),體現(xiàn)現(xiàn)代教育以人為本的思想。程序設(shè)計(jì)基礎(chǔ)課程對(duì)許多學(xué)生來(lái)說(shuō),是第一次接觸編程,因此,學(xué)生往往難以理解程序設(shè)計(jì)中分析問(wèn)題、解決問(wèn)題的方式,尤其是抽象思維。所以,教師不但要研究教學(xué)內(nèi)容,更要研究教學(xué)對(duì)象——學(xué)生,根據(jù)學(xué)生的學(xué)習(xí)特點(diǎn),研究教學(xué)內(nèi)容傳授中重點(diǎn)和難點(diǎn)的解決辦法。
程序設(shè)計(jì)基礎(chǔ)教學(xué)內(nèi)容的組織方式主要有兩種:以語(yǔ)言知識(shí)為主線、以程序設(shè)計(jì)為主線。目前普遍采用的方式是前者,經(jīng)過(guò)一些高校多年的探索實(shí)踐,以程序設(shè)計(jì)為主線的組織方式也取得了成功的經(jīng)驗(yàn)。以語(yǔ)言知識(shí)為主線的教學(xué)內(nèi)容組織方式往往以上述語(yǔ)言表達(dá)模塊為單位,同時(shí)考慮程序設(shè)計(jì)的學(xué)習(xí)進(jìn)程來(lái)組織教學(xué)內(nèi)容。典型的教學(xué)內(nèi)容組織路線是:概論-數(shù)據(jù)類型和表達(dá)式(標(biāo)準(zhǔn)類型)—分支—循環(huán)—數(shù)組—函數(shù)—指針—結(jié)構(gòu)—文件。以程序設(shè)計(jì)為主線的方式則重點(diǎn)圍繞學(xué)生程序設(shè)計(jì)能力培養(yǎng),以程序設(shè)計(jì)的學(xué)習(xí)進(jìn)程為主,打破語(yǔ)言模塊的完整性,循序漸進(jìn)地組織相關(guān)教學(xué)內(nèi)容。在教學(xué)中,以語(yǔ)言知識(shí)為主線的教學(xué)內(nèi)容組織方式重視語(yǔ)法知識(shí)的完整性,側(cè)重以語(yǔ)法的理解帶動(dòng)程序設(shè)計(jì)能力的培養(yǎng);以程序設(shè)計(jì)為主線的方式則更加強(qiáng)調(diào)編程實(shí)踐,側(cè)重以編程帶動(dòng)對(duì)語(yǔ)法知識(shí)的深入理解。因此,以程序設(shè)計(jì)為主線的教學(xué)組織方式往往按照程序設(shè)計(jì)的漸進(jìn)學(xué)習(xí)進(jìn)程,結(jié)合實(shí)際案例來(lái)組織和實(shí)施教學(xué),將程序開(kāi)發(fā)過(guò)程的相關(guān)內(nèi)容貫穿和滲透到每個(gè)知識(shí)點(diǎn)的講授中去。一種以程序設(shè)計(jì)為主線的教學(xué)內(nèi)容組織路線是:概論—初識(shí)程序設(shè)計(jì)—語(yǔ)句級(jí)控制(分支與循環(huán))—數(shù)組應(yīng)用—模塊級(jí)控制(函數(shù))—指針、結(jié)構(gòu)應(yīng)用—程序設(shè)計(jì)進(jìn)階(遞歸、鏈表結(jié)構(gòu))—文件應(yīng)用。在采用以程序設(shè)計(jì)為主線的實(shí)施方式時(shí),可以將課程內(nèi)容分為若干漸進(jìn)式的程序設(shè)計(jì)學(xué)習(xí)階段。在每個(gè)階段的教學(xué)過(guò)程中,通過(guò)案例講解程序設(shè)計(jì)的思想和方法,引出知識(shí)點(diǎn),必要時(shí)再使用多種方法(如多媒體動(dòng)畫(huà))進(jìn)行深入的講解與分析,并通過(guò)布置思考題和實(shí)驗(yàn)題,讓學(xué)生通過(guò)學(xué)習(xí)思考和大量的上機(jī)練習(xí)培養(yǎng)編程能力,掌握知識(shí)。
問(wèn)題驅(qū)動(dòng)教學(xué)是圍繞教學(xué)目標(biāo),通過(guò)完成事先設(shè)置的相關(guān)聯(lián)任務(wù)(例題)來(lái)達(dá)成教學(xué)目標(biāo)的實(shí)現(xiàn)。在開(kāi)課前,對(duì)典型的例子演示運(yùn)行結(jié)果,激發(fā)學(xué)生的學(xué)習(xí)興趣,明確學(xué)習(xí)任務(wù)和目標(biāo);在課堂上,將本次課程的內(nèi)容和知識(shí)點(diǎn)通過(guò)幾個(gè)具體的任務(wù)表現(xiàn)出來(lái),引導(dǎo)學(xué)生在完成任務(wù)的過(guò)程中掌握所涉及到的理論知識(shí),并注重反例教學(xué),讓學(xué)生“吃一塹,長(zhǎng)一智”。這種教學(xué)方式學(xué)習(xí)目的明確,任務(wù)清晰,能極大地調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,對(duì)教學(xué)效果的提高起到非常明顯的促進(jìn)作用。
圖1 問(wèn)題驅(qū)動(dòng)的教學(xué)流程
模仿創(chuàng)新即通過(guò)模仿而進(jìn)行的創(chuàng)新活動(dòng)。在《C/C++語(yǔ)言程序設(shè)計(jì)》課程中,模仿體現(xiàn)在學(xué)生根據(jù)教師所給程序進(jìn)行驗(yàn)證分析,碰到類似的情況和功能實(shí)現(xiàn)可以參照相應(yīng)的程序;創(chuàng)新是在所給驗(yàn)證性實(shí)驗(yàn)的基礎(chǔ)上,根據(jù)新要求,實(shí)現(xiàn)新程序,并能綜合應(yīng)用所學(xué)知識(shí)實(shí)現(xiàn)復(fù)雜功能程序。課程實(shí)驗(yàn)教學(xué)將學(xué)生學(xué)習(xí)到的理論知識(shí)應(yīng)用到實(shí)際問(wèn)題??紤]到學(xué)生的基礎(chǔ)不同,應(yīng)盡量設(shè)計(jì)有層次和梯度的實(shí)踐訓(xùn)練內(nèi)容,使不同水平的學(xué)生都能得到最大可能的提升。每次的實(shí)際教學(xué)設(shè)計(jì)中,可以把實(shí)驗(yàn)內(nèi)容分成三部分:驗(yàn)證、改編和綜合。
1.驗(yàn)證程序。結(jié)合案例教學(xué)方法,針對(duì)每次上課所學(xué)知識(shí)點(diǎn)的不同,分別提供給學(xué)生一些已包括所學(xué)知識(shí)點(diǎn)、實(shí)現(xiàn)實(shí)際問(wèn)題、可直接運(yùn)行出結(jié)果的有吸引力的案例,即源程序,讓學(xué)生自己執(zhí)行程序和查看結(jié)果,根據(jù)源程序和運(yùn)行結(jié)果分析其程序中所包含的知識(shí)點(diǎn)及程序具體實(shí)現(xiàn)的功能,加強(qiáng)學(xué)生分析問(wèn)題的能力。有時(shí)候源程序中包含一些常見(jiàn)錯(cuò)誤,讓學(xué)生發(fā)現(xiàn)問(wèn)題,調(diào)試程序,帶來(lái)成就感。
2.改編程序。在已給程序的基礎(chǔ)上,提出具體的功能改編要求,學(xué)生需要結(jié)合已學(xué)知識(shí)修改相應(yīng)的程序,從而實(shí)現(xiàn)新功能。例如,學(xué)生可以通過(guò)改編“猜數(shù)字游戲”源程序,實(shí)現(xiàn)“提示猜測(cè)數(shù)字大小、每個(gè)數(shù)字最多猜7次”等功能。
3.綜合程序。在學(xué)習(xí)了基本的程序設(shè)計(jì)知識(shí)后,通過(guò)綜合程序練習(xí)同學(xué)們運(yùn)用知識(shí)解決問(wèn)題的能力,例如象棋游戲、成績(jī)管理系統(tǒng)、智能排序等綜合程序?;诎咐慕虒W(xué)方式有時(shí)教師遇到問(wèn)題暫時(shí)卡住時(shí)也可問(wèn)學(xué)生如何解決,學(xué)生會(huì)很有興趣積極地幫助教師完成該案例的調(diào)試,這樣真正做到上下交互,教學(xué)相長(zhǎng)。這種教學(xué)方式忌只放PPT,要當(dāng)場(chǎng)分析和編程,不能用解說(shuō)代碼代替實(shí)際開(kāi)發(fā),這樣學(xué)生就更感興趣學(xué)習(xí)編程了。
1.建立“程序設(shè)計(jì)學(xué)習(xí)QQ群”。責(zé)任教師申請(qǐng)一個(gè)學(xué)習(xí)程序設(shè)計(jì)類課程的QQ群,所有的輔導(dǎo)老師和學(xué)習(xí)這門(mén)課程的學(xué)生都加入群。開(kāi)學(xué)初老師把QQ群公布給學(xué)生,讓學(xué)生課后每次上QQ都能看到群里的討論。在QQ群里,學(xué)生與老師,學(xué)生與學(xué)生之間隨時(shí)隨地在網(wǎng)上進(jìn)行討論、答疑。在學(xué)習(xí)群里“能者為師”,學(xué)生之間經(jīng)?;ハ嘟獯饐?wèn)題,這樣既提高了學(xué)生的知識(shí)水平和問(wèn)題的回復(fù)率,也減輕了輔導(dǎo)老師的工作量。
2.定期組織學(xué)習(xí)小組之間的編程競(jìng)賽。每個(gè)班按10人左右分成若干個(gè)學(xué)習(xí)小組,老師為組織者和裁判,在教學(xué)大綱的范圍內(nèi)出題進(jìn)行小組之間的編程競(jìng)賽,由老師出一個(gè)相同的題目,小組內(nèi)的成員之間通過(guò)小組群,互相協(xié)作,共同參與,最后由組長(zhǎng)整理提交程序的結(jié)果,老師做裁判,又快又準(zhǔn)完成程序設(shè)計(jì)的小組為勝,獲勝的小組成員每人都獲得平時(shí)成績(jī)加4分的獎(jiǎng)勵(lì)。這種編程競(jìng)賽方式能充分調(diào)動(dòng)每個(gè)小組成員參與的積極性,提高學(xué)生的學(xué)習(xí)興趣,同時(shí)又能激發(fā)了學(xué)生的團(tuán)隊(duì)合作精神。
3.制作“微課”形式的視頻。仿照“做游戲?qū)W英語(yǔ)”的形式,制作各知識(shí)點(diǎn)的微課視頻,在網(wǎng)上共享,以備學(xué)生課下自主學(xué)習(xí)。
[1]吳文虎.我怎么講好“程序設(shè)計(jì)基礎(chǔ)”這門(mén)課[J].中國(guó)大學(xué)教學(xué),2011,(12):10-12.
[2]王洪波.杏壇英華——北京大學(xué)青年教師優(yōu)秀教案集[M].北京:國(guó)家圖書(shū)館出版社,2009.
[3]教育部高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)教學(xué)指導(dǎo)委員會(huì).高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)核心課程教學(xué)實(shí)施方案[M].北京:高等教育出版社,2009.
[4]何欽銘.“程序設(shè)計(jì)基礎(chǔ)”課程教學(xué)實(shí)施方案[J].中國(guó)大學(xué)教學(xué),2010,(5):62-65.
[5]劉芳.《C語(yǔ)言程序設(shè)計(jì)》教學(xué)存在的問(wèn)題及改進(jìn)[J].教育理論與實(shí)踐,2012,32(36):51-52.
[6]孫慧然.“程序設(shè)計(jì)基礎(chǔ)課”理論與實(shí)驗(yàn)教學(xué)的改革與實(shí)踐[J].實(shí)驗(yàn)技術(shù)與管理,2012,29(4):299-300.
G633.6
A
1674-9324(2014)22-0178-02
西安科技大學(xué)計(jì)算機(jī)學(xué)院教改項(xiàng)目:2013-JG-01。