吳小菁
(福建江夏學(xué)院,福建 福州 350108)
軟件工程專業(yè)是以培養(yǎng)復(fù)合型軟件工程人才為目標(biāo),是一門借鑒傳統(tǒng)工程的原則和方法,將計(jì)算機(jī)科學(xué)、數(shù)學(xué)和管理科學(xué)巧妙地結(jié)合起來(lái),開(kāi)發(fā)和維護(hù)軟件產(chǎn)品的學(xué)科.因此,在高校中,計(jì)算機(jī)科學(xué)技術(shù)與軟件工程專業(yè)所設(shè)置的課程會(huì)有些交叉,即使開(kāi)設(shè)的課程相同,也必須在教學(xué)上進(jìn)行調(diào)整,以適應(yīng)軟件工程專業(yè)知識(shí)領(lǐng)域和人才培養(yǎng)目標(biāo)的需求.本文以軟件工程專業(yè)開(kāi)設(shè)的程序設(shè)計(jì)類課程為例,為了取得良好的教學(xué)效果在教學(xué)內(nèi)容、教學(xué)模式、實(shí)踐環(huán)節(jié)、考核方式等方面進(jìn)行改革.
程序設(shè)計(jì)類課程是軟件工程專業(yè)一門重要的專業(yè)基礎(chǔ)課,它以計(jì)算機(jī)語(yǔ)言為基礎(chǔ),運(yùn)用程序設(shè)計(jì)邏輯及特定的算法進(jìn)行程序設(shè)計(jì)能力的培養(yǎng).該課程具有很強(qiáng)的實(shí)踐性,但是高校的課程教學(xué)僅僅建立在對(duì)語(yǔ)言本身的認(rèn)識(shí)上,課程教學(xué)理念嚴(yán)重滯后于實(shí)際需要,教師不愛(ài)上,學(xué)生不愛(ài)聽(tīng),以至于教學(xué)效果不理想.現(xiàn)在的軟件工程專業(yè)學(xué)生擁有的優(yōu)勢(shì)越來(lái)越少,就業(yè)壓力也越來(lái)越大,應(yīng)該在程序設(shè)計(jì)類課程傳授中樹(shù)立新的語(yǔ)言教學(xué)理念,語(yǔ)言知識(shí)傳授只能夠占到整個(gè)程序設(shè)計(jì)類課程教學(xué)工作的1/3,另外兩個(gè)2/3應(yīng)該分別是引導(dǎo)學(xué)生去思考、去探索,進(jìn)行研究性學(xué)習(xí).學(xué)生的學(xué)習(xí)激情被激發(fā)出來(lái),就會(huì)超越課堂時(shí)空的限制,學(xué)生才能夠超越自己的老師.
2.2.1 任務(wù)提出
課堂教學(xué)中,教師具有與以往教學(xué)不同的角色與職責(zé),教師自己要事先開(kāi)發(fā)出項(xiàng)目,精心設(shè)計(jì)任務(wù),創(chuàng)設(shè)問(wèn)題情境,任務(wù)驅(qū)動(dòng)下的教學(xué)流程讓學(xué)生在自身認(rèn)知經(jīng)驗(yàn)的基礎(chǔ)上自主地體驗(yàn)一個(gè)程序需要運(yùn)用的知識(shí),尤其是如何更好的運(yùn)用在實(shí)際問(wèn)題中.教師這個(gè)階段主要扮演學(xué)習(xí)者、研究者、引導(dǎo)者、指導(dǎo)者的角色.在課堂教學(xué)實(shí)踐中,教師的作用主要體現(xiàn)在以下幾點(diǎn):
(1)設(shè)置學(xué)習(xí)情景;
(2)必要的教學(xué)示范;
(3)設(shè)計(jì)學(xué)習(xí)活動(dòng);
(3)引導(dǎo)學(xué)生利用學(xué)習(xí)資源;
(4)組織監(jiān)督教學(xué)過(guò)程;
(5)學(xué)習(xí)階段的總結(jié).
2.2.2 自主探索
在編寫程序過(guò)程中讓學(xué)生自己進(jìn)行探索性的學(xué)習(xí),程序設(shè)計(jì)中的成果能極大地增加學(xué)生的成就感、培養(yǎng)學(xué)生程序設(shè)計(jì)的興趣,并達(dá)到更加牢靠地鞏固理論知識(shí)的目的.選出較優(yōu)秀的程序設(shè)計(jì)案例,進(jìn)行答辯,老師與其他學(xué)生做為答辯委員,制作者用適當(dāng)?shù)恼Z(yǔ)言清晰地表達(dá)其思考過(guò)程及程序設(shè)計(jì)方法.
2.2.3 教師點(diǎn)評(píng)
回顧知識(shí)點(diǎn),總結(jié)知識(shí)重點(diǎn)難點(diǎn),給學(xué)生充分的自我評(píng)價(jià)的機(jī)會(huì),調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,減少他們的挫敗感,鼓勵(lì)他們大膽嘗試新方法、新技術(shù),用多種方法解決問(wèn)題,培養(yǎng)創(chuàng)新能力.
2.2.4 任務(wù)解決
通過(guò)學(xué)生的自主交流、探索與教師的點(diǎn)評(píng),得出最佳的解決方案.
表2-1 研究性學(xué)習(xí)策略與傳統(tǒng)學(xué)習(xí)的比對(duì)
本人設(shè)計(jì)一個(gè)完整的案例,從算法方面具體說(shuō)明了研究性學(xué)習(xí)策略在程序設(shè)計(jì)課程中的應(yīng)用,以下的案例是《C++程序設(shè)計(jì)語(yǔ)言》中遞歸編程技術(shù)的學(xué)習(xí).
3.1.1 教學(xué)設(shè)計(jì)思路
學(xué)生對(duì)程序設(shè)計(jì)大都有一種懼怕的心理,總認(rèn)為程序設(shè)計(jì)太難了.遞歸法是程序設(shè)計(jì)中的一個(gè)難點(diǎn)內(nèi)容,在教學(xué)過(guò)程中,如何才能解決程序設(shè)計(jì)本身枯燥、難懂這個(gè)問(wèn)題?本案例通過(guò)游戲法導(dǎo)入,激起學(xué)生學(xué)習(xí)的興趣,然后讓學(xué)生進(jìn)行研究,對(duì)程序設(shè)計(jì)過(guò)程中如何培養(yǎng)學(xué)生的邏輯思維能力和抽象思維能力給予了適當(dāng)?shù)年P(guān)注.學(xué)生在對(duì)自己的游戲過(guò)程的分析和總結(jié),也得出了遞歸法的算法思想,然后編寫、調(diào)試程序.這樣一點(diǎn)一點(diǎn)地揭開(kāi)遞歸法的“神秘面紗”,學(xué)生就不會(huì)感覺(jué)到算法深不可測(cè),也增加了他們學(xué)習(xí)程序設(shè)計(jì)課程的信心.
3.1.2 教學(xué)過(guò)程
3.1.2.1 情景創(chuàng)設(shè)
游戲規(guī)則:設(shè)A、B、C是3個(gè)光盤桿.開(kāi)始時(shí),在桿A上有一疊共3個(gè)光盤,這些光盤自下而上,由大到小地疊在一起.各光盤從小到大編號(hào)為1,2,3,如圖3-1所示.現(xiàn)要求將桿A上的這一疊光盤移到桿B上,并仍按同樣順序疊置.在移動(dòng)光盤時(shí)應(yīng)遵守以下移動(dòng)規(guī)則:規(guī)則(1):每次只能移動(dòng)1個(gè)光盤;規(guī)則(2):任何時(shí)刻都不允許將較大的光盤壓在較小的光盤之上;規(guī)則(3):在滿足移動(dòng)規(guī)則(1)和(2)的前提下,可將光盤移至A,B,C中任一桿上.
游戲開(kāi)始:同桌一組開(kāi)始做游戲,學(xué)生很高興地投入到游戲中.
圖3-1 Hanoi塔問(wèn)題
3.1.2.2 適當(dāng)引導(dǎo)
引導(dǎo)學(xué)生:當(dāng)光盤數(shù)為1、2、3、4等不同的數(shù)時(shí),有沒(méi)有什么規(guī)律?學(xué)生在游戲中得出:就是將最后一個(gè)盤子挪到B桿子上,將其余的盤子挪到C桿子上.
3.1.2.3 遞歸概念的引入
首先:必須將A最大的盤子移動(dòng)到B最下面,首先需要借助B將A上面的n-1個(gè)盤子移動(dòng)到C上面就是hanoi(n-1,A,C,B).此時(shí)A上面只有一個(gè)最大的盤子,C上面按序放著n-1個(gè)盤子,B上面有0個(gè)盤子.
其次:將A上面的盤子移動(dòng)到B上面,只需要1步.此時(shí)A上面有0個(gè)盤子,C上面按序放著n-1個(gè)盤子,A上面只有一個(gè)最大的盤子.
最后:借助于A柱子將C上面n-1個(gè)盤子移到B上面即可就是hanoi(n-1,C,B,A).
總結(jié):就是將最后一個(gè)(n-i個(gè),i=0、1、2、3、……)盤子挪到第B上,將其余的盤子挪到第C上(借助第B個(gè)位子),一直這樣遞歸下去,而中間的怎樣借助第B將盤子挪到C上不用考慮.數(shù)學(xué)推導(dǎo)公式為:f(n)=2f(n-1)+1,其中 f(1)=1,f(n)表示將 n個(gè)盤子從A柱子移到B柱子的步數(shù).
3.1.2.4 提出問(wèn)題
試編寫一個(gè)程序,用最少的移動(dòng)次數(shù)將塔座A上的n個(gè)圓盤移到塔座B 上,并仍按同樣順序疊置.對(duì)于給定的正整數(shù)n,編程計(jì)算最優(yōu)移動(dòng)方案,將計(jì)算出的最優(yōu)移動(dòng)方案輸出到文件output.txt.文件的每一行由一個(gè)正整數(shù)k和2個(gè)字符c1和c2組成,表示將第k個(gè)圓盤從塔座c1移到塔座c2上.
如k=3時(shí),輸出為1 A B;2 A C;1 B C;3 A B;1 C A;2 C B;1 A B
3.1.2.5 自主探索
學(xué)生設(shè)計(jì)算法,編寫程序,教師巡視指導(dǎo).允許學(xué)生合交流探討,調(diào)試工作可以做為家庭作業(yè),課后完成.通過(guò)email把作業(yè)成果提交給教師.
3.1.2.6 自動(dòng)化程序編譯系統(tǒng)批改學(xué)生作業(yè)
程序在線評(píng)測(cè)系統(tǒng)可以對(duì)作業(yè)進(jìn)行自動(dòng)編譯,檢查出程序是否存在語(yǔ)法錯(cuò)誤;另一方面,它還能驗(yàn)證程序是否能得到正確結(jié)果,以及所花費(fèi)的代價(jià)(時(shí)間和空間上的).根據(jù)處理結(jié)果與相應(yīng)的參數(shù)設(shè)置,程序在線評(píng)測(cè)系統(tǒng)能自動(dòng)給出學(xué)生此次編程作業(yè)的成績(jī),消除了老師在檢查作業(yè)的過(guò)程中的主觀因素,增加了學(xué)生之間的公平性.
3.1.2.7 答辯
編譯系統(tǒng)評(píng)出優(yōu)秀作業(yè),編寫者在下一次課前做優(yōu)秀作業(yè)的答辯.學(xué)生根據(jù)編寫的程序,制作PPT,向老師與全班同學(xué)展示,并回答老師與同學(xué)的提問(wèn),答辯通過(guò)可以在考核中加分.
3.1.2.8 老師點(diǎn)評(píng)
教師對(duì)學(xué)生在學(xué)習(xí)過(guò)程中的表現(xiàn)進(jìn)行總結(jié),并引導(dǎo)學(xué)生對(duì)本課主要知識(shí)點(diǎn)進(jìn)行簡(jiǎn)單總結(jié),并提出遞歸法在編程中的其它應(yīng)用.
3.1.2.9 問(wèn)題解決
課程設(shè)計(jì)是實(shí)踐教學(xué)的重要組成部分,上機(jī)實(shí)驗(yàn)大多是消化上課內(nèi)容,學(xué)生們模仿多于創(chuàng)新,不利于培養(yǎng)學(xué)生們的啟發(fā)式思維和實(shí)際解決問(wèn)題的能力.所以,課程設(shè)計(jì)是在基本教學(xué)內(nèi)容完成之后的綜合練習(xí),一般兩個(gè)星期內(nèi)完成.課程設(shè)計(jì)強(qiáng)調(diào)設(shè)計(jì)出的系統(tǒng)具有實(shí)用性、完整性和創(chuàng)新性,有一定規(guī)模和功能相對(duì)完整.學(xué)生們通過(guò)集中時(shí)間的強(qiáng)化學(xué)習(xí)和訓(xùn)練,能更好的貫穿和總結(jié)軟件開(kāi)發(fā)思想和技術(shù),鍛煉了分析、修改和設(shè)計(jì)程序的動(dòng)手能力,并能夠在實(shí)訓(xùn)的過(guò)程中培養(yǎng)團(tuán)隊(duì)精神.
程序設(shè)計(jì)能力占50%.
課程設(shè)計(jì)說(shuō)明書(shū)完成情況占20%.
口頭答辯占20%.
其他(考勤、課堂紀(jì)律等)占10%.
大學(xué)本科教學(xué)作為大學(xué)教學(xué)工作的中心工作,承擔(dān)著高素質(zhì)人才的培養(yǎng)重任,理應(yīng)改變以往傳統(tǒng)的傳遞性教學(xué)模式,用全新的教學(xué)理念指導(dǎo)自己的教學(xué)實(shí)踐.經(jīng)過(guò)教學(xué)過(guò)程的實(shí)踐與學(xué)生反饋,引入研究性的這種教學(xué)方法收到了良好的效果,增強(qiáng)了學(xué)生解決問(wèn)題的熱情,從而提高了學(xué)習(xí)效率.因此大學(xué)生都需要具備這樣一種研究性學(xué)習(xí)的意識(shí)和精神,以此響應(yīng)國(guó)家、社會(huì)對(duì)創(chuàng)新人才的培養(yǎng)需求和大學(xué)生自身全面發(fā)展的需要.
〔1〕蔡曉麗,陳舜青,丁志云.計(jì)算機(jī)語(yǔ)言類課程實(shí)踐環(huán)節(jié)教學(xué)改革探討[J].常州工學(xué)院學(xué)報(bào),2010(6):63-96.
〔2〕馬華,陳振.應(yīng)用型本科院校程序設(shè)計(jì)課程實(shí)驗(yàn)教學(xué)改革研究[J].計(jì)算機(jī)教育,2011(4):19-22.
〔3〕駱斌,王浩然.軟件工程專業(yè)程序設(shè)計(jì)類課程的設(shè)計(jì)[J].吉林大學(xué)學(xué)報(bào),2005(23).
〔4〕付沙.高校程序設(shè)計(jì)課程教學(xué)改革與實(shí)踐[J].計(jì)算機(jī)教育,2010(2):21-24.
〔5〕常本勤.基于問(wèn)題的學(xué)習(xí)模式在程序設(shè)計(jì)類課程教學(xué)中的應(yīng)用[J].計(jì)算機(jī)教育,2010(2):125-127.
〔6〕于鋼.研究性學(xué)習(xí)課程的教學(xué)策略[J].教育探索,2003(06):33-34.