馬昌威
(阿壩師范高等專科學(xué)校,四川,623002)
伴隨著計(jì)算機(jī)的應(yīng)用日漸廣泛,信息技術(shù)也相繼在全球范圍內(nèi)應(yīng)用起來,隨之而來是,各種應(yīng)用軟件的需求量的增加。如何在最短的時(shí)間內(nèi),以最低的成本,開發(fā)出符合實(shí)際需要的應(yīng)用軟件,是軟件開發(fā)的主要任務(wù)。一個(gè)高效且符合實(shí)際需要的軟件,在設(shè)計(jì)中,不僅需要耗費(fèi)技巧的編程,同時(shí)高效的算法和合理的數(shù)據(jù)結(jié)構(gòu)也非常重要,而這正是由于計(jì)算機(jī)算法設(shè)計(jì)的主要研究內(nèi)容。為此,《計(jì)算機(jī)算法分析與分析》是高校計(jì)算機(jī)專業(yè)高年級(jí)學(xué)生所必須掌握的一門知識(shí),同時(shí)也是系統(tǒng)工程、管理信息以及應(yīng)用數(shù)學(xué)等非計(jì)算機(jī)專業(yè)需要學(xué)習(xí)的一門課程。該課程主要是通過對(duì)計(jì)算機(jī)算法進(jìn)行系統(tǒng)的研究,來幫助學(xué)生掌握計(jì)算機(jī)算法的設(shè)計(jì),以及對(duì)計(jì)算機(jī)算法進(jìn)行分析的能力,為將來算法的設(shè)計(jì)奠定基礎(chǔ)。
計(jì)算機(jī)算法設(shè)計(jì)與分析這門課程主要難在,需要學(xué)生在對(duì)算法設(shè)計(jì)基本思想充分理解后,并以此為基礎(chǔ)進(jìn)行舉一反三,且對(duì)靈活思維有非常高的要求,死記硬背是無法掌握該課程的。為了能夠使學(xué)生對(duì)該課程的興趣得到激發(fā),關(guān)鍵在于教師課程內(nèi)容的選擇。筆者認(rèn)為在教學(xué)內(nèi)容的選擇上,應(yīng)以“難度適中,實(shí)際與理論應(yīng)有并重?!?/p>
首先,我們?cè)诳紤]學(xué)生所掌握的知識(shí)時(shí),應(yīng)對(duì)學(xué)生的層次進(jìn)行設(shè)置,不同的學(xué)生層次所采用的教學(xué)內(nèi)容當(dāng)然有所差異。對(duì)高年紀(jì)以及基礎(chǔ)較好的學(xué)生,則教學(xué)內(nèi)容則應(yīng)以經(jīng)典算法設(shè)計(jì)的講解為主,其中應(yīng)包括動(dòng)態(tài)規(guī)劃、遞歸與分治策略、回溯法、貪心算法以及分支限界法。相對(duì)來說,這方面知識(shí)的難度較為適中。并以此為基礎(chǔ),適當(dāng)對(duì)教學(xué)內(nèi)容進(jìn)行擴(kuò)展,例如:并行算法、現(xiàn)代啟發(fā)式算法那、分布式計(jì)算以及網(wǎng)格計(jì)算等知識(shí)的講解。而針對(duì)基礎(chǔ)知識(shí)較弱的學(xué)生來說,由于他們所掌握的基礎(chǔ)知識(shí)層次不同,故在教學(xué)中應(yīng)適當(dāng)增加基礎(chǔ)知識(shí),并適當(dāng)安排課時(shí)重新對(duì)基礎(chǔ)知識(shí)進(jìn)行講解,再以此為基礎(chǔ),對(duì)相關(guān)知識(shí)進(jìn)行擴(kuò)展。
在向?qū)W生傳授算法設(shè)計(jì)思想的過程中,教師一定要注意實(shí)際與理論并重。無論是何種算法設(shè)計(jì),都必然存在諸多問題,在對(duì)策略進(jìn)行講解時(shí),應(yīng)通過較為典型的實(shí)例來進(jìn)行分析,這不僅可使抽象的理論知識(shí)形象化,同時(shí)還可以通過實(shí)例來吸引學(xué)生的興趣,再以此來對(duì)算法策略基本思想進(jìn)行總結(jié),然后逐漸延伸出其它例子,對(duì)其共性進(jìn)行總結(jié)。例如:在學(xué)習(xí)動(dòng)態(tài)規(guī)劃法時(shí),需要對(duì)最長公共序列、矩陣連乘問題、電路布線、最大子段和、流水作業(yè)調(diào)度以及圖像壓縮等進(jìn)行分析。在對(duì)該算法進(jìn)行講解的過程中,應(yīng)當(dāng)重點(diǎn)對(duì)矩陣連乘問題的動(dòng)態(tài)規(guī)劃算法進(jìn)行講解,使學(xué)生能夠?qū)λ惴ㄔO(shè)計(jì)有初步的認(rèn)識(shí),再隨著問題的深入,使學(xué)生在實(shí)例分析中,理解動(dòng)態(tài)規(guī)劃算法。
筆者認(rèn)為在該課程的教學(xué)中,應(yīng)打破傳統(tǒng)教育模式,結(jié)合啟發(fā)式、自學(xué)兩種教學(xué)方法,輔以實(shí)驗(yàn)課程的配合,可大大有效調(diào)動(dòng)學(xué)生的學(xué)習(xí)興趣,并達(dá)到較好的教學(xué)目的。
在教學(xué)中,通過靈活多樣的教學(xué)方法來提高學(xué)生的主動(dòng)性和積極性,是達(dá)到教學(xué)目的的關(guān)鍵。培養(yǎng)學(xué)生的創(chuàng)新思維,可讓學(xué)生的創(chuàng)造力得到提升,同時(shí)學(xué)習(xí)算法設(shè)計(jì)也有著重要作用。教學(xué)工作中,教師應(yīng)當(dāng)有意識(shí)地去加強(qiáng)學(xué)生的創(chuàng)新思維,引導(dǎo)學(xué)生靈活思維,舉一反三。例如:我們可用導(dǎo)彈防御系統(tǒng)為實(shí)例來幫助學(xué)生對(duì)動(dòng)態(tài)規(guī)劃問題進(jìn)行理解,并提出如何對(duì)敵國導(dǎo)彈入侵進(jìn)行防御的問題。啟發(fā)學(xué)生自行調(diào)動(dòng)思維,去考慮這個(gè)實(shí)際問題如何通過動(dòng)態(tài)規(guī)劃算法實(shí)現(xiàn),進(jìn)而在問題解決中掌握算法的知識(shí)。教師在知識(shí)講解時(shí),可通過問題式、啟發(fā)式以及參與式等方法來充實(shí)教學(xué)知識(shí),讓理論知識(shí)能夠融合到實(shí)際中,讓實(shí)際來展現(xiàn)理論知識(shí),使學(xué)生的邏輯思維能力得到不斷強(qiáng)化,自主學(xué)習(xí)能力得到提高。與此同時(shí),在實(shí)施教學(xué)時(shí),我們應(yīng)始終堅(jiān)持“以學(xué)生為本,讓學(xué)生做學(xué)習(xí)的主人”為教學(xué)原則。相比之下,大學(xué)的思維已經(jīng)較為成熟,且具備了解決和分析問題的能力。為此,課堂中教師可通過課堂討論以及課前收集資料等方法相結(jié)合的方式來開展。同時(shí)結(jié)合問題引導(dǎo),來刺激學(xué)生的求知欲望;分組討論則可使學(xué)生都參與到課堂學(xué)習(xí)中,有助于學(xué)生之間的溝通交流,帶動(dòng)思維的靈活變化,讓學(xué)生能夠?qū)﹄y點(diǎn)和重點(diǎn)進(jìn)行感知,進(jìn)而逐漸掌握算法的精髓。
本文以筆者課堂中開展貪心算法的教學(xué)過程為例,對(duì)課程的教學(xué)方法進(jìn)行分析,主要是通過以下五大環(huán)節(jié)來實(shí)現(xiàn)教學(xué)內(nèi)容的推進(jìn),取得了非常好的實(shí)際成效。
2.2.1 新課導(dǎo)入
筆者根據(jù)學(xué)生的基礎(chǔ)知識(shí)水平,結(jié)合生活實(shí)例,提出了“找零錢問題”這一實(shí)例,來引導(dǎo)學(xué)生進(jìn)入貪心算法的課程中。例:[找零錢]某超市內(nèi),小孩選購了一些糖,但總面值不足10 元,小孩拿出10 元交給售貨員。售貨員如何以數(shù)目最少的貨幣來找補(bǔ)。柜臺(tái)所有面值數(shù)目均較為充足,求解售貨員如何分步驟來完成零錢找補(bǔ),每次僅需加入一張貨幣。
通過實(shí)際問題的聯(lián)系,學(xué)生的思維自然而然被調(diào)動(dòng)起來,也成功將學(xué)生的好奇心帶動(dòng)了起來,唯有產(chǎn)生了興趣,才能夠真正將學(xué)生帶入到算法研究的學(xué)習(xí)中,進(jìn)而主動(dòng)去學(xué)習(xí)、去分析問題、掌握問題。
2.2.2 創(chuàng)設(shè)情境
將問題拋給學(xué)生,讓他們自己去分析問題,探討問題的解決方法與途徑。得出:每次在對(duì)零錢進(jìn)行選擇時(shí),都盡可能選擇最大的面值。為保證解法的可行性(即:能夠正確完成零錢的找補(bǔ)),故在對(duì)硬幣進(jìn)行選擇時(shí),不能夠使零錢總數(shù)大于最終所需的數(shù)目。在找補(bǔ)的過程中,大多以直覺來進(jìn)行零錢的找補(bǔ),且使其貨幣數(shù)目能夠最少,至少應(yīng)當(dāng)確保其能夠滿足數(shù)量達(dá)到最少。教師在對(duì)得出結(jié)論進(jìn)行點(diǎn)撥時(shí),提出:“該問題的分析,我們就用到貪心算法的基本思想?!痹趯?duì)上述問題分析的過程中,盡管教師并未提出貪心算法的相關(guān)知識(shí),但卻讓學(xué)生在實(shí)際例子的分析中,對(duì)貪心算法的基本思想進(jìn)行總結(jié),且有了非常清晰的條理。
2.2.3 任務(wù)實(shí)施
此階段,筆者主要是通過自主探究、分組寫作以及教師引導(dǎo)這三大環(huán)節(jié)來實(shí)現(xiàn)課程的推進(jìn)。主要采取的措施如下:教師對(duì)情境進(jìn)行創(chuàng)設(shè),讓學(xué)生能夠依照所創(chuàng)設(shè)的情境自行提出問題,再通過合作學(xué)習(xí)來分析問題,同時(shí)輔以分組交流,讓學(xué)生各抒己見,最后,教師再通過參與到討論中,對(duì)課堂內(nèi)容進(jìn)行總結(jié)。
2.2.4 任務(wù)評(píng)價(jià)
課后主要是通過實(shí)踐來對(duì)學(xué)生的掌握情況進(jìn)行判斷評(píng)價(jià)。在這個(gè)階段,教師同樣需要以實(shí)際例子來引導(dǎo)學(xué)生,讓學(xué)生判斷實(shí)例所能夠用到的最佳算法,在這個(gè)過程中,還可以建立數(shù)學(xué)模型,再結(jié)合編程來實(shí)現(xiàn)模型的構(gòu)建。
2.2.5 小結(jié)與作業(yè)
課后作業(yè)能夠使學(xué)生的對(duì)所學(xué)過的知識(shí)進(jìn)行總結(jié)回顧,即個(gè)體作業(yè)和小組作業(yè),最低要求必須完成個(gè)體作業(yè)的實(shí)驗(yàn),即選擇某些經(jīng)典問題,采用不同算法實(shí)現(xiàn),輸入大量數(shù)據(jù),測(cè)試程序運(yùn)行時(shí)間,與理論結(jié)果進(jìn)行比較。如旅行商問題問題,可以選用回溯法、分支限界法等算法,將三個(gè)算法的實(shí)際執(zhí)行時(shí)間進(jìn)行比較,從實(shí)驗(yàn)結(jié)果證明理論分析的正確性。小組作業(yè)是在個(gè)體作業(yè)完成的前提下,提出一個(gè)綜合性問題,利用所學(xué)的知識(shí),設(shè)計(jì)出新的算法,并用實(shí)驗(yàn)?zāi)M驗(yàn)證。
《計(jì)算機(jī)設(shè)計(jì)與分析》是相關(guān)專業(yè)學(xué)習(xí)的基礎(chǔ)課程之一,該門課程盡管以理論知識(shí)為主,使得不少學(xué)生對(duì)其了解出現(xiàn)誤差,提不起學(xué)習(xí)興趣,導(dǎo)致學(xué)習(xí)進(jìn)度和教學(xué)目標(biāo)嚴(yán)重滯后。教師在教學(xué)中如何通過有效措施,激發(fā)學(xué)生的學(xué)習(xí)興趣,改變對(duì)該課程的認(rèn)知,讓學(xué)生掌握各種經(jīng)典算法的基本思想,為將來的實(shí)際應(yīng)用打下基礎(chǔ)是工作的主要任務(wù)。
[1] 孫紅麗,葉斌.基于多元智能理論的算法設(shè)計(jì)分析教學(xué)改革[J].淮南職業(yè)技術(shù)學(xué)院學(xué)報(bào),2012,2(15).
[2] 劉淑英.《算法設(shè)計(jì)與分析》課程教學(xué)方法研究[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2012,1(15).
[3] 郭萌萌.算法設(shè)計(jì)與分析教學(xué)方法探討[J].山東省農(nóng)業(yè)管理干部學(xué)院學(xué)報(bào),2012,11(15).
[4] 馮慧玲,吳靜松.《算法設(shè)計(jì)與分析》的課程特點(diǎn)和教學(xué)方法探討[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2012,10(25).
[5] 曲德祥.關(guān)于實(shí)踐教學(xué)中算法設(shè)計(jì)與分析課程的研究及應(yīng)用[J].信息技術(shù)與信息化,2012,2(15).