臧睦君, 鄒海林
(魯東大學 信息與電氣工程學院, 山東 煙臺 264025)
面向能力培養(yǎng)的Matlab工具屬性教學實踐
臧睦君, 鄒海林
(魯東大學 信息與電氣工程學院, 山東 煙臺 264025)
Matlab同時具有編程語言和科學工具兩種屬性。傳統(tǒng)教學中往往將Matlab視為一種高效的科學及工程計算語言,忽略了Matlab的工具屬性和應用技巧能力的培養(yǎng)。本文針對上述問題,提出并實施了面向能力培養(yǎng)的Matlab工具屬性教學改革方案,突出Matlab的工具屬性,培養(yǎng)學生的編程能力、圖形繪制能力,從而掌握使用Matlab進行設計與研究的技能。
Matlab;工具屬性;編程能力
Matlab可以進行矩陣運算、繪制函數(shù)和數(shù)據(jù)、實現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語言的程序等,適用于工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測等領域。鑒于此,國內高校的相應理工科專業(yè)一般均開設了與Matlab相關的課程,旨在使學生掌握運用Matlab軟件解決所學相關專業(yè)課程、學科競賽或科研課題中遇到的數(shù)學運算和求解問題[1]。
與C、C++、python等電子信息領域常用語言類似,Matlab也有一套相對獨立的計算機語言,使學生掌握Matlab編程語言是一項重要的教學目標。然而與其他計算機語言不同,Matlab在圖形繪制、結果顯示、GUI操作、用戶界面開發(fā)等方面具有強烈的工具屬性。但是,目前的“Matlab基礎及應用”課程教學中,Matlab的計算機語言教學占據(jù)了指導地位,其工具屬性未引起充分重視。例如,被廣泛采用的Matlab相關教材中,數(shù)據(jù)類型定義、程序開發(fā)、數(shù)值計算、符號計算等編程的內容占據(jù)了絕大多數(shù)課時量,圖形繪制等部分的教學內容也以指令操作的教學內容為主,未能充分發(fā)揮Matlab作為仿真和研究工具的重要作用[2-5]。為了評估傳統(tǒng)Matlab課程的教學對學生能力培養(yǎng)的影響,我們對完成“Matlab基礎及應用”課程學習的學生使用Matlab情況進行了調查,調查對象為30名使用Matlab作為主要畢業(yè)設計工具的高年級本科生以及使用Matlab作為主要科研工具的碩士研究生(其課程成績均為優(yōu)秀)。調研結果表明,有超過90%的學生在完成課程后并不具有與科研要求相應的Matlab應用技能。例如,這些學生尚不能使用便捷的圖形化顯示方法、難以編寫高效率的Matlab代碼、對本領域的內建工具包掌握程度差等。
對重視語言屬性的傳統(tǒng)“Matlab基礎及應用”課程內容進行分析后,筆者發(fā)現(xiàn),將Matlab視為一種高效的科學及工程計算語言,以編程語言作為教學核心的思想是導致教學內容與實際應用脫節(jié)的主要原因。鑒于上述分析,本文提出“Matlab基礎及應用”的工具化教學改革方案,突出Matlab在信息學科中的工具屬性,以“與時俱進、學以致用”為原則,從教學目標、課程編排和教學考核三個層面對課程進行改革,從而使學生在課程中掌握并提高使用Matlab進行設計與研究的技能。
“Matlab基礎及應用”課程的教學目標是讓學生掌握Matlab軟件的使用,解決學習和科研中的問題,因此“學以致用”是教學的基本原則?,F(xiàn)在該課程教學中往往過于強調學生熟悉Matlab的編程語言。因此,在掌握變量類型、編程語法、邏輯分支設計等內容的基礎上,通過專業(yè)應用的代碼量積累來培養(yǎng)學生的編程能力。以目前高等院校常用的Matlab教材為例,其中關于變量類型、編程語法等基礎內容的教學內容均超過10課時,面向不同專業(yè)應用的代碼量積累課程也占用了9到15課時[2-5]。不可否認,這種以提高Matlab語言編程能力為目標的教學可以在一定程度上加深學生對Matlab的理解,但是這種教學目標也帶來一定的負面作用。首先,Matlab基礎教程往往于大學二年級開設,這一階段學生對自己的專業(yè)情況缺乏明確的認識,在不能充分了解專業(yè)背景知識,未明確研究重點與方向的前提下,積累代碼量對培養(yǎng)學生應用能力的意義不大;其次,Matlab同時具有語言與工具兩種屬性,其中工具屬性是Matlab區(qū)別于其他編程環(huán)境的最重要特性,忽視Matlab的工具屬性會造成與實際應用有一定的脫節(jié)。
針對上述問題,通過教學實踐,我們將“Matlab基礎及應用”課程按照編程能力、圖形繪制能力兩方面分別制定教學目標,每個教學目標和內容按照基本和提高兩個要求進行設計。
1.1 編程能力教學目標
Matlab編程語言的特點是語法簡潔、庫函數(shù)豐富,編程能力的教學要求學生掌握基本的語法和邏輯,重點講解擴展代碼量的方法,代替原來教學方案中通過課堂訓練擴展代碼量的方式,從而將教學思想從“授之以魚”轉化為“授之以漁”。按照這一教學思想,基本教學要求主要面向基礎的數(shù)據(jù)結構與語法知識和自主學習能力。學生應該掌握的基礎數(shù)據(jù)結構與語法知識主要包括:變量及其操作、矩陣的表示、數(shù)據(jù)計算、字符串、數(shù)據(jù)結構和單元結構;順序結構和選擇結構中函數(shù)的使用方法;掌握循環(huán)結構中for和while語句的使用以及程序設計和調試方法。重點掌握創(chuàng)建和調用M函數(shù)的方法;腳本文件和函數(shù)文件、主函數(shù)文件和子函數(shù)文件的概念,深入理解調用函數(shù)的接口化編程思路。在此基礎上,掌握通過查閱Matlab幫助中心、學術資料等了解函數(shù)接口,自行擴展代碼庫的方法。
Matlab編程語言的另一大特點是矩陣和向量操作便捷、運算效率高,但是循環(huán)和子函數(shù)調用效率較低,矩陣化代碼優(yōu)化和混合編程代碼優(yōu)化是學以致用的重要技能。因此對于學有余力的學生,Matlab編程語言的提高要求為:熟悉矩陣化編程思想,掌握通過矩陣函數(shù)和混合代碼編程優(yōu)化代碼的能力。
在教學實踐中,筆者提出了通過一個課題同時考核學生對基礎教學目標和最高教學目標掌握程度的方案。以經(jīng)典問題“約瑟夫環(huán)編程”為例,在課堂講解約瑟夫環(huán)的命題與編程思想,提示學生可以自主查詢矩陣縮維函數(shù)squeeze等編寫約瑟夫環(huán)程序可能用到的內建函數(shù),通過作業(yè)、期末考試或課程設計的形式考核學生編寫約瑟夫環(huán)代碼的能力,并制定考核指標:①掌握了自主學習內建函數(shù)用法和基本編程知識,通過循環(huán)、分支或遞歸實現(xiàn)代碼基本功能的評定為及格;②能夠通過矩陣化編程思想優(yōu)化代碼可讀性和執(zhí)行效率的評定為良好;③掌握了通過矩陣函數(shù)代替循環(huán)操作技能或通過混合編程優(yōu)化代碼效率的評定為優(yōu)秀。通過上述考核,可以全面考察學生對Matlab編程語言掌握的程度,簡化以前通過基礎題和拔高題區(qū)分學生掌握程度的考察方法,從而有效貫徹了“授之以漁”的教學目標。
1.2 圖形繪制能力教學目標
具有強大的圖形繪制功能是Matlab最重要的特性。Matlab圖形繪制一直以來都是“Matlab基礎及應用”課程教學的主要內容。傳統(tǒng)教學往往將繪圖教學視為Matlab編程能力教學的延續(xù),重點講述圖形繪制函數(shù)的指令及語法,并將繪圖函數(shù)的掌握作為基礎教學目標。隨著Matlab版本的更新,實現(xiàn)簡單的圖形繪制已不需要記憶和掌握繁瑣的繪圖指令,內置GUI操作已經(jīng)能夠取代絕大多數(shù)繪圖指令。以Matlab 2015b版本繪制散點圖為例,通過選定工作組變量,右鍵菜單中選擇繪圖,已經(jīng)能快速實現(xiàn)圖形的繪制,進一步點擊編輯圖形屬性,即可進行圖形線條、散點、坐標軸等構圖要素的修改,而通過函數(shù)實現(xiàn)這些功能則需要通過指令編寫繁瑣的代碼,因此通過代碼繪制簡單圖形不是與時俱進的方法,將繪圖教學視為Matlab編程能力教學延續(xù)的思路也不再符合技術發(fā)展的需求。另一方面,能夠合理的設置圖形來表達數(shù)據(jù)的含義,并能夠將圖形應用到文檔中又是學生在學習、工作階段必要的能力需求。
基于上述分析,為實現(xiàn)重視Matlab工具屬性的教學,將圖形繪制能力的基礎教學目標設定為:掌握通過內置GUI操作繪制常見科學圖表的方法;能夠合理的設計圖表,精準表達數(shù)據(jù)的含義;掌握將繪制的圖表在文檔中進行應用的技巧。傳統(tǒng)的圖形操作指令則作為提高型教學目標,僅要求學有余力的學生掌握使用內建函數(shù)繪制圖形并編輯圖形屬性的能力;具有批量繪圖代碼的開發(fā)能力;熟悉繪制動態(tài)圖、混合繪圖等高級圖形代碼編寫技巧。
為了貫徹重視Matlab工具屬性的教學目標,在教學實踐中,筆者對“Matlab基礎及應用”課程進行了新的編排。其中理論教學內容共26學時,圍繞6個主題內容展開,其中前5個主題合計16學時為重視工具屬性的編程能力和圖形繪制能力教學,后10學時為實踐課程,在具體實施本方案時,實踐課程應根據(jù)具體專業(yè)和學生已掌握的知識做出安排與調整,6個主題的編排如下。
第一主題:Matlab環(huán)境的熟悉與基本運算(2學時)。介紹Matlab系統(tǒng)環(huán)境,講述矩陣、變量、表達式的輸入規(guī)則及基本運算,演示Matlab的開發(fā)環(huán)境、建立和執(zhí)行M文件的方法、特殊變量及常用函數(shù)的使用,要求學生了解一般變量和函數(shù)的使用方法。
具體實施過程中,首先通過現(xiàn)場演示,介紹命令窗口、工作組變量、當前工作目錄、搜索路徑等基本環(huán)境;然后通過矩陣運算練習函數(shù)的使用,練習分為矩陣初始化、矩陣元素訪問與處理、矩陣基本運算以及矩陣函數(shù)4個環(huán)節(jié),每個環(huán)節(jié)均可替換處理內容形成例題與練習題。例如,“生成正態(tài)分布隨機4維方陣,屏顯輸出矩陣的第2行之和,計算矩陣與數(shù)字5相乘的結果,并計算相乘后矩陣的秩”可作為一項課堂例題,隨機替換4個環(huán)節(jié)的內容為“生成均勻分布隨機5維方陣,屏顯輸出矩陣的第3列的最大值,計算上述5維方陣與5行3列的全1矩陣相乘后的結果,并將相乘后的矩陣上下翻轉”作為一項練習題;最后講述建立和執(zhí)行M文件的方法,引導學生將編寫的練習代碼開發(fā)為M文件。
第二主題:順序、分支、循環(huán)結構的程序設計(4學時)。介紹順序結構和選擇結構中函數(shù)的使用方法,詳細講述if、switch、for、while函數(shù)的用法,要求掌握順序、分支、循環(huán)、遞歸程序設計的基本規(guī)范。
筆者以經(jīng)典編程問題“約瑟夫環(huán)編程”為順序、分支、循環(huán)、遞歸程序設計的核心例題,在對順序結構和選擇結構的函數(shù)進行講解后,簡要介紹約瑟夫環(huán)的命題與編程思想,并引導學生對代碼進行編寫。這一主題的編程練習以啟發(fā)式教學為主,不應限定學生實現(xiàn)約瑟夫環(huán)所采用的方法、代碼效率、代碼可讀性等內容,允許學生自由發(fā)揮,能夠達到熟練應用順序結構和選擇結構函數(shù)的程度即可。
第三主題,函數(shù)文件的定義和調用(2學時)。介紹腳本文件和函數(shù)文件、主函數(shù)文件和子函數(shù)文件的概念,然后講授創(chuàng)建和調用M函數(shù)的方法。通過M函數(shù)的調用演示接口化編程思想。
盡管這一主題不涉及復雜的代碼編寫問題,然而Matlab腳本語言的特點和接口化編程思想對學生深入學習和使用Matlab至關重要。因此,可將前兩主題的內容與M函數(shù)的教學形成延續(xù)性,引導學生將前兩主題編寫的代碼進行接口化編程的開發(fā),不引入新的復雜程序編寫任務,使學生可以集中精力于腳本語言特點和接口化編程思想的實踐和體會。
第四主題,函數(shù)功能的自主學習和代碼優(yōu)化(4學時)。介紹通過訪問Matlab幫助中心、查閱技術文檔等學習新函數(shù)使用方法的技巧,通過實例演示和上機操作熟練掌握新函數(shù)自主學習技巧;講述矩陣化編程思想和混合編程思想,要求掌握矩陣化編程和混合編程的技巧。
這一主題是實踐性很強的技巧教學,也是側重能力培養(yǎng)的Matlab工具屬性教學核心內容,需要在教學中充分調動學生的積極性。通過將學生已掌握的專業(yè)知識作為教學例題,有助于他們直觀理解Matlab的工具作用,從而激發(fā)學習興趣。筆者在對信息工程專業(yè)的學生進行教學時,將傅里葉變換函數(shù)作為核心例題,在講解了函數(shù)的自主學習方法后,要求學生自行查閱資料,學習并使用Matlab內建的傅里葉變換函數(shù)。進一步課堂講解代碼優(yōu)化技巧,將前三主題中已編寫的代碼進行優(yōu)化,從而讓學生掌握矩陣化編程和混合編程的技巧。
第五主題,Matlab高層繪圖操作(4學時)。介紹通過內置GUI操作,繪制常見科學圖表、編輯圖表屬性的方法,介紹利用不同圖表形式表達科學數(shù)據(jù)的技巧,要求掌握繪制圖形的保存、轉存、導入文檔的方法;講述通過內建函數(shù)繪制圖形并編輯圖形屬性的方法,介紹批量繪圖代碼的開發(fā)技巧,繪制動態(tài)圖、混合繪圖等高級圖形代碼編寫技巧。
圖形的繪制和導入文檔是Matlab學以致用的核心內容,也是學生在完成課程設計、畢業(yè)設計等實踐創(chuàng)新活動必備的重要技能,因此筆者在教學實踐中采用了以練代講的策略。在講解過程中直接通過課堂演示講述GUI操作繪圖、保存、導入文檔的方法,然后演示圖形屬性編輯和圖形美化技巧,最后通過一定量的練習,給定數(shù)據(jù),引導學生自行設計科學圖表并導入文檔,達到學以致用的目的。
第六主題;Matlab的專業(yè)應用實踐(10學時)。該主題按照具體專業(yè)和學生已掌握的知識進行專業(yè)實踐編排。筆者在對信息工程專業(yè)進行教學過程中,編排了傅里葉變換和小波變換提升實踐。首先復習并擴展第四主題函數(shù)功能的自主學習的內容,引導學生通過查閱資料和訪問Matlab幫助中心學習傅里葉變換和小波變換的內建函數(shù),針對模擬信號進行仿真;進一步實踐第五主題圖形化的內容,將仿真結果編排成合理、美觀的圖表,并導入文檔中形成科技報告;最后進行代碼編寫和優(yōu)化能力的訓練,引導學生按照信號處理課程的理論知識編寫快速傅里葉變換的子函數(shù),并進行優(yōu)化。
筆者在電子信息工程專業(yè)開設的“Matlab基礎及應用”課程中實踐了上述教學內容及安排,并在畢業(yè)設計的指導中對教學效果進行了調查。結果表明,由于重視了函數(shù)功能的自主學習能力培養(yǎng),學生在課程學習后無需額外的培訓即可開展本專業(yè)的Matlab仿真,并且具備了利用Matlab進行科學數(shù)據(jù)的圖表繪制能力,達到了學完即可用的教學效果。在畢業(yè)設計中,績點為優(yōu)秀的學生具備了通過Matlab實現(xiàn)精準、美觀的科技圖表繪制和文檔導入能力,能夠編寫高效率的Matlab代碼,可自行掌握相關領域函數(shù)實現(xiàn)代碼量的自主擴展,教學實踐效果顯著。
經(jīng)過基于能力培養(yǎng)的Matlab教學實踐,可以使學生充分掌握Matlab在研究與開發(fā)中的應用技巧,發(fā)揮自主學習能力,從而達到授之以漁的效果,實現(xiàn)了傳授知識、技巧、實踐經(jīng)驗三個方面的教學目標。
[1] 劉曉玉. 基于教學目標的 Matlab 語言課程教學方法探索[J]. 北京:計算機教育, 2015(3): 59-61.
[2] 于潤偉, 朱曉慧. Matlab 基礎及應用[M]. 北京:機械工業(yè)出版社, 2012:4.
[3] 張學敏, 倪虹霞. Matlab 基礎及應用[M]. 北京:中國電力出版社, 2012:2.
[4] 劉勍, 溫志賢. Matlab 基礎及應用[M]. 南京:東南大學出版社, 2011:1.
[5] 李國朝. Matlab 基礎及應用[M]. 北京:北京大學出版社, 2011:1.
Teaching Practice of Tool-attribution of Matlab for Ability Training
ZANG Mu-jun, ZOU Hai-lin
(SchoolofInformationandElectricalEngineering,LudongUniversity,Yantai264025,China)
Matlab has two attributions, which are the programming language and scientific tools. Traditional teaching pays attention to language-attribution and ignores the tool-attribution of Matlab and lacks ability training because it seems that Matlab only is abont programming language. In order to solve the above problem, we proposed and applied the plan of education reform of tool-attribution of Matlab for ability training. The plan highlights the position of tool-attribution of Matlab, attaches importance to teaching students the programming ability and graphics rendering ability, and therefore makes them master skills of design and research skills using Matlab.
Matlab; tool-attribution; programming ability
2016-08-31;
2017-01- 09
山東省本科高校教學改革研究項目(2015M064)
臧睦君(1984-),女,博士,講師,主要從事圖像處理、模式識別的教學和研究,E-mail:zmjun_candy@hotmail.com
G642
A
1008-0686(2017)04-0026-04