摘要:針對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)課程提出了基于實(shí)訓(xùn)項(xiàng)目的教學(xué)方法,文章首先分析了該課程的現(xiàn)狀,然后闡述了基于實(shí)訓(xùn)項(xiàng)目開展教學(xué)的必要性,重點(diǎn)討論了教學(xué)目標(biāo)、教學(xué)內(nèi)容設(shè)計(jì)、課堂實(shí)訓(xùn)項(xiàng)目和學(xué)生實(shí)訓(xùn)項(xiàng)目安排等問題。
關(guān)鍵詞:面向?qū)ο蟪绦蛟O(shè)計(jì);實(shí)訓(xùn)項(xiàng)目;教學(xué)方法
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
面向?qū)ο蟪绦蛟O(shè)計(jì)是針對(duì)計(jì)算機(jī)相關(guān)專業(yè)開設(shè)的一門程序設(shè)計(jì)課程,這門課程的目的是向?qū)W生介紹面向?qū)ο蟪绦蛟O(shè)計(jì)的思想、理論、方法和技術(shù)。本文針對(duì)這門課程提出了基于實(shí)訓(xùn)項(xiàng)目的教學(xué)方法,并詳細(xì)地闡述了其教學(xué)目標(biāo)、內(nèi)容設(shè)計(jì)和實(shí)訓(xùn)項(xiàng)目安排等問題。
1課程現(xiàn)狀
據(jù)筆者調(diào)查統(tǒng)計(jì),面向?qū)ο蟪绦蛟O(shè)計(jì)在各高校主要存在以下三種教學(xué)形式。
(1) 以計(jì)算機(jī)語(yǔ)言為主,側(cè)重于介紹面向?qū)ο蟪绦蛟O(shè)計(jì)的思想、概念、理論,類的設(shè)計(jì)和實(shí)現(xiàn),以及數(shù)據(jù)封裝、繼承、多態(tài)性等有關(guān)OOP的機(jī)制,如文獻(xiàn)[2]、[4]。采用的語(yǔ)言主要有C++、Java。
(2) 以開發(fā)工具為主,側(cè)重于介紹面向?qū)ο箝_發(fā)工具的使用和相關(guān)知識(shí),包括標(biāo)準(zhǔn)控件的使用、軟件開發(fā)模式和技巧等,如文獻(xiàn)[3]。采用的開發(fā)工具主要有VFP、VB、VC等。
(3) 以介紹面向?qū)ο蟮南到y(tǒng)分析與設(shè)計(jì)方法為主,包括相關(guān)軟件工具的使用,如UML、Rational Rose等。
筆者在五年的教學(xué)過程中先是采用第一種方式教學(xué),在教學(xué)時(shí)發(fā)現(xiàn)由于面向?qū)ο蟪绦蛟O(shè)計(jì)中概念太多,如果沒有項(xiàng)目經(jīng)驗(yàn),學(xué)生很難理解。后來(lái)筆者也嘗試著按第二種方式教學(xué),但因?yàn)殚_發(fā)工具太強(qiáng)大,在有限的課時(shí)內(nèi)無(wú)法完整地介紹完一個(gè)開發(fā)工具,并且學(xué)生總是熱衷于開發(fā)一些簡(jiǎn)單的項(xiàng)目,而忽視了面向?qū)ο罄碚摰恼莆?。在教學(xué)中,筆者逐漸意識(shí)到,通過實(shí)訓(xùn)項(xiàng)目將面向?qū)ο罄碚撝R(shí)和面向?qū)ο箝_發(fā)工具的使用有機(jī)地串接起來(lái),是一種比較好的教學(xué)方法。這就是本文將要探討的基于實(shí)訓(xùn)項(xiàng)目的教學(xué)方法。
2基于實(shí)訓(xùn)項(xiàng)目開展教學(xué)的必要性
面向?qū)ο蟪绦蛟O(shè)計(jì)課程中的實(shí)訓(xùn)項(xiàng)目,是指在具體的開發(fā)工具和編程環(huán)境中,從需求分析入手,經(jīng)過功能設(shè)計(jì)、算法設(shè)計(jì)、程序設(shè)計(jì)、功能測(cè)試等環(huán)節(jié),通過團(tuán)隊(duì)協(xié)作完成具體的軟件項(xiàng)目,鞏固課程知識(shí)和學(xué)習(xí)效果,提過軟件開發(fā)實(shí)踐能力。
實(shí)訓(xùn)項(xiàng)目在規(guī)模和功能上比一般的實(shí)驗(yàn)項(xiàng)目要大,周期也更長(zhǎng)。實(shí)訓(xùn)項(xiàng)目完全模擬實(shí)際軟件項(xiàng)目開發(fā)過程,通過2~4人的團(tuán)隊(duì)完成一個(gè)較大規(guī)模的項(xiàng)目。學(xué)生在實(shí)訓(xùn)項(xiàng)目中積累的軟件開發(fā)能力和經(jīng)驗(yàn)是實(shí)驗(yàn)項(xiàng)目無(wú)法達(dá)到的。
在面向?qū)ο蟪绦蛟O(shè)計(jì)課程中可以也完全有必要基于實(shí)訓(xùn)項(xiàng)目來(lái)開展教學(xué),原因主要如下:
(1) 這是為實(shí)現(xiàn)應(yīng)用型和技術(shù)型人才培養(yǎng)目標(biāo)所必需的。為實(shí)現(xiàn)這個(gè)培養(yǎng)目標(biāo),相關(guān)課程,特別是實(shí)踐性很強(qiáng)的課程,應(yīng)該適應(yīng)社會(huì)和用人單位對(duì)人才的需求而不斷完善課程的建設(shè),以提高學(xué)生的實(shí)踐能力。通過實(shí)訓(xùn)項(xiàng)目教學(xué),學(xué)生掌握的理論知識(shí)、開發(fā)工具使用技巧、軟件開發(fā)能力和經(jīng)驗(yàn)可以直接應(yīng)用在今后的工作崗位上。
(2) 這是由課程性質(zhì)決定的。面向?qū)ο罄碚撝械乃枷?、概念等都比較抽象,只有結(jié)合具體的、較大規(guī)模的軟件項(xiàng)目,學(xué)生才能較好地理解和掌握面向?qū)ο罄碚?。另?基于實(shí)訓(xùn)項(xiàng)目開展教學(xué)能在較大程度上避免理論知識(shí)的枯燥性,激發(fā)學(xué)生的學(xué)習(xí)積極性。在實(shí)訓(xùn)項(xiàng)目中,學(xué)生可以直接運(yùn)用理論知識(shí)來(lái)指導(dǎo)實(shí)訓(xùn)項(xiàng)目,并可以直觀地觀察到相關(guān)概念、思想在實(shí)訓(xùn)項(xiàng)目中的體現(xiàn)。
(3) 通過實(shí)訓(xùn)項(xiàng)目中的團(tuán)隊(duì)協(xié)作,學(xué)生可以互相交流、學(xué)習(xí),這種和諧的氛圍能提高學(xué)生的學(xué)習(xí)效率。
(4) 通過實(shí)訓(xùn)項(xiàng)目,師生之間有更多的交流機(jī)會(huì),這對(duì)教學(xué)改革中新型師生關(guān)系建立等方面起到了很大的推動(dòng)作用。
3基于實(shí)訓(xùn)項(xiàng)目的課程教學(xué)
本文接下來(lái)從教學(xué)目標(biāo)、教學(xué)內(nèi)容安排、課堂實(shí)訓(xùn)項(xiàng)目教學(xué)、學(xué)生實(shí)訓(xùn)項(xiàng)目安排及考核等方面來(lái)闡述基于實(shí)訓(xùn)項(xiàng)目的課程教學(xué)。
3.1教學(xué)目標(biāo)
基于實(shí)訓(xùn)項(xiàng)目的教學(xué)方法,其教學(xué)目標(biāo)為:
使學(xué)生深入理解面向?qū)ο蟮木幊趟枷?、概念和方?掌握面向?qū)ο蟪绦蛟O(shè)計(jì)中數(shù)據(jù)封裝、繼承、多態(tài)性等等有關(guān)OOP的機(jī)制,掌握類的設(shè)計(jì)方法,并能在實(shí)際的Windows編程中加以靈活運(yùn)用。
掌握Windows編程基礎(chǔ)知識(shí),熟練掌握VC開發(fā)工具,掌握基于API函數(shù)和基于MFC的面向?qū)ο蠹翱梢暬绦蛟O(shè)計(jì)方法。
運(yùn)用面向?qū)ο蟪绦蛟O(shè)計(jì)理論進(jìn)行軟件開發(fā),能設(shè)計(jì)開發(fā)出一個(gè)中小型綜合性的Windows程序項(xiàng)目。
3.2教學(xué)內(nèi)容設(shè)計(jì)
為了適應(yīng)基于實(shí)訓(xùn)項(xiàng)目的教學(xué)方法,筆者重新設(shè)計(jì)了課程的教學(xué)內(nèi)容,包括課堂教學(xué)內(nèi)容和實(shí)驗(yàn)教學(xué)內(nèi)容。
(1) 課堂教學(xué)內(nèi)容分為三部分內(nèi)容,如表1所示。每部分內(nèi)容安排如下。
第一部分是基于API函數(shù)的可視化程序設(shè)計(jì)。筆者選擇從API函數(shù)入手,向?qū)W生介紹Windows編程基礎(chǔ)知識(shí)及VC開發(fā)工具使用,而不是直接介紹MFC,原因有兩個(gè):① 學(xué)生已經(jīng)先修了程序設(shè)計(jì)基礎(chǔ)這門課程,已經(jīng)對(duì)函數(shù)設(shè)計(jì)和使用有一定經(jīng)驗(yàn)了,而基于API函數(shù)的可視化程序設(shè)計(jì),其基本模塊也是函數(shù);② 先學(xué)API函數(shù),這樣學(xué)生更容易理解后續(xù)將介紹到的MFC庫(kù)中類的實(shí)現(xiàn)及類的成員函數(shù)使用。
第二部分是面向?qū)ο蟪绦蛟O(shè)計(jì)。這部分內(nèi)容向?qū)W生介紹面向?qū)ο蟪绦蛟O(shè)計(jì)思想、概念和理論,類的概念和設(shè)計(jì),包括數(shù)據(jù)封裝、繼承、多態(tài)性等等有關(guān)OOP的機(jī)制。
第三部分是基于MFC的面向?qū)ο笈c可視化程序設(shè)計(jì),向?qū)W生介紹強(qiáng)大的MFC開發(fā)工具,包括標(biāo)準(zhǔn)控件的使用和視圖/文檔結(jié)構(gòu)。
(2) 實(shí)驗(yàn)教學(xué)內(nèi)容安排。
實(shí)驗(yàn)教學(xué)的目的是:① 通過實(shí)驗(yàn)指導(dǎo)、提示、預(yù)備知識(shí)、演示等形式引導(dǎo)學(xué)生獨(dú)立完成類的聲明及定義、測(cè)試和調(diào)試;② 通過任務(wù)分解、逐步實(shí)現(xiàn)等手段,使得學(xué)生循序漸進(jìn)地掌握面向?qū)ο蠹翱梢暬绦蛟O(shè)計(jì)方法;③ 從很小規(guī)模的項(xiàng)目開始,慢慢擴(kuò)大項(xiàng)目的規(guī)模,使學(xué)生在潛移默化中消除對(duì)較大規(guī)模項(xiàng)目的畏懼感;④ 將實(shí)訓(xùn)項(xiàng)目中應(yīng)用到的知識(shí)分解到眾多的實(shí)驗(yàn)報(bào)告中,使得學(xué)生通過完成實(shí)驗(yàn)報(bào)告后具備了獨(dú)立完成實(shí)訓(xùn)項(xiàng)目的能力。
為了達(dá)到這些教學(xué)目的,筆者設(shè)計(jì)了許多新穎的實(shí)驗(yàn)任務(wù)和項(xiàng)目:
改寫課堂上講過的例題程序,實(shí)現(xiàn)指定的功能。
模仿例題程序,實(shí)現(xiàn)類似的功能。
從分析程序執(zhí)行結(jié)果,過渡到分析程序執(zhí)行過程,再過渡到調(diào)試程序,逐步掌握調(diào)試程序這個(gè)關(guān)鍵技能。
給出功能較少、規(guī)模較小的項(xiàng)目,要求學(xué)生自行擴(kuò)充項(xiàng)目的功能并實(shí)現(xiàn)。
給出一個(gè)有錯(cuò)誤的項(xiàng)目,或者功能有缺陷的項(xiàng)目,要求學(xué)生改進(jìn)。
獨(dú)立完成一個(gè)較小規(guī)模的項(xiàng)目。
給出類的聲明,完成類的定義;完成類的完整設(shè)計(jì)和測(cè)試、調(diào)試。
通過MSDN查找某個(gè)函數(shù),并將英文解釋翻譯成中文,強(qiáng)化MSDN幫助系統(tǒng)的使用。
(3) 課堂實(shí)訓(xùn)項(xiàng)目教學(xué)及注意事項(xiàng)
如表1所示,在教學(xué)中,筆者通過4個(gè)課堂實(shí)訓(xùn)項(xiàng)目將課程知識(shí)有機(jī)地連接起來(lái)。設(shè)置課堂實(shí)訓(xùn)項(xiàng)目的目的是:① 通過這些實(shí)訓(xùn)項(xiàng)目,綜合運(yùn)用和演示課程知識(shí)和編程方法;② 在課堂上向?qū)W生介紹并演示軟件項(xiàng)目開發(fā)方法。
課堂實(shí)訓(xùn)項(xiàng)目的選擇主要考慮了以下原則:
覆蓋課程的主要知識(shí)點(diǎn),并有一定的提高;
規(guī)模和難度適中,不至于使學(xué)生望而卻步;
實(shí)用性強(qiáng),不能是抽象的、沒有實(shí)用價(jià)值的項(xiàng)目;
項(xiàng)目中采用了一些典型的編程技術(shù)或模式,能在其他項(xiàng)目中推廣;
有一定的趣味性,能吸引學(xué)生。
根據(jù)以上原則,筆者精選了4個(gè)課堂實(shí)訓(xùn)項(xiàng)目,這4個(gè)實(shí)訓(xùn)項(xiàng)目涉及到的知識(shí)如表2所示。
在安排課堂實(shí)訓(xùn)項(xiàng)目要注意以下事項(xiàng):
由于4個(gè)課堂實(shí)訓(xùn)項(xiàng)目占用了相當(dāng)一部分課時(shí),必然會(huì)造成很多知識(shí)無(wú)法在課堂上講授。筆者采取的策略是:課堂上只介紹一些基礎(chǔ)的、實(shí)用的知識(shí),對(duì)于適合以項(xiàng)目演示來(lái)講解的知識(shí)則在課堂實(shí)訓(xùn)項(xiàng)目中講解。
因?yàn)檫@些課堂實(shí)訓(xùn)項(xiàng)目比實(shí)驗(yàn)報(bào)告中的項(xiàng)目規(guī)模大得多,學(xué)生一時(shí)難以理解和接受,所以關(guān)鍵在于較好地把握課堂實(shí)訓(xùn)項(xiàng)目的難度,并對(duì)這些項(xiàng)目進(jìn)行合理的分解,循序漸進(jìn)地向?qū)W生講述需求分析、軟件設(shè)計(jì)、軟件開發(fā)過程。
(4) 學(xué)生實(shí)訓(xùn)項(xiàng)目安排及考核
隨著教學(xué)的進(jìn)行,學(xué)生將完成3個(gè)實(shí)訓(xùn)項(xiàng)目,如表1所示。實(shí)訓(xùn)項(xiàng)目以分組(1~3人)方式完成。
實(shí)訓(xùn)項(xiàng)目的考核采用答辯形式進(jìn)行:對(duì)每組學(xué)生,隨機(jī)抽取一名學(xué)生上臺(tái)答辯,其他組的學(xué)生和老師同時(shí)對(duì)該學(xué)生進(jìn)行評(píng)分。筆者所設(shè)計(jì)的實(shí)訓(xùn)項(xiàng)目評(píng)分表如表3所示,其中“語(yǔ)言表達(dá)”和“回答問題”這兩項(xiàng)的評(píng)分以上臺(tái)答辯的這名學(xué)生的表現(xiàn)作為評(píng)分的依據(jù)。
另外,為考核的公平起見,這3個(gè)實(shí)訓(xùn)項(xiàng)目還增加了“難度系數(shù)”的指標(biāo),難度系數(shù)由老師根據(jù)學(xué)生提交的實(shí)訓(xùn)項(xiàng)目核定,每個(gè)小組實(shí)訓(xùn)項(xiàng)目的得分為總分乘以難度系數(shù)得到。引入難度系數(shù)的目的是希望各小組根據(jù)自己的能力獨(dú)立完成一個(gè)實(shí)訓(xùn)項(xiàng)目。
這種新穎的考核形式和評(píng)分內(nèi)容能充分考察學(xué)生在完成實(shí)訓(xùn)項(xiàng)目時(shí)對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)思想和方法的綜合運(yùn)用能力。
4結(jié)束語(yǔ)
本文針對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)課程提出了基于實(shí)訓(xùn)項(xiàng)目的教學(xué)方法,這種教學(xué)方法通過課堂實(shí)訓(xùn)項(xiàng)目將課程知識(shí)有效地組織起來(lái),并通過學(xué)生實(shí)訓(xùn)項(xiàng)目為學(xué)生提供軟件項(xiàng)目實(shí)訓(xùn)的機(jī)會(huì)?;趯?shí)訓(xùn)項(xiàng)目的教學(xué)方法能極大地激發(fā)學(xué)生學(xué)習(xí)積極性并充分訓(xùn)練學(xué)生的軟件開發(fā)能力。
參考文獻(xiàn):
[1] 王桂平,馮睿. 以在線實(shí)踐為導(dǎo)向的程序設(shè)計(jì)課程教學(xué)新思路[J]. 計(jì)算機(jī)教育,2008(22).
[2] 張劍波,王婷. 面向?qū)ο蟪绦蛟O(shè)計(jì)課程教學(xué)改革與實(shí)踐[J]. 黑龍江教育(高教研究與評(píng)估),2008(11).
[3] 周江,李兆江,李佩武,等. 面向?qū)ο蟪绦蛟O(shè)計(jì)課程實(shí)驗(yàn)教學(xué)改革探討[J]. 實(shí)驗(yàn)科學(xué)與技術(shù),2008(2).
[4] 那一沙,吳子?xùn)|,杜修平. 基于建構(gòu)主義的面向?qū)ο蟪绦蛟O(shè)計(jì)C++教學(xué)[J]. 現(xiàn)代遠(yuǎn)距離教育,2008(4).