劉篤晉
摘要:算法分析與設(shè)計(jì)是計(jì)算機(jī)專(zhuān)業(yè)學(xué)生必須掌握的一門(mén)極其重要的核心骨干課程,本課程學(xué)習(xí)需要學(xué)生具有扎實(shí)的編程基礎(chǔ)和較強(qiáng)的抽象思維及創(chuàng)新能力,傳統(tǒng)純粹重視算法理論的教學(xué)方法下學(xué)生學(xué)習(xí)效果普遍不太理想,教師教學(xué)難度較大,為改進(jìn)傳統(tǒng)的算法分析與設(shè)計(jì)課程教學(xué),采用多元結(jié)合的教學(xué)方式,實(shí)際的教學(xué)證明,多元結(jié)合的教學(xué)方式在強(qiáng)化學(xué)生的算法思維能力和獨(dú)立動(dòng)手解決實(shí)際算法問(wèn)題能力培養(yǎng)中具有重要作用。對(duì)課程在教學(xué)中的問(wèn)題進(jìn)行了深入分析,從身邊的算法、算法的貫通性、項(xiàng)目對(duì)課程學(xué)習(xí)的驅(qū)動(dòng)性等多元結(jié)合的教學(xué)方法進(jìn)行了研究,為推進(jìn)算法分析與設(shè)計(jì)課程的教學(xué)提供了一條有益的思路。
關(guān)鍵詞:算法分析與設(shè)計(jì);多元結(jié)合;身邊的算法;貫通性;驅(qū)動(dòng)性
中圖分類(lèi)號(hào):G712 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)06-0100-02
1引言
算法分析與設(shè)計(jì)教學(xué)是一門(mén)在教師引導(dǎo)下以學(xué)生為主體培養(yǎng)學(xué)生具有算法創(chuàng)新精神和獨(dú)立算法問(wèn)題分析、解決能力的教學(xué)活動(dòng)。本課程教學(xué)的成功與否直接關(guān)系到計(jì)算機(jī)專(zhuān)業(yè)人才培養(yǎng)目標(biāo)的成敗。在課程教學(xué)中具有直觀性、多變性、突發(fā)性、綜合性等特點(diǎn)。算法分析與設(shè)計(jì)課程也是計(jì)算機(jī)相關(guān)專(zhuān)業(yè)可持續(xù)發(fā)展的必要條件H。要培養(yǎng)高質(zhì)量的全面發(fā)展的計(jì)算機(jī)專(zhuān)業(yè)人才,必須改革算法分析與設(shè)計(jì)教學(xué),充分發(fā)揮教師主導(dǎo)、學(xué)生主體的教學(xué)特色,緊密依托項(xiàng)目,挖掘?qū)W生的潛力。
算法分析與設(shè)計(jì)是一門(mén)面向設(shè)計(jì),且處于計(jì)算機(jī)學(xué)科核心地位的重要課程,主要任務(wù)是理解掌握算法設(shè)計(jì)的主要方法,培養(yǎng)對(duì)算法計(jì)算復(fù)雜性正確分析的能力,為獨(dú)立設(shè)計(jì)算法和對(duì)算法進(jìn)行復(fù)雜性分析奠定堅(jiān)實(shí)的理論基礎(chǔ),對(duì)每一位計(jì)算機(jī)專(zhuān)業(yè)的科研、教學(xué)及從業(yè)人員都是非常重要和必不可少的,由于課程相當(dāng)抽象,理解難度大,且算法設(shè)計(jì)與分析是一種創(chuàng)造性思維活動(dòng),同一個(gè)問(wèn)題可能有多種不同的方法來(lái)解決,因此本文對(duì)當(dāng)前本科院校算法課程中遇到的普遍問(wèn)題進(jìn)行了探討和分析,通過(guò)身邊的算法、算法的貫通性、實(shí)際項(xiàng)目的驅(qū)動(dòng)性等多元結(jié)合的方法進(jìn)行教學(xué),以提高學(xué)生將所學(xué)知識(shí)轉(zhuǎn)化為實(shí)際能力的水平,教學(xué)效果明顯提高。這種多元結(jié)合的方法,對(duì)其他課程的學(xué)習(xí)也有良好的借鑒意義。
2算法分析與設(shè)計(jì)課程在實(shí)際教學(xué)中的問(wèn)題分析
通過(guò)與學(xué)生的多次交流和對(duì)學(xué)生實(shí)際能力的反復(fù)測(cè)試,并與成都理工大學(xué)、四川大學(xué)、西南民族大學(xué)等兄弟院校同行的認(rèn)真探討,算法分析與設(shè)計(jì)這門(mén)課程教學(xué)中普遍存下以下問(wèn)題:
2.1實(shí)際教學(xué)中普遍強(qiáng)調(diào)重設(shè)計(jì)輕實(shí)現(xiàn)
相當(dāng)多的學(xué)校在實(shí)際教學(xué)中要求學(xué)生對(duì)某一需要解決問(wèn)題只要求寫(xiě)出算法即可,不要求實(shí)現(xiàn)或很少要求實(shí)現(xiàn)甚至要求學(xué)生課外去實(shí)現(xiàn),但是在課外許多學(xué)生根本就沒(méi)去實(shí)現(xiàn),由于學(xué)生水平的原因,相當(dāng)部分學(xué)生也難以實(shí)現(xiàn),算法的不實(shí)現(xiàn)導(dǎo)致學(xué)生很難發(fā)現(xiàn)自己算法中的錯(cuò)誤,而算法的設(shè)計(jì)是一項(xiàng)創(chuàng)造性工作,同一個(gè)問(wèn)題,不同的學(xué)生可能有不同的設(shè)計(jì),老師由于時(shí)間的關(guān)系又不可能將學(xué)生所有算法都去檢測(cè)一遍,因而造成相當(dāng)一部分學(xué)生雖然課程學(xué)完了,但沒(méi)有實(shí)踐檢驗(yàn),覺(jué)得頭腦空空,好像學(xué)的東西全都是虛的,缺乏自信心。
2.2實(shí)驗(yàn)內(nèi)容大多以單一的具體為主,缺乏綜合性訓(xùn)練
由于本門(mén)課程難度大,許多老師擔(dān)心學(xué)生完成不了,給學(xué)生實(shí)驗(yàn)的內(nèi)容都是相當(dāng)簡(jiǎn)單的,甚至是以前學(xué)習(xí)其他課程學(xué)過(guò)的,雖然將其他課程內(nèi)容進(jìn)行算法練習(xí)無(wú)可厚非,但純粹的單一訓(xùn)練,使學(xué)生只為練習(xí)而練習(xí),不知道究竟該算法在實(shí)際運(yùn)用中如何用,有什么用,過(guò)量的單一的訓(xùn)練,使得學(xué)生學(xué)的知識(shí)是一盤(pán)散沙,課程完成后,不會(huì)用于實(shí)際,無(wú)法進(jìn)行綜合性實(shí)際運(yùn)用,造成了和社會(huì)主流需求脫節(jié)。
2.3實(shí)驗(yàn)教學(xué)中知識(shí)拓展度不夠,缺乏對(duì)學(xué)生深層次能力的訓(xùn)練
在算法的實(shí)驗(yàn)教學(xué)中,相當(dāng)一部分學(xué)生只是在老師指導(dǎo)下,完成了字面的實(shí)驗(yàn)內(nèi)容,完成后直接提交給老師就算完成,須知算法設(shè)計(jì)是一項(xiàng)相當(dāng)具有挑戰(zhàn)性工作,在實(shí)際項(xiàng)目攻關(guān)中,居于核心地位,很多情況下表面看來(lái)對(duì)算法問(wèn)題的已經(jīng)解決,深入研究才發(fā)現(xiàn),表面算法的提出只是在具體條件約束下的低效解決,沒(méi)有考慮到算法在高維問(wèn)題下的廣度性和深度性,未進(jìn)行深層次的算法完成,只是完成了問(wèn)題算法約束條件下的低維、低效內(nèi)容,也就是說(shuō)只達(dá)到了學(xué)習(xí)目標(biāo)的一部分,該實(shí)驗(yàn)內(nèi)容的拓展部分應(yīng)該由學(xué)生繼續(xù)深入學(xué)習(xí)或經(jīng)團(tuán)體深入討論完成的卻沒(méi)有完成,如何將算法在深度和廣度上表達(dá)得精練和高效,這本來(lái)由學(xué)生繼續(xù)學(xué)習(xí)能夠很好完成的重要部分,卻沒(méi)有實(shí)現(xiàn),這些能力的缺乏,使得學(xué)生畢業(yè)后和高素質(zhì)人才的標(biāo)準(zhǔn)相距甚遠(yuǎn)。
3教學(xué)方法改革思考與探索
為了解決算法分析與設(shè)計(jì)課程教學(xué)中的諸多問(wèn)題,緊扣“算法分析與設(shè)計(jì)”課程大綱,本文進(jìn)行了積極的探索,并結(jié)合當(dāng)前主流的教學(xué)手段,采用從身邊的算法、知識(shí)融會(huì)貫通以及項(xiàng)目驅(qū)動(dòng)等多元結(jié)合的教學(xué)方法,將教學(xué)內(nèi)容進(jìn)行擴(kuò)展。對(duì)計(jì)算機(jī)專(zhuān)業(yè)學(xué)生來(lái)說(shuō),算法分析與設(shè)計(jì)這門(mén)課就是要學(xué)會(huì)計(jì)算機(jī)解決問(wèn)題的方法,讓學(xué)生走出“算法只在計(jì)算機(jī)中,走出計(jì)算機(jī)好像就沒(méi)有算法的誤區(qū)”,充分發(fā)揮多種交流手段和方法,學(xué)生之間以小組為單位自查、自糾、自勵(lì),并定期舉行專(zhuān)題講座以激發(fā)學(xué)生不斷創(chuàng)新。
3.1從身邊的算法開(kāi)始學(xué)習(xí)
算法是指解決問(wèn)題的一種方法或一個(gè)過(guò)程,算法離每個(gè)人并不遙遠(yuǎn),但許多同學(xué)一聽(tīng)說(shuō)算法馬上想到的是抽象復(fù)雜難理解的東西,總覺(jué)得算法是一門(mén)高深玄妙的課程,沒(méi)有學(xué)習(xí)之前,心中就開(kāi)始感覺(jué)到壓力,帶著這種壓力去學(xué)習(xí),結(jié)果可想而知,其實(shí)算法在每個(gè)人身邊,本文通過(guò)一個(gè)具體的身邊案例讓學(xué)生明白,算法并不陌生,比如下面一個(gè)具體例子:
某工廠生產(chǎn)有1000000只燈泡,規(guī)定燈泡使用壽命1000小時(shí)以上的為合格,為判斷這批燈泡是否合格,請(qǐng)結(jié)合自己所學(xué)知識(shí),采用合適的算法來(lái)解決這一問(wèn)題?
檢查產(chǎn)品合格這個(gè)例子,在身邊是經(jīng)常遇到的,比起教材中哪些復(fù)雜算法,學(xué)生更容易理解,通過(guò)分析講解,知道要解決這個(gè)問(wèn)題,只要運(yùn)用概率知識(shí),采用均值和方差結(jié)合就能解決,因?yàn)閱斡镁颠@個(gè)指標(biāo)是無(wú)法解決的,根據(jù)高等數(shù)學(xué)知識(shí)可知,均值表示樣本的整體質(zhì)量,如樣本有100只燈泡,若50只使用壽命2000小時(shí),另50只使用壽命0小時(shí),若只按均值來(lái)說(shuō),這100只燈泡使用壽命就是1000小時(shí),按此方法這批燈泡就是合格的,這種方法明顯是錯(cuò)誤的,但若將均值和方差結(jié)合起來(lái),無(wú)疑就能解決問(wèn)題,因?yàn)榉讲羁梢韵拗破x程度,使得燈泡的整體壽命計(jì)算時(shí)若偏離程度過(guò)大,就可以判斷為這一批燈泡不合格,因此,可以采用均值來(lái)判斷整體質(zhì)量,用方差來(lái)判斷偏離程度,兩者方法結(jié)合就能較好判斷出燈泡的質(zhì)量情況??梢钥闯鏊惴ㄆ鋵?shí)在我們?nèi)粘I钪惺墙?jīng)常遇到的,采用算法解決問(wèn)題,也不是玄妙無(wú)比,只要運(yùn)用所學(xué)知識(shí),就會(huì)迎刃而解。通過(guò)這種類(lèi)似方法,使學(xué)生由淺入深的理解了算法的本質(zhì),激發(fā)了學(xué)生興趣。
3.2將所學(xué)課程知識(shí)融會(huì)貫通
算法分析與設(shè)計(jì)是一門(mén)本科生高年級(jí)或研究生的課程,這是由本門(mén)課程的特點(diǎn)決定的,這時(shí)學(xué)生的專(zhuān)業(yè)知識(shí)已基本具備,學(xué)生已學(xué)完大部分的重要課程,這門(mén)課程必需的高等數(shù)學(xué)、程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)知識(shí)都已學(xué)過(guò),因而這時(shí)開(kāi)設(shè)這門(mén)課程條件已完全成熟,但相當(dāng)一部分學(xué)生雖然已經(jīng)學(xué)完了這些課程,但卻無(wú)法綜合運(yùn)用,都只能是將自己思維定格在各科單獨(dú)的課程里,這與算法是程序的靈魂思想格格不入,如何使學(xué)生能將所這知識(shí)融會(huì)貫通,本課程教學(xué)中采用在理論講解中每個(gè)問(wèn)題所涉及的課程給學(xué)生講全面講透徹,使學(xué)生深刻理解某算法在哪些課程中發(fā)揮作用,在哪些課程中居于何種地位,使某一算法能將一門(mén)或幾門(mén)課程的幾個(gè)知識(shí)點(diǎn)連接起來(lái),真正把算法講活、講透,如課程講到動(dòng)態(tài)規(guī)劃算法,讓學(xué)生明白動(dòng)態(tài)規(guī)劃算法實(shí)際上就是一種解決最優(yōu)化問(wèn)題的算法,對(duì)于最優(yōu)化問(wèn)題的解決,讓學(xué)生回憶在高等數(shù)學(xué)里學(xué)過(guò)的拉格郎日乘法,在約束條件下求極值問(wèn)題,實(shí)際上就屬于一種最優(yōu)化問(wèn)題,這樣從學(xué)生熟悉的知識(shí)引導(dǎo)學(xué)生逐漸進(jìn)入到新的知識(shí),讓學(xué)生能較容易的理解什么是動(dòng)態(tài)規(guī)劃算法,進(jìn)一步給學(xué)生講解,以后還要學(xué)習(xí)的粒子算法以及蜂群算法都是解決最優(yōu)化問(wèn)題的算法;在實(shí)際教學(xué)中要求每一個(gè)學(xué)生采用多個(gè)角度寫(xiě)算法,并力求將每個(gè)算法實(shí)現(xiàn),并比較每個(gè)算法的復(fù)雜性,通過(guò)這種循序漸進(jìn)的教學(xué)方法,使學(xué)生能學(xué)得懂、學(xué)得快。
3.3以項(xiàng)目為驅(qū)動(dòng)進(jìn)行學(xué)習(xí)
通過(guò)對(duì)基本概念和一些基本問(wèn)題算法的學(xué)習(xí),學(xué)生已能基本解決一些實(shí)際問(wèn)題,但是與社會(huì)主流的需要還有差距,必須進(jìn)行具體的項(xiàng)目訓(xùn)練,才能使學(xué)生能真正實(shí)現(xiàn)和社會(huì)需要無(wú)縫連接,如讓學(xué)生學(xué)習(xí)運(yùn)用小波變換進(jìn)行圖像去噪,首先從理論上讓學(xué)生明白,小波變換和學(xué)習(xí)過(guò)的傅里葉變換一樣,都是一種變換,不過(guò)是選擇的基不同罷了,這兩種變換都不過(guò)是通過(guò)選擇不同基的情況下,將原函數(shù)表達(dá)出來(lái),兩種變換都是將原信號(hào)變換后,除去噪聲信號(hào),再通過(guò)逆變換恢復(fù),以此方式去噪,通過(guò)反復(fù)實(shí)驗(yàn),讓學(xué)生理解小波變換的不同級(jí)數(shù)的作用,以及產(chǎn)生不同結(jié)果圖的原因。在項(xiàng)目驅(qū)動(dòng)教學(xué)中,要充分發(fā)揮學(xué)生的創(chuàng)新性和能動(dòng)性,教師要多加引導(dǎo),同時(shí)讓學(xué)生在每個(gè)實(shí)驗(yàn)小組中充分自由表達(dá)自己的觀點(diǎn)和想法,通過(guò)集體知識(shí)解決問(wèn)題,達(dá)到共同進(jìn)步的目的,以達(dá)到學(xué)好知識(shí)的同時(shí)也培養(yǎng)良好的溝通和團(tuán)體協(xié)作能力。
4結(jié)語(yǔ)
本文針對(duì)算法分析與設(shè)計(jì)課程教學(xué)過(guò)程中的實(shí)際問(wèn)題,采用燈泡使用壽命檢測(cè)之類(lèi)的學(xué)生身邊算法,算法的融會(huì)貫通性,實(shí)際項(xiàng)目的驅(qū)動(dòng)性,這種多元結(jié)合的教學(xué)方法、教學(xué)設(shè)計(jì)以及教學(xué)理念,不僅提高了學(xué)生學(xué)習(xí)積極性,而且明顯提高了教學(xué)質(zhì)量,達(dá)到了較好的教學(xué)效果,也為其他課程的教學(xué)作了嘗試和鋪墊。