阿不來(lái)提·吉力力 艾則孜·阿不都艾尼
摘要:“項(xiàng)目驅(qū)動(dòng)教學(xué)法”是以一個(gè)或多個(gè)項(xiàng)目為主線(xiàn)來(lái)推進(jìn)教學(xué)過(guò)程,把學(xué)生需要掌握的知識(shí)點(diǎn)都設(shè)計(jì)并融入到項(xiàng)目的各個(gè)階段環(huán)節(jié)中,學(xué)生通過(guò)自主探索和團(tuán)隊(duì)協(xié)作,給出完整的項(xiàng)目解決方案進(jìn)而掌握相關(guān)的知識(shí)和獲取相應(yīng)的能力。作者在面向?qū)ο髮?shí)踐課程中運(yùn)用項(xiàng)目驅(qū)動(dòng)教學(xué)法實(shí)施教學(xué),取得了良好的教學(xué)效果。
關(guān)鍵詞:面向?qū)ο?;?xiàng)目驅(qū)動(dòng);軟件實(shí)踐;建構(gòu)主義
中圖分類(lèi)號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)03-0113-02
1 項(xiàng)目驅(qū)動(dòng)教學(xué)法
面向?qū)ο蟪绦蛟O(shè)計(jì)是計(jì)算機(jī)類(lèi)專(zhuān)業(yè)的必修課程,在計(jì)算機(jī)類(lèi)專(zhuān)業(yè)(尤其軟件方向)培養(yǎng)計(jì)劃中一直占有重要地位,是一門(mén)介紹程序設(shè)計(jì)方法和培養(yǎng)學(xué)生程序設(shè)計(jì)能力的重要課程,它在軟件類(lèi)課程體系中起著承上啟下的作用。隨著軟件業(yè)的飛速發(fā)展,對(duì)軟件人才提出了更高的要求,程序設(shè)計(jì)教學(xué)的成敗直接關(guān)系到學(xué)生創(chuàng)新能力的培養(yǎng),關(guān)系到學(xué)生是否能夠適應(yīng)市場(chǎng)的需求成為一名合格的軟件人才。由于面向?qū)ο蟊旧硎且环N軟件開(kāi)發(fā)的理念,項(xiàng)目驅(qū)動(dòng)法符合面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)的需要,是一種有效的教學(xué)形式。項(xiàng)目驅(qū)動(dòng)教學(xué)法是近幾年教學(xué)改革才出現(xiàn)的一種新型教學(xué)法,它源于”任務(wù)驅(qū)動(dòng)”教學(xué)法。所謂“任務(wù)驅(qū)動(dòng)”就是在學(xué)習(xí)信息技術(shù)的過(guò)程中,學(xué)生在教師的幫助下,緊緊圍繞一個(gè)共同的任務(wù),在強(qiáng)烈的問(wèn)題動(dòng)機(jī)的驅(qū)動(dòng)下,通過(guò)對(duì)學(xué)習(xí)資源的積極主動(dòng)應(yīng)用,進(jìn)行自主探索和互動(dòng)協(xié)作的學(xué)習(xí),并在完成既定任務(wù)的同時(shí),引導(dǎo)學(xué)生進(jìn)行一種學(xué)習(xí)實(shí)踐活動(dòng)。而“項(xiàng)目驅(qū)動(dòng)教學(xué)法”則是指在教學(xué)過(guò)程中以一個(gè)項(xiàng)目為主線(xiàn)來(lái)展開(kāi),把相關(guān)的知識(shí)點(diǎn)融入到項(xiàng)目的各個(gè)環(huán)節(jié)中去,層層推進(jìn)。通過(guò)對(duì)問(wèn)題的深化或功能擴(kuò)充,來(lái)拓寬知識(shí)的廣度和深度,直至得到一個(gè)完整的項(xiàng)目解決方案,從而達(dá)到學(xué)習(xí)知識(shí)、培養(yǎng)能力的目的。它是一種建立在建構(gòu)主義教學(xué)理論基礎(chǔ)上的教學(xué)法,它要求“項(xiàng)目”的目標(biāo)性和教學(xué)情境的創(chuàng)建。這種教學(xué)方法使學(xué)生帶著真實(shí)的項(xiàng)目目標(biāo)在探索中學(xué)習(xí),并且這個(gè)過(guò)程中,學(xué)生會(huì)不斷地獲得成就感,可以更大地激發(fā)他們的求知欲望和學(xué)習(xí)興趣,逐步形成一個(gè)感知心智活動(dòng)的良性循環(huán),從而培養(yǎng)出獨(dú)立探索、勇于開(kāi)拓進(jìn)取的自學(xué)能力和良好的分析問(wèn)題和解決問(wèn)題的能力。它將以往以傳授知識(shí)為主的填鴨式傳統(tǒng)教學(xué)理念,轉(zhuǎn)變?yōu)橐越鉀Q問(wèn)題、完成任務(wù)為主的多維互動(dòng)式的教學(xué)理念;將再現(xiàn)式教學(xué)轉(zhuǎn)變?yōu)樘骄渴綄W(xué)習(xí),使學(xué)生處于積極的學(xué)習(xí)狀態(tài),每一位學(xué)生都能根據(jù)自己對(duì)當(dāng)前問(wèn)題的理解,運(yùn)用知識(shí)和自己特有的經(jīng)驗(yàn)提出解決方案進(jìn)而解決實(shí)際問(wèn)題。
2 課程內(nèi)容的組織
我們?cè)诿嫦驅(qū)ο蟪绦蛟O(shè)計(jì)方面安排了兩門(mén)課程,一門(mén)是面向?qū)ο蟪绦蛟O(shè)計(jì),它重點(diǎn)講解面向?qū)ο蟪绦蛟O(shè)計(jì)的理論知識(shí)并用C++或Java語(yǔ)言為例具體分析OO(Object-Oriented)的一些概念,例如:類(lèi)、抽象類(lèi)、具體類(lèi)、對(duì)象、構(gòu)造函數(shù)、析構(gòu)函數(shù)、輸入/輸出流、友元、類(lèi)模板、重載、封裝、繼承、派生、多態(tài)性和虛函數(shù)等;另外一門(mén)課程就是程序設(shè)計(jì)綜合實(shí)踐,這門(mén)課程是面向?qū)ο蟪绦蛟O(shè)計(jì)的后續(xù)課, 屬于實(shí)踐類(lèi)課程,假期在機(jī)房連續(xù)集中授課,我們主要就是在這門(mén)課程中應(yīng)用“項(xiàng)目驅(qū)動(dòng)教學(xué)法”實(shí)施教學(xué)。這門(mén)課程的主要教學(xué)目標(biāo)是加強(qiáng)學(xué)生對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)理論知識(shí)的理解并能夠用OO的思想去分析和解決問(wèn)題;初步學(xué)習(xí)并掌握使用UML統(tǒng)一建模語(yǔ)言去對(duì)一個(gè)工程或軟件進(jìn)行分析、總體設(shè)計(jì)和詳細(xì)設(shè)計(jì);初步了解軟件工程的流程并通過(guò)項(xiàng)目實(shí)施去體驗(yàn)整個(gè)軟件的生命周期;初步接觸并使用MFC類(lèi)庫(kù)和掌握構(gòu)建基于Dialog based的工程項(xiàng)目;訓(xùn)練學(xué)生使用STL標(biāo)準(zhǔn)模板庫(kù)中的一些容器、迭代器和相關(guān)算法;初步了解軟件測(cè)試的基本常識(shí)和簡(jiǎn)單方法。
3 項(xiàng)目的選擇和項(xiàng)目驅(qū)動(dòng)的實(shí)施
為了把課程的教學(xué)內(nèi)容體現(xiàn)在具體項(xiàng)目的各個(gè)階段和環(huán)節(jié),我們?cè)O(shè)計(jì)了三個(gè)項(xiàng)目。項(xiàng)目一是簡(jiǎn)單人事信息管理程序;項(xiàng)目二是簡(jiǎn)單銀行存取管理程序;項(xiàng)目三是簡(jiǎn)單英漢字典程序。課程開(kāi)始就要求學(xué)生自己進(jìn)行分組,每個(gè)小組3-4人,整個(gè)課程都是以小組團(tuán)隊(duì)的形式進(jìn)行項(xiàng)目實(shí)施,最后也是以小組的形式進(jìn)行考核。整個(gè)課程分為兩個(gè)階段。
第一階段就是示范項(xiàng)目的講解和實(shí)施。其中項(xiàng)目一簡(jiǎn)單人事信息管理程序就是示范項(xiàng)目,我們給出了項(xiàng)目的要求和目標(biāo)并向?qū)W生提供了詳細(xì)的項(xiàng)目分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試文檔和可執(zhí)行的運(yùn)行界面(如圖一所示),示范項(xiàng)目是教師逐個(gè)步驟的帶領(lǐng)學(xué)生去完成的,所有的分析、設(shè)計(jì)和測(cè)試文檔(不包含源代碼)都提供給學(xué)生了,學(xué)生只需要按照教師的指導(dǎo)和文檔逐個(gè)步驟地推動(dòng)項(xiàng)目的實(shí)施,使用照葫蘆畫(huà)瓢的方法就可以完成項(xiàng)目。學(xué)生在被引導(dǎo)實(shí)施項(xiàng)目的過(guò)程中,很自然地就掌握了需要學(xué)習(xí)的知識(shí)、鍛煉和提高了編程技能和分析能力。
第一階段的實(shí)施也分為幾個(gè)步驟:首先教師給出項(xiàng)目的要求和功能目標(biāo),把項(xiàng)目實(shí)施過(guò)程中需要用到的新知識(shí)進(jìn)行講解。
然后教師就根據(jù)軟件工程的流程,逐環(huán)節(jié)地帶領(lǐng)學(xué)生對(duì)示范項(xiàng)目進(jìn)行需求分析、用visio畫(huà)用例圖;設(shè)計(jì)數(shù)據(jù)類(lèi)、界面類(lèi)的靜態(tài)結(jié)構(gòu)和類(lèi)之間的動(dòng)態(tài)交互以及接口;對(duì)于類(lèi)的一些重點(diǎn)方法進(jìn)行詳細(xì)設(shè)計(jì)給出算法流程;對(duì)于編碼中一些技能技巧也在合適的時(shí)間傳遞給學(xué)生。在講解示范完每一個(gè)環(huán)節(jié),都給學(xué)生一些時(shí)間重復(fù)完成我講解的內(nèi)容。
在完成示范項(xiàng)目的過(guò)程中學(xué)生仍然會(huì)碰到許多問(wèn)題,在這個(gè)時(shí)候,教師并不是直接告訴學(xué)生解決辦法,而是鼓勵(lì)學(xué)生自己通過(guò)查閱MSDN或者上網(wǎng)搜索類(lèi)似問(wèn)題和相應(yīng)的解決方法,這樣可以鍛煉學(xué)生把需要解決的問(wèn)題提煉成若干個(gè)關(guān)鍵字,然后對(duì)搜索到的方法進(jìn)行快速判斷選擇,從而找到正確的解決辦法。
示范項(xiàng)目實(shí)施過(guò)程中教師教和學(xué)生學(xué)是相互穿插交替進(jìn)行的,教師采用一環(huán)扣一環(huán)、多個(gè)任務(wù)驅(qū)動(dòng)的方式使學(xué)生能夠?qū)崿F(xiàn)主動(dòng)、探究式的學(xué)習(xí),使學(xué)生在每一個(gè)階段都有明確的學(xué)習(xí)目標(biāo)和方向,這樣不僅取得了良好的教學(xué)效果,還非常有效地激發(fā)了學(xué)生的學(xué)習(xí)興趣。
課程的第二階段稱(chēng)為自主項(xiàng)目實(shí)施階段:在完成了示范項(xiàng)目之后,每個(gè)小組在項(xiàng)目二和項(xiàng)目三之間選擇一個(gè)項(xiàng)目以團(tuán)隊(duì)協(xié)作的方式,只要完成項(xiàng)目的功能,團(tuán)隊(duì)可以自由發(fā)揮地分析、設(shè)計(jì)和選擇編程方法。每個(gè)項(xiàng)目都有需要完成的程序功能目標(biāo),學(xué)生需要在了解既定目標(biāo)的情況下,對(duì)項(xiàng)目進(jìn)行需求分析并用UML的用例圖進(jìn)行描述;接著使用UML的類(lèi)圖、類(lèi)之間的靜態(tài)關(guān)聯(lián)和動(dòng)態(tài)交互圖以及功能活動(dòng)圖進(jìn)行程序的總體設(shè)計(jì);然后對(duì)每個(gè)類(lèi)的關(guān)鍵方法進(jìn)行詳細(xì)設(shè)計(jì)并給出算法描述;接著用c++語(yǔ)言實(shí)現(xiàn)所有程序功能并集成;最后使用簡(jiǎn)單測(cè)試方法對(duì)程序進(jìn)行功能測(cè)試和性能測(cè)試并給出測(cè)試用例和文檔。自主項(xiàng)目實(shí)施的過(guò)程,每個(gè)小組的組長(zhǎng)和組員們一塊統(tǒng)籌分配任務(wù),有的小組成員水平差不多,則以項(xiàng)目功能模塊來(lái)對(duì)項(xiàng)目進(jìn)行分工,每個(gè)成員負(fù)責(zé)某幾個(gè)模塊的分析、設(shè)計(jì)和實(shí)現(xiàn)工作,最后再將各個(gè)模塊集成匯總成整個(gè)項(xiàng)目。而有的小組成員能力有些差別,他們就根據(jù)每個(gè)人擅長(zhǎng)的特點(diǎn)進(jìn)行分工,編程能力強(qiáng)的同學(xué)負(fù)責(zé)設(shè)計(jì)和編碼,其他同學(xué)負(fù)責(zé)測(cè)試、文檔和UML繪圖等輔助工作。在這個(gè)階段,教師不過(guò)多參與到學(xué)生的項(xiàng)目中,只是從旁在適當(dāng)?shù)臅r(shí)候給各個(gè)小組提出一些建議和必要的時(shí)候提供一些幫助。這就要求教師對(duì)每個(gè)小組的項(xiàng)目實(shí)施進(jìn)度和情況有充分的了解,要做到這一點(diǎn)是非常不容易的,尤其是學(xué)生數(shù)量比較多時(shí)。
4 課程考核和教學(xué)效果
實(shí)踐類(lèi)課程采用傳統(tǒng)的閉卷考試的方法考核學(xué)生顯然是非常不恰當(dāng)?shù)?,為了更好的激發(fā)學(xué)生動(dòng)手的積極性,我們綜合考慮兩個(gè)階段的項(xiàng)目實(shí)施情況進(jìn)行評(píng)價(jià),示范階段的實(shí)施情況作為平時(shí)成績(jī),主要判斷標(biāo)準(zhǔn)是是否每個(gè)步驟都根據(jù)老師的要求完成了相應(yīng)的項(xiàng)目任務(wù),最后是否得到了和預(yù)期一樣的程序可運(yùn)行結(jié)果。而自主實(shí)施階段則根據(jù)小組團(tuán)隊(duì)協(xié)作情況和最后的模型、文檔、源碼三個(gè)部分項(xiàng)目成果對(duì)小組進(jìn)行考核評(píng)價(jià)。
面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)踐課程在經(jīng)過(guò)幾年的“項(xiàng)目驅(qū)動(dòng)教學(xué)方法”教學(xué)實(shí)踐后,學(xué)生在面向?qū)ο蠓治龊驮O(shè)計(jì)的能力、編程技巧方面、團(tuán)隊(duì)協(xié)作的意識(shí)、綜合分析問(wèn)題和解決問(wèn)題的能力都得到了很大的提高,同學(xué)在課程體會(huì)中寫(xiě)到:在項(xiàng)目設(shè)計(jì)與探究的過(guò)程中,我們遇到了各種各樣的問(wèn)題。在解決問(wèn)題的過(guò)程中,不僅對(duì)程序起到了改善和優(yōu)化的作用,更重要的是學(xué)會(huì)了許多程序設(shè)計(jì)方面的知識(shí),讓我們獲益匪淺。
5 總結(jié)
項(xiàng)目驅(qū)動(dòng)教學(xué)法在面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)踐類(lèi)課程中的應(yīng)用突破了傳統(tǒng)的教學(xué)模式,極大地激發(fā)了學(xué)生的求知欲和主動(dòng)探究的學(xué)習(xí)意識(shí),是一種以教師為主導(dǎo)、學(xué)生為主體的教學(xué)模式的有益探索,在今后的教學(xué)研究實(shí)踐中,我們將把這種教學(xué)方法在更多的相關(guān)課程中嘗試和探索。
參考文獻(xiàn):
[1] 孫玉紅. 案例教學(xué)法在“面向?qū)ο蟪绦蛟O(shè)計(jì)”課程中的運(yùn)用[J].電腦知識(shí)與技術(shù),2011,7(7):1703-1704.
[2] 韓明慧.《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程教學(xué)模式探索[J].職業(yè)教育研究,2001(2).
[3] 劉瑜,孔波,楊玫.建構(gòu)主義指導(dǎo)下的面向?qū)ο驝++教學(xué)[J].福建電腦,2009(10).
[4] 柯勝男,黃明和,雷剛.基于“項(xiàng)目驅(qū)動(dòng)”的教學(xué)研究與探索[J].教育與教學(xué)研究,2007(4).