康長(zhǎng)青,朱麗娟,胡春陽(yáng),吳中博,谷 瓊,寧 彬
(1.湖北文理學(xué)院計(jì)算機(jī)工程學(xué)院,湖北 襄陽(yáng) 441053;2.湖北文理學(xué)院物理與電子工程學(xué)院)
無(wú)論是工程教育認(rèn)證還是兩性一度的金課,都強(qiáng)調(diào)培養(yǎng)學(xué)生解決復(fù)雜工程問(wèn)題的綜合能力。計(jì)算機(jī)類專業(yè)教學(xué)體系的各環(huán)節(jié)都應(yīng)主動(dòng)將工程問(wèn)題的復(fù)雜性融入教學(xué)內(nèi)容,對(duì)解決復(fù)雜工程問(wèn)題進(jìn)行教學(xué)設(shè)計(jì)、組織實(shí)施和能力達(dá)成評(píng)價(jià)。數(shù)據(jù)結(jié)構(gòu)與算法作為計(jì)算機(jī)類專業(yè)的骨干基礎(chǔ)核心課程,更應(yīng)該責(zé)無(wú)旁貸,持續(xù)進(jìn)行課程改革,努力承擔(dān)起逐步培養(yǎng)學(xué)生解決復(fù)雜工程問(wèn)題的責(zé)任。
實(shí)驗(yàn)教學(xué)具有直觀性、綜合性、探究性、啟發(fā)性等多個(gè)優(yōu)點(diǎn),因而日益受到教學(xué)研究者的重視。文獻(xiàn)[5]針對(duì)培養(yǎng)科學(xué)型、工程型、應(yīng)用型人才定位的不同,提出了基礎(chǔ)實(shí)驗(yàn)內(nèi)容,課程設(shè)計(jì)實(shí)踐要求,教學(xué)重難點(diǎn)和相應(yīng)的教學(xué)方案。文獻(xiàn)[6]詳細(xì)分析了傳統(tǒng)型、平臺(tái)型和復(fù)合型實(shí)驗(yàn)教學(xué)模式的優(yōu)缺點(diǎn),提出基于SPOC 的復(fù)合型實(shí)驗(yàn)教學(xué)模型。文獻(xiàn)[7]從教材建設(shè)、教學(xué)平臺(tái)的拓展、教學(xué)方法的提升、考核機(jī)制的改革、實(shí)踐方案的優(yōu)化及教學(xué)團(tuán)隊(duì)的沉淀等六個(gè)方面,開(kāi)展了數(shù)據(jù)結(jié)構(gòu)課程的金課建設(shè)。文獻(xiàn)[8]提出了多層次、立體化、以線上線下相結(jié)合的實(shí)驗(yàn)金課建設(shè)方案。然而,目前有關(guān)實(shí)驗(yàn)教學(xué)案例設(shè)計(jì)的研究較少,這是一個(gè)薄弱環(huán)節(jié),如文獻(xiàn)[10]設(shè)計(jì)了基于線性表和二叉樹(shù)的磚塊地圖系統(tǒng),飛機(jī)游戲等游戲開(kāi)發(fā)案例,文獻(xiàn)[11]提出了疫情期間面向應(yīng)用場(chǎng)景的線上實(shí)踐教學(xué)案例(軟件系統(tǒng)中的自動(dòng)補(bǔ)全功能,拼寫(xiě)糾錯(cuò)功能,STL 中的sort 函數(shù)源碼設(shè)計(jì)),文獻(xiàn)[12]提出了“求二叉樹(shù)寬度”復(fù)雜算法案例,文獻(xiàn)[13]提出以“學(xué)生基本信息系統(tǒng)”的各章節(jié)分步式案例等。但是總的來(lái)說(shuō),這些案例還不能滿足教學(xué)需求。①覆蓋的知識(shí)點(diǎn)單一,綜合性不高;②案例描述簡(jiǎn)單,設(shè)計(jì)過(guò)程不詳細(xì),借鑒性不強(qiáng);③教學(xué)方式單一,學(xué)生積極性不高,無(wú)法承載培養(yǎng)學(xué)生解決復(fù)雜問(wèn)題的綜合能力和高級(jí)思維的教學(xué)需要。因此,面向?qū)嶋H的復(fù)雜工程問(wèn)題來(lái)設(shè)計(jì)實(shí)驗(yàn)教學(xué)案例,已成當(dāng)務(wù)之急。
游戲有助于激發(fā)學(xué)生的學(xué)習(xí)動(dòng)機(jī),幫助學(xué)生學(xué)習(xí)各種知識(shí),培養(yǎng)解決問(wèn)題能力等高階能力,培養(yǎng)正確的情感、態(tài)度和價(jià)值觀,也能夠促進(jìn)自主學(xué)習(xí)的方式形成,并有助于構(gòu)建富有吸引力的建構(gòu)主義學(xué)習(xí)環(huán)境。為了培養(yǎng)學(xué)生能夠靈活地、綜合地運(yùn)用所學(xué)到的知識(shí)來(lái)解決實(shí)際的復(fù)雜工程問(wèn)題的能力,我們精心設(shè)計(jì)了“德州撲克游戲系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)”綜合實(shí)驗(yàn)項(xiàng)目,該項(xiàng)目作為數(shù)據(jù)結(jié)構(gòu)與算法的必做實(shí)驗(yàn),采用2-3 人興趣小組,分步驟分階段完成相應(yīng)的綜合訓(xùn)練任務(wù)。該項(xiàng)目將培養(yǎng)學(xué)生如下幾個(gè)方面的能力。
⑴ 綜合運(yùn)用所學(xué)到的理論知識(shí)獨(dú)立完成一個(gè)游戲系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)項(xiàng)目,系統(tǒng)地進(jìn)行需求分析、功能和流程設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)、程序編碼與測(cè)試、文檔總結(jié)的訓(xùn)練。
⑵學(xué)會(huì)并掌握文獻(xiàn)搜索技能,即培養(yǎng)獲取專業(yè)文獻(xiàn)的能力,理解和描述問(wèn)題的能力,能夠較準(zhǔn)確的編寫(xiě)系統(tǒng)方案和詳細(xì)設(shè)計(jì)有關(guān)的技術(shù)說(shuō)明書(shū)。
⑶具備一定的項(xiàng)目風(fēng)險(xiǎn)意識(shí),能夠制定和管理開(kāi)發(fā)計(jì)劃,具備一定的項(xiàng)目管理能力。
⑷能夠自主學(xué)習(xí)、協(xié)作學(xué)習(xí)、和探究性學(xué)習(xí),具有獨(dú)立分析和解決實(shí)際問(wèn)題的能力。
⑸能主動(dòng)與同學(xué)共享解決方案,討論算法的優(yōu)缺點(diǎn),勝任團(tuán)隊(duì)成員的角色與責(zé)任。
⑹能夠就項(xiàng)目中疑問(wèn)和難點(diǎn),和團(tuán)隊(duì)成員,老師進(jìn)行有效溝通和交流。
⑺用文字、圖表等表達(dá)自己的設(shè)計(jì)思路、測(cè)試結(jié)果及心得體會(huì),能撰寫(xiě)質(zhì)量較高的軟件工程項(xiàng)目報(bào)告。
為了培養(yǎng)學(xué)生具有熟悉軟件工程開(kāi)發(fā),了解一定軟件測(cè)試和軟件管理,會(huì)理解和應(yīng)用常用的數(shù)據(jù)結(jié)構(gòu)和算法,我們?cè)O(shè)計(jì)了“德州撲克游戲系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)”綜合訓(xùn)練項(xiàng)目,如圖1所示。
圖1 綜合項(xiàng)目的工程設(shè)計(jì)流程圖
需求分析階段,通過(guò)設(shè)計(jì)引導(dǎo)性問(wèn)題要求學(xué)生完成①用文字或圖表介紹德州撲克牌型的牌型定義和打牌規(guī)則;②理解發(fā)牌,轉(zhuǎn)牌,比牌等專業(yè)術(shù)語(yǔ),利用程序流程圖模擬整個(gè)游戲工作流程;③從國(guó)家政策、需求風(fēng)險(xiǎn)、市場(chǎng)風(fēng)險(xiǎn)、成本風(fēng)險(xiǎn)等角度分析和討論項(xiàng)目的風(fēng)險(xiǎn)因素。這個(gè)階段主要培養(yǎng)學(xué)生使用文獻(xiàn)搜索技巧查詢所需資料,具備理解和描述問(wèn)題的能力,用文字和圖表成功描述項(xiàng)目的能力。
方案設(shè)計(jì)階段,需要在完成需求分析后進(jìn)行總體設(shè)計(jì)。任務(wù)包括:明確研究的對(duì)象是什么、如何定義和表示、需要完成哪些功能、計(jì)劃使用何種界面、繪制功能圖、構(gòu)思軟件的操作流程等。這個(gè)階段培養(yǎng)學(xué)生具備一定的項(xiàng)目需求分析和總體設(shè)計(jì)能力,能夠收集、辨別并組織相關(guān)資訊的能力,能夠畫(huà)出軟件項(xiàng)目開(kāi)發(fā)進(jìn)度的關(guān)鍵路徑圖,能夠估算整個(gè)項(xiàng)目的開(kāi)發(fā)成本的能力。
系統(tǒng)詳細(xì)設(shè)計(jì)階段,引導(dǎo)學(xué)生將一個(gè)較大的功能分解成多個(gè)函數(shù)來(lái)實(shí)現(xiàn)。設(shè)計(jì)內(nèi)容包括數(shù)據(jù)類型的規(guī)劃和設(shè)計(jì)、函數(shù)功能和函數(shù)首部的設(shè)計(jì)、函數(shù)間調(diào)用關(guān)系的設(shè)計(jì)、主要算法的設(shè)計(jì)與分析。比如發(fā)牌程序是游戲程序的關(guān)鍵步驟,將牌抽象為一個(gè)長(zhǎng)度52位數(shù)組,常見(jiàn)的發(fā)牌思路有①每次隨機(jī)取兩張牌交換,循環(huán)K次;②隨機(jī)取一張,從數(shù)組中刪除后再隨機(jī)取一張?jiān)賱h除;③取52 個(gè)數(shù)全排列中的任意一個(gè);④經(jīng)典Knuth-shuffle算法等。鼓勵(lì)學(xué)生發(fā)散思維,頭腦風(fēng)暴,相互討論,分析算法的時(shí)間復(fù)雜度和空間復(fù)雜度,選取合適的發(fā)牌算法。這一階段培養(yǎng)學(xué)生具備在掌握數(shù)據(jù)結(jié)構(gòu)專業(yè)知識(shí)的基礎(chǔ)上,能夠針對(duì)具體問(wèn)題設(shè)計(jì)或選擇合適的數(shù)據(jù)結(jié)構(gòu)和算法,能夠自主學(xué)習(xí)、協(xié)作學(xué)習(xí)和探究性學(xué)習(xí)。
程序編碼階段,我們?cè)O(shè)計(jì)了一系列的核心編程任務(wù),內(nèi)容包括①給一人發(fā)五張牌,運(yùn)行10萬(wàn)次,給出牌型的概率;②給兩人各發(fā)五張牌,給出所屬牌型和輸贏情況;③兩人打牌,公共牌分別為三張,四張,五張時(shí)的型和輸贏情況。這部分內(nèi)容是設(shè)計(jì)牌型判斷,牌型比較,排列組合函數(shù)編程等編程難點(diǎn),團(tuán)隊(duì)成員間討論如何應(yīng)用數(shù)據(jù)結(jié)構(gòu)排序算法,各種同類牌型比較時(shí)的編程思路,排列組合函數(shù)的遞歸和非遞歸算法,能夠調(diào)用系統(tǒng)排序函數(shù)和排列組合函數(shù)等等。這個(gè)階段主要培養(yǎng)學(xué)生求真務(wù)實(shí),腳踏實(shí)地學(xué)習(xí)態(tài)度,培養(yǎng)學(xué)生應(yīng)用專業(yè)知識(shí)進(jìn)行程序設(shè)計(jì)和程序調(diào)試,能夠獨(dú)立分析和解決實(shí)際問(wèn)題的能力,勝任團(tuán)隊(duì)成員的角色與責(zé)任。
軟件測(cè)試階段,主要任務(wù)是單元測(cè)試和系統(tǒng)集成調(diào)試,培養(yǎng)學(xué)生掌握一定的單元測(cè)試和集成調(diào)試的基本方法,持續(xù)改進(jìn)算法或函數(shù)設(shè)計(jì),依靠團(tuán)隊(duì)不斷學(xué)習(xí)和經(jīng)驗(yàn)積累,養(yǎng)成追求正確,科學(xué)嚴(yán)謹(jǐn),盡善盡美的個(gè)人品格。
系統(tǒng)評(píng)價(jià)與改進(jìn)階段,主要任務(wù)是用文字、圖表等表達(dá)個(gè)人設(shè)計(jì)的思路,分析系統(tǒng)的優(yōu)缺點(diǎn),以研究式的學(xué)習(xí)進(jìn)行系統(tǒng)優(yōu)化和完善。我們?cè)O(shè)計(jì)的開(kāi)放式優(yōu)化任務(wù)包括①針對(duì)牌型計(jì)算模塊的優(yōu)化算法,優(yōu)化的思路有牌整數(shù)編碼比較法,正則表達(dá)式比較法,哈希查表比較法等,以及如何實(shí)現(xiàn);②考慮客戶端服務(wù)器模式,如何對(duì)發(fā)的牌定義,減少傳遞的數(shù)據(jù)量,節(jié)省服務(wù)器資源?如何對(duì)牌進(jìn)行加密解密,來(lái)防止棋牌作弊器;③基于牌力值,潛力值,有效牌力值等牌力評(píng)估指標(biāo),查詢資料了解最近的研究現(xiàn)狀,學(xué)習(xí)Cactus Kev,Paul Senzee,TPT 算法,并進(jìn)行算法實(shí)現(xiàn)和效率評(píng)估等。這個(gè)階段主要培養(yǎng)學(xué)生學(xué)會(huì)采用探究式學(xué)習(xí)策略進(jìn)行系統(tǒng)優(yōu)化的思維,從系統(tǒng)角度去認(rèn)識(shí)整個(gè)項(xiàng)目,積累項(xiàng)目的合作協(xié)調(diào),開(kāi)發(fā)測(cè)試經(jīng)驗(yàn),使用各種工具性地解決復(fù)雜工程中遇到的各種問(wèn)題。。
“德州撲克游戲系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)”綜合訓(xùn)練項(xiàng)目融合了數(shù)據(jù)結(jié)構(gòu)與算法綜合知識(shí)(如線性表,排序,查找和圖等四個(gè)教學(xué)章節(jié)的理論教學(xué)內(nèi)容結(jié)構(gòu),各種算法的分析和比較),軟件工程的開(kāi)發(fā)流程(包括需求分析,方案設(shè)計(jì),系統(tǒng)詳細(xì)設(shè)計(jì),程序編碼,軟件測(cè)試和系統(tǒng)評(píng)價(jià)等教學(xué)內(nèi)容),軟件項(xiàng)目管理和成本效率分析(包括開(kāi)發(fā)進(jìn)度的關(guān)鍵路徑圖,項(xiàng)目開(kāi)發(fā)成本估計(jì))等,可以看作是一個(gè)課程群的綜合實(shí)踐項(xiàng)目,因此具有較高的挑戰(zhàn)性和綜合性。完成整個(gè)項(xiàng)目需要學(xué)生運(yùn)用深入的工程原理分析,建立合適的牌型和牌型比較模型,考慮項(xiàng)目風(fēng)險(xiǎn)因素和時(shí)間管理等非技術(shù)因素,綜合所學(xué)的數(shù)據(jù)結(jié)構(gòu)和軟件工程基礎(chǔ)知識(shí),獨(dú)立設(shè)計(jì)和團(tuán)隊(duì)分工合作才能順利完成,達(dá)到項(xiàng)目的教學(xué)目標(biāo)。項(xiàng)目鍛煉了學(xué)生系統(tǒng)分析與理解、算法設(shè)計(jì)和運(yùn)用、文獻(xiàn)查詢和系統(tǒng)理解、性能測(cè)試與對(duì)比分析、文檔撰寫(xiě)和團(tuán)隊(duì)溝通等多方面綜合能力和高階思維,為培養(yǎng)學(xué)生在課程中逐步培養(yǎng)解決復(fù)雜工程問(wèn)題提供了有力支撐。
經(jīng)過(guò)面向復(fù)雜工程問(wèn)題的綜合性實(shí)驗(yàn)案例改革后,選取經(jīng)過(guò)綜合訓(xùn)練改革前后學(xué)生的項(xiàng)目吸引力,能力成長(zhǎng)滿意度,實(shí)驗(yàn)課平均成績(jī)等三方面指標(biāo)進(jìn)行教學(xué)效果的評(píng)價(jià)。其中,項(xiàng)目吸引力和能力成長(zhǎng)滿意度指標(biāo)通過(guò)課程結(jié)束后的調(diào)查問(wèn)卷得到,單個(gè)學(xué)生的實(shí)驗(yàn)課成績(jī)由任課老師評(píng)分得到。我們得到的改革前后的教學(xué)效果對(duì)比如表1所示。
表1 效果對(duì)比
從表1 數(shù)據(jù)可以看出,改革前的綜合項(xiàng)目吸引力平均得分為66 分,能力成長(zhǎng)滿意度為64 分,實(shí)驗(yàn)課平均成績(jī)?yōu)?3.5 分;而改革后綜合項(xiàng)目吸引力平均得分為84 分,能力成長(zhǎng)滿意度為82 分,實(shí)驗(yàn)課平均成績(jī)?yōu)?1.7 分。仔細(xì)分析其中的原因,可以得知,改革前,學(xué)生覺(jué)得綜合性項(xiàng)目吸引力一般,對(duì)自己能力提升也就那樣,導(dǎo)致實(shí)驗(yàn)平均成績(jī)不高。改革后,游戲案例來(lái)源于生活,應(yīng)用廣泛,學(xué)生有較高的興趣,加上項(xiàng)目難度適中,能夠鍛煉其綜合能力,因此實(shí)驗(yàn)平均成績(jī)有了較大的提升,取得了較好的教學(xué)效果。
綜合教學(xué)案例設(shè)計(jì)是培養(yǎng)學(xué)生解決復(fù)雜工程問(wèn)題的關(guān)鍵環(huán)節(jié)。設(shè)計(jì)一個(gè)符合復(fù)雜工程問(wèn)題特征的教學(xué)案例,既要考慮學(xué)生學(xué)情,又要考慮綜合性和挑戰(zhàn)度,是一件不容易的事情。論文以德州撲克游戲系統(tǒng)設(shè)計(jì)為例,探討了在課程實(shí)驗(yàn)中進(jìn)行綜合教學(xué)案例設(shè)計(jì)的思路和具體實(shí)踐,取得了較好的教學(xué)效果。在未來(lái)的教學(xué)實(shí)踐中,作者將不斷收集和分類學(xué)生在該項(xiàng)目學(xué)習(xí)中的問(wèn)題和建議,持續(xù)改進(jìn),不斷完善。