陶慶云 劉麗芳
摘 要 全國大學生數(shù)學建模競賽取得了良好的人才培養(yǎng)效應,提高了學生的綜合素質(zhì),特別是運用數(shù)學知識分析和解決問題的能力。數(shù)學建模競賽對學生的算法設計、實現(xiàn)和分析能力要求較高,研究如何提高學生的算法設計技能是一項具有重要意義的研究課題。本文詳細介紹了競賽培訓中算法課程教學時如何進行實例教學和如何鼓勵學生開展研究性學習,以及實踐環(huán)節(jié)如何進行分層次教學。
關(guān)鍵詞 數(shù)學建模 算法設計 算法課程
1 數(shù)學建模與算法
根據(jù)全國大學生數(shù)學建模競賽組委會提供的數(shù)據(jù),2017年共有36375個隊,近11萬名大學生參加此次競賽。參賽選手來自全國34個省/市/區(qū)(包括香港、澳門和臺灣)及新加坡和澳大利的1520所院校。參賽人數(shù)再創(chuàng)歷史新高。數(shù)學建模競賽目前已成為全國高校規(guī)模最大的基礎性學科競賽,也是世界上規(guī)模最大的數(shù)學建模競賽,已經(jīng)取得了良好的人才培養(yǎng)效應。
數(shù)學建模競賽的題目均來自實際問題或者有明確的實際應用背景。它的宗旨是培養(yǎng)大學生用數(shù)學思維和方法解決實際問題的意識和能力,這要求學生從實際問題中抽象出數(shù)學模型并選擇合適的數(shù)學表示方式,設計出求解問題的算法步驟,再利用計算機進行仿真實驗計算出模型的數(shù)值解,進而檢驗模型的正確性。這是一個復雜的抽象思維過程,其中對學生的算法設計、實現(xiàn)和分析能力要求較高。為此,研究如何在競賽培訓中提高學生的算法設計技能是一項具有重要意義的研究課題。
2 算法課程教學的現(xiàn)狀
數(shù)學建模競賽培訓中算法課程的教學難度大,主要體現(xiàn)在課程涵蓋內(nèi)容非常廣泛、理論性較強、學生編程水平有限、上機實踐教學環(huán)節(jié)實施困難。一方面,可以說競賽培訓中各門課程皆涉及算法。這些內(nèi)容包括計算機常用算法、現(xiàn)代優(yōu)化算法、數(shù)值計算方法、線性與非線性規(guī)劃、微分方程、各種概率與統(tǒng)計方法等等。另一方面,作為地方性院校學生的數(shù)學水平和計算機編程基礎一般,尤其低年級學生學習編程時間短,實踐編程練習少,從而學生普遍反映競賽培訓課程內(nèi)容繁雜,理論深度大,上機實驗難。授課教師一致反映要想在短時間內(nèi)提高學生的算法設計技能實為不易。因此,從教與學兩方面對算法課程改革進行積極探索具有重要的現(xiàn)實意義。
3 算法課程理論性教學的探索
算法課程的目的是培養(yǎng)學生全面理解算法設計與分析中的基本概念,掌握算法設計和分析的主要原理和方法,熟練掌握解決常見問題的經(jīng)典算法,提高學生用計算機解決實際問題的能力。由于算法課程內(nèi)容非常廣泛且理論深度大,教師在培訓中不可能全面的講授競賽中可能涉及到的所有知識內(nèi)容,而只能盡可能多地介紹求解各類問題的基本算法。這時教師可向?qū)W生推薦優(yōu)秀的輔導教材,供學生引申閱讀,拓寬學生知識面,提高學生數(shù)學素養(yǎng)。
競賽培訓中我們提倡實例教學法,理論的講授盡量做到深入淺出,給學生起引導作用,鼓勵學生進一步自學,要求學生做到舉一反三。例如,在講授動態(tài)規(guī)劃算法時,教師可先介紹如何用它求解斐波拉契數(shù)列問題,并與用遞歸算法求解斐波拉契數(shù)列問題進行對比,分析子問題的重疊性,從而突出動態(tài)規(guī)劃算法的最大優(yōu)點即避免子問題的重復計算,極大提高算法效率。然后教師可提出0-1背包問題,鼓勵學生討論分析,指出它與斐波拉契數(shù)列問題的相似性,即二者都可以看作多階段最優(yōu)化問題,都具有子問題重疊性,且適時指出這兩個問題都具有最優(yōu)子結(jié)構(gòu)性質(zhì),因此可用相同的方法求解它們。此時教師再詳細介紹如何用動態(tài)規(guī)劃算法逐步求解0-1背包問題,最后再總結(jié)出算法的基本思想。
教學時應鼓勵學生開展研究性學習,教學應是開放式的。所謂研究性學習是指學生基于自身興趣,在教師指導下,從自然現(xiàn)象、社會現(xiàn)象和生活中選擇和確定研究專題,并在研究過程中主動獲取知識、應用知識、解決問題的學習活動。
研究性學習主要為了改變學生的學習方式,強調(diào)一種主動探究和改革創(chuàng)新的精神,主要為了培養(yǎng)學生自主學習的能力,轉(zhuǎn)變傳統(tǒng)的教師講解學生接受的固定教學模式。研究性學習體現(xiàn)出一種學習的變革,這包括:(1)學習目的的變革:從為了掌握知識向為了解決實際問題轉(zhuǎn)變;(2)學習內(nèi)容的變革;從固定的純理論知識向綜合性、應用性知識轉(zhuǎn)變;(3)學習過程的變革:從被動接受知識向主動獲取知識轉(zhuǎn)變;(4)學習方式的變革:從機械程序性掌握知識向靈活多變性理解知識轉(zhuǎn)變。具體來說,在競賽培訓時教師可以根據(jù)學生實際情況設計出不同問題后,可由學生自由選擇題目,自由分組交流,查閱相關(guān)資料,熟悉問題的背景知識,建立問題的數(shù)學模型,搜索相關(guān)的數(shù)據(jù),探索求解問題的各種方法。在此過程中應充分發(fā)揮學生的主動性,鼓勵學生從全方面不同角度看待問題、理解問題,學生也可向教師咨詢,教師向?qū)W生提供引導性的建議,對較難的知識點作出詳細講解。最后教師對學生的學習過程及成果進行點評,并給出改進性建議。
這個研究性的學習過程不僅激發(fā)學生的學習興趣,培養(yǎng)分析問題和解決問題的能力,也能培養(yǎng)和提高學生搜索資料,應用軟件,寫作科研論文等方面的能力,還能培養(yǎng)學生團隊合作精神和創(chuàng)新精神。可以認為這樣的教學過程就是一次小型的數(shù)學建模競賽,凡是競賽中含有的環(huán)節(jié)都讓學生反復體驗,競賽所需要的各種能力和素養(yǎng)都能讓學生得到充分的鍛煉。
4 算法課程實踐性教學的探索
算法課程的實踐教學主要目的在于提高學生利用計算機進行仿真實驗的能力。這要求學生至少掌握一門以上的計算機高級語言,如C、C++、Java等,必須熟悉常用的數(shù)學軟件如Matlab、SPSS、Mathematica等。因此對于接觸計算機編程時間較短的學生尤其是低年級學生首先要接受程序設計方面的基礎培訓。在競賽中學生通過分析問題建立好數(shù)學模型后,必須設計出求解問題的算法步驟。一方面必須要借助于計算機工具編寫程序?qū)崿F(xiàn)算法才能計算出模型的數(shù)值解,另一方面需要根據(jù)計算結(jié)果來檢驗模型的正確性。于是,競賽時學生能否利用熟悉的計算機語言編寫程序?qū)崿F(xiàn)算法,得出模型的結(jié)果就顯得尤為重要。這不僅考驗學生的計算能力,更考驗學生的編程功底。而扎實的編程功底需要長時間的積累,要求學生熟練掌握各種基本算法、平時多做編程練習,掌握程序設計技巧。
實踐教學中考慮到學生編程能力的差異,可將編程實驗分為三個不同層次。首先,基礎階段包括觀摩現(xiàn)成的經(jīng)典算法程序,在教師的講解和指導下進行模仿和修改以達到理解和熟悉經(jīng)典算法的目的。其次,提高階段包括學生修改算法求解同類型的簡單問題,或者自己編程解決難度不大的具體實例。最后,應用階段為學生分組合作解決各種綜合性的具體實例。例如在學習動態(tài)規(guī)劃算法時,在教師指導下學生應能編寫程序求解較簡單的斐波拉契數(shù)列問題,由于動態(tài)規(guī)劃算法求解0-1背包問題存在較大難度,教師可提供現(xiàn)成的算法程序讓學生觀摩和修改。最后作為應用可提出合唱隊形問題和組合數(shù)問題,由學生分組合作共同解決。
要讓學生熟練掌握各類基本算法應是一個長時間的過程,為此應該鼓勵學生進行自主性學習,讓學生充分發(fā)揮主觀能動性。算法的實踐教學不應局限于培訓的課堂內(nèi),而應充分利用好學生的課余時間,為此,可以讓學生成立專門的算法興趣小組,注重決學生感興趣的各類問題,或者進行多樣化的程序設計競賽,由學生自主完成,也可由專任教師隨時提供咨詢,進行實戰(zhàn)指導。當然,學生的自主學習過程離不開一個好的上機實驗環(huán)境,我們提倡學校實驗室課余時間免費向?qū)W生開放,像筆者所在學校已有部分實驗室從早上8點到晚上10點都向?qū)W生免費開放。這受到了學生的熱烈歡迎,也取得了良好的學習效果。
最后,算法課程的實踐環(huán)節(jié)離不開一本優(yōu)秀的學生上機實驗輔導教程。輔導教程應該選題恰當,內(nèi)容全面,層次分明,有利于不同水平的學生進行編程練習。
5 結(jié)語
新時期高等教育的目標是培養(yǎng)適應現(xiàn)代社會的創(chuàng)新型高素質(zhì)人才,我們培養(yǎng)的大學生應具有創(chuàng)新精神和創(chuàng)新能力。這種素質(zhì)和能力的培養(yǎng)需要通過教師不斷優(yōu)化教學過程以及學生不斷改進學習方法來完成。作為數(shù)學教師要以一種研究者的心態(tài)去處理教學內(nèi)容,將隱藏在繁雜內(nèi)容中的基本數(shù)學思想發(fā)掘出來,并引導學生也能慢慢去發(fā)現(xiàn)問題中所蘊含的數(shù)學思想;在學生中要提倡研究性學習方式,努力培養(yǎng)學生的創(chuàng)新精神與創(chuàng)新能力。
而數(shù)學建模競賽的開展恰好有助于提高學生的數(shù)學素養(yǎng)和創(chuàng)新能力,有助于促進學生的算法設計與分析能力以及應用數(shù)學知識解決實際問題的能力。參加數(shù)學建模競賽離不開學生的研究性學習和自主性學習,離不開教師對數(shù)學課程和計算機課程教學體系的改革與創(chuàng)新,同樣也離不開學校對教師和學生的管理方式的改革與創(chuàng)新。為了成功應對數(shù)學建模,我們應該了解學科發(fā)展的動態(tài)和前沿理論,應成為一個高素質(zhì)的研究者,并將科學研究引入大學生的教學過程,進一步來看,數(shù)學建模也有利于提升整個高校課程教學的質(zhì)量與效果。數(shù)學建模培訓課程應成為高校課程教學改革的先鋒,值得我們不斷去探索和改進。
*通訊作者:陶慶云
參考文獻
[1] 曲德祥.關(guān)于實踐教學中算法設計與分析課程的研究及應用[J].信息技術(shù)與信息化,2012(1):61-63.
[2] 姜啟源,謝金星,葉俊.數(shù)學模型(第3版)[M].北京:高等教育出版社,2003.
[3] 司守奎,孫璽菁.數(shù)學建模算法與應用[M].國防工業(yè)出版社,2011.
[4] 陳蕾,張怡婷,許建.基于創(chuàng)新能力培養(yǎng)的算法設計與分析課程教學改革[J].計算機教育,2010(20):27-29.
[5] 秦董洪,陳智勇.算法設計與分析課程教學研究[J].計算機教育,2013(11):98-101.
[6] 林劼,戴波.項目驅(qū)動型算法設計與分析課程教學方法[J].計算機教育,2014(9):69-71.
[7] 耿國華.算法設計與分析[M].北京:高等教育出版社,2012.
[8] 夏師.關(guān)于在數(shù)學建模教學中開展研究性學習的思考[J].教育與職業(yè),2010(12):96-97.