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