全星日 許一虎 朱東弼
摘要:Matlab是一門應(yīng)用性很強(qiáng)的實(shí)踐性課程,開展項(xiàng)目教學(xué)法是比較合理的Matlab教學(xué)策略。Matlab項(xiàng)目教學(xué)以快速入門、項(xiàng)目貫穿教學(xué)全過程的方式展開,在解決項(xiàng)目任務(wù)的過程中理解、掌握和綜合應(yīng)用基本指令,將驗(yàn)證性、綜合性和設(shè)計(jì)性融入每個(gè)項(xiàng)目任務(wù)當(dāng)中進(jìn)行深度學(xué)習(xí)。在Matlab項(xiàng)目教學(xué)實(shí)施過程中,從實(shí)戰(zhàn)的角度出發(fā),引導(dǎo)學(xué)生對程序進(jìn)行調(diào)試,對實(shí)驗(yàn)數(shù)據(jù)進(jìn)行分析、討論和理論驗(yàn)證,以獲得項(xiàng)目開發(fā)實(shí)踐經(jīng)驗(yàn),并逐步提高學(xué)生獨(dú)立編程能力。
關(guān)鍵詞:教學(xué)改革;教學(xué)方法;項(xiàng)目教學(xué)法;程序設(shè)計(jì);Matlab
中圖分類號(hào):G642 ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)34-0111-03
Abstract: Matlab is a practical course with strong applicability, so the PBL(Project-Based Learning) is more reasonable teaching strategy. The PBL based Matlabteaching is carried out in the way of quick introduction and project throughout the whole teaching process. In the process of solving project tasks, basic instructions are understood, mastered and comprehensively applied. Verification, comprehensiveness and design are integrated into each project task for deep learning. In the process of Matlab teaching implementation, from the perspective of actual combat, students are guided to debug the program, analyze, discuss and verify the experimental data, so as to increase practical experience and gradually improve students' independent programming skill.
Key words: education reform; teaching methodology; project-based learning; programming; Matlab
1引言
Matlab是強(qiáng)有力的數(shù)學(xué)分析工具,在工學(xué)中有著非常廣泛的應(yīng)用,如數(shù)值計(jì)算、算法仿真、數(shù)據(jù)分析等。Matlab課程后續(xù)的信號(hào)與系統(tǒng)、自動(dòng)控制原理、通信原理等專業(yè)課中都可以用它進(jìn)行仿真,加深對專業(yè)課基本概念的理解。而且Matlab與其他編程語言有很多相通的地方,學(xué)好Matlab可以提高學(xué)生的編程技能,加深對“程序”這一概念的理解。Matlab是一門應(yīng)用性很強(qiáng)的實(shí)踐性課程,以理論講授為主、做幾個(gè)應(yīng)用性實(shí)驗(yàn)的傳統(tǒng)教學(xué)模式使得學(xué)生能夠理解基本語法和簡單程序,但是當(dāng)學(xué)生需要獨(dú)立完成項(xiàng)目時(shí)往往感到束手無策、無從下手。不能為學(xué)而學(xué),從實(shí)戰(zhàn)的角度提高學(xué)生獨(dú)立編程能力很有必要。
2 Matlab教學(xué)中的若干問題思考
2.1 Matlab是一門應(yīng)用性很強(qiáng)的實(shí)踐性課程
傳統(tǒng)的Matlab教學(xué)多采用按照教科書內(nèi)容按部就班、循序漸進(jìn)的策略,主要教學(xué)內(nèi)容是Matlab的語法和指令的使用方法。這種照本宣科式教學(xué)中,學(xué)生處于被動(dòng)的接收地位,不利于激發(fā)學(xué)生的主觀能動(dòng)性和創(chuàng)新能力的培養(yǎng)。為了提高教學(xué)的趣味性并調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,張靜亞應(yīng)用項(xiàng)目教學(xué)法提高學(xué)習(xí)目的性,通過做實(shí)際項(xiàng)目,提高學(xué)生分析問題和解決問題的能力,采用了圖像處理項(xiàng)目[1];易昆南等在數(shù)學(xué)專業(yè)Matlab實(shí)驗(yàn)教學(xué)中結(jié)合音樂中的數(shù)學(xué)原理,鼓勵(lì)學(xué)生求異思維和發(fā)散思維[2];魏為民等提出了快速入門的策略,僅用10學(xué)時(shí)講授基本知識(shí),穿插6學(xué)時(shí)實(shí)驗(yàn)完成Matlab入門,采用實(shí)例教學(xué)法,列舉了[π]近似值計(jì)算項(xiàng)目[3];畢美華等在Matlab理論教學(xué)中針對語法教學(xué)的枯燥性,引入了趣味性實(shí)例,提高了學(xué)生的學(xué)習(xí)興趣[4];林海濤采用任務(wù)驅(qū)動(dòng)教學(xué)法,幫助學(xué)生主動(dòng)學(xué)習(xí),在探索中獲得成就感[5]。
Matlab教學(xué)中引入應(yīng)用性項(xiàng)目的研究很多,但是對學(xué)生實(shí)踐能力提高的相關(guān)研究比較少。有些學(xué)校的教學(xué)組織形式采用先講理論課、后上機(jī)的兩步走方案,這會(huì)降低學(xué)習(xí)效能,而且理論教學(xué)中學(xué)生處于被動(dòng)地位,不利于舉一反三和發(fā)散思維;一些學(xué)校做Matlab實(shí)驗(yàn)時(shí)開展驗(yàn)證性[+]綜合性[+]設(shè)計(jì)性實(shí)驗(yàn)項(xiàng)目[6],是否有更合理的方案進(jìn)一步改進(jìn)和深化這種階梯式遞進(jìn)方案使其更適合Matlab教學(xué)?很多學(xué)生在專業(yè)課中用到Matlab時(shí)往往感到迷茫,不知道從何處下手,程序出現(xiàn)錯(cuò)誤的時(shí)候也無法解決,也不知道怎樣分析和討論實(shí)驗(yàn)數(shù)據(jù),這些都是學(xué)生實(shí)踐經(jīng)驗(yàn)不足、獨(dú)立編程能力不夠的表現(xiàn)。
2.2 結(jié)合深入的專業(yè)知識(shí)未必是好的教學(xué)策略
有些學(xué)校做Matlab實(shí)驗(yàn)時(shí),實(shí)驗(yàn)內(nèi)容與專業(yè)課緊密結(jié)合,做與專業(yè)知識(shí)有關(guān)的實(shí)驗(yàn)。對理論知識(shí)理解透徹的同學(xué),這個(gè)教學(xué)策略或許是有幫助的,但是對專業(yè)知識(shí)掌握一般的學(xué)生,這一教學(xué)策略有可能帶來多個(gè)學(xué)習(xí)目標(biāo)的問題——Matlab編程技能要學(xué)、專業(yè)知識(shí)也要掌握。這部分學(xué)生跟著老師做了之后也沒領(lǐng)悟到做了什么、為什么這么做,更無法模仿和應(yīng)用這些做法解決其他類似問題。很多學(xué)校開設(shè)Matlab課程是安排在低年級(jí),進(jìn)入專業(yè)課之前或與專業(yè)基礎(chǔ)課程同時(shí)進(jìn)行,這就更不能結(jié)合深入的專業(yè)知識(shí)了。Matlab課程與專業(yè)課程緊密相連沒有必要、也做不到,學(xué)生的理論底子還沒上升到那個(gè)高度。Matlab教學(xué)中可以觸碰簡單的專業(yè)知識(shí),但是提前量不要太大,不要涉及深入的理論,更不要替專業(yè)課做實(shí)驗(yàn)。信號(hào)與系統(tǒng)、通信原理、自動(dòng)控制原理等很多專業(yè)課程中經(jīng)常使用Matlab做仿真實(shí)驗(yàn),這些實(shí)驗(yàn)交給專業(yè)課老師指導(dǎo),對理論知識(shí)理解透徹的前提下,Matlab編程才有意義。
本文認(rèn)為Matlab盡量在低年級(jí)開設(shè),Matlab在專業(yè)課程群中的定位應(yīng)該是單純的數(shù)學(xué)分析工具、為將來學(xué)習(xí)專業(yè)課提供工具上的支撐。學(xué)生的Matlab學(xué)習(xí)策略應(yīng)該是在Matlab課程中入門之后,在后續(xù)的專業(yè)課中通過對專業(yè)理論知識(shí)的仿真,理解專業(yè)課的基本概念,同時(shí)深化編程技能,仿真過程中會(huì)用到新的指令,在專業(yè)課中現(xiàn)學(xué)現(xiàn)用。
2.3 項(xiàng)目教學(xué)法有助于提高學(xué)生獨(dú)立編程能力
項(xiàng)目教學(xué)法是以建構(gòu)主義學(xué)習(xí)理論為基礎(chǔ),通過完成項(xiàng)目任務(wù),在解決問題的過程中進(jìn)行深度學(xué)習(xí)的教學(xué)策略。它能提高課程的趣味性,激發(fā)學(xué)生的求知欲,讓學(xué)生能夠自主參與進(jìn)來,主動(dòng)投身到項(xiàng)目任務(wù)當(dāng)中,進(jìn)行探索性、研究性學(xué)習(xí)。而且通過做項(xiàng)目,開闊學(xué)生視野,激發(fā)學(xué)生想象力,提高學(xué)生的自學(xué)能力、觀察能力、分析和解決問題的能力、信息搜集能力等等[7-8]。在課程中應(yīng)用項(xiàng)目教學(xué)法時(shí),項(xiàng)目的選定很重要,項(xiàng)目要有趣味性、應(yīng)用性和挑戰(zhàn)性,且難易度適中;在項(xiàng)目教學(xué)實(shí)施過程中教師的指導(dǎo)也非常關(guān)鍵,老師要善于引導(dǎo)學(xué)生進(jìn)行獨(dú)立思考,讓學(xué)生積極主動(dòng)參與進(jìn)來,要讓學(xué)生領(lǐng)會(huì)編程思路、掌握調(diào)試技能,并引導(dǎo)學(xué)生對實(shí)驗(yàn)數(shù)據(jù)進(jìn)行分析和討論、對程序進(jìn)行理論驗(yàn)證。從項(xiàng)目開發(fā)實(shí)戰(zhàn)中獲取編程經(jīng)驗(yàn)、提高獨(dú)立編程能力,這是項(xiàng)目教學(xué)法相對于實(shí)例教學(xué)法和任務(wù)教學(xué)法所無法比擬的優(yōu)勢。
3基于項(xiàng)目教學(xué)法的學(xué)生獨(dú)立編程能力提高
3.1基于項(xiàng)目教學(xué)法的Matlab教學(xué)內(nèi)容改革
我校Matlab課程安排在大二第一學(xué)期,總共講授32學(xué)時(shí),學(xué)生已學(xué)習(xí)的內(nèi)容包括高等數(shù)學(xué)、線性代數(shù)、C語言等學(xué)科基礎(chǔ)課程,并與電路等專業(yè)基礎(chǔ)課同期授課。授課地點(diǎn)安排為機(jī)房,學(xué)生學(xué)習(xí)指令之后直接上機(jī)做實(shí)驗(yàn),以便快速理解和掌握基本指令的使用方法,做項(xiàng)目時(shí)學(xué)生在課堂內(nèi)完善和改進(jìn)教師提供的樣例程序,在教師的提示下進(jìn)行程序調(diào)試,對實(shí)驗(yàn)數(shù)據(jù)進(jìn)行分析和討論,引導(dǎo)學(xué)生進(jìn)行深度學(xué)習(xí)。
為沒有專業(yè)知識(shí)背景的低年級(jí)學(xué)生找難易度適中且具有一定實(shí)際意義的應(yīng)用性項(xiàng)目并不容易。做書上的例題和習(xí)題不能稱之為項(xiàng)目教學(xué);安排難度稍高的任務(wù)、鼓勵(lì)和幫助學(xué)生獨(dú)立完成任務(wù)的任務(wù)驅(qū)動(dòng)教學(xué)法[5],在提高學(xué)生自習(xí)能力和編程能力上有一定意義,但是缺少應(yīng)用性和趣味性,對學(xué)生的吸引力較小,不能引發(fā)學(xué)生深入而發(fā)散的思考,與項(xiàng)目教學(xué)有區(qū)別。一些學(xué)校開設(shè)驗(yàn)證性[+]綜合性[+]設(shè)計(jì)性Matlab實(shí)驗(yàn)[6],這也不是真正意義上的項(xiàng)目教學(xué)。本文選定的項(xiàng)目以高中三角函數(shù)為起點(diǎn),逐步拔高知識(shí)層次,快速入門之后即刻開展項(xiàng)目做深度學(xué)習(xí)。項(xiàng)目貫穿教學(xué)全過程,在解決項(xiàng)目任務(wù)的過程中理解、掌握和綜合應(yīng)用Matlab基本指令,用項(xiàng)目任務(wù)刺激學(xué)生求知欲,使學(xué)生思維活躍起來,觸類旁通。
本文將Matlab所囊括的基本知識(shí)點(diǎn)分為三大入門模塊,教學(xué)安排如表1所示,每一個(gè)模塊講授完之后,綜合這些知識(shí)點(diǎn)進(jìn)行項(xiàng)目實(shí)踐。實(shí)踐項(xiàng)目時(shí)先提供樣例程序供學(xué)生模仿,通過樣例程序的引導(dǎo)使學(xué)生迅速進(jìn)入項(xiàng)目的問題情境。在此基礎(chǔ)上擴(kuò)展項(xiàng)目任務(wù),指導(dǎo)學(xué)生對程序進(jìn)行改進(jìn),將模仿(驗(yàn)證)、綜合和設(shè)計(jì)三部曲融合到每個(gè)項(xiàng)目中。開展項(xiàng)目教學(xué)過程中不可避免地碰到?jīng)]學(xué)過的指令和顯淺的專業(yè)知識(shí),教學(xué)中廣泛采用現(xiàn)學(xué)現(xiàn)用策略,如果涉及較深的專業(yè)知識(shí)做屏蔽處理,由老師編寫子程序供學(xué)生調(diào)用。
3.2程序調(diào)試是必須掌握的技能
再熟練的編程人員也不可能一次性編寫出沒有語法錯(cuò)誤、沒有邏輯錯(cuò)誤的完整的程序。一個(gè)對策是每寫完一小段程序,即刻運(yùn)行,確認(rèn)無誤之后再進(jìn)行下一段程序編寫;另一個(gè)對策是進(jìn)行單步調(diào)試,單步調(diào)試在編程實(shí)戰(zhàn)中也是經(jīng)常使用的操作,但是學(xué)生喜歡痛快的,程序編寫完之后按F5全速運(yùn)行得到最終運(yùn)行結(jié)果。教學(xué)過程中要求學(xué)生熟練運(yùn)用這兩種編程策略,同時(shí)密切關(guān)注工作區(qū)和命令窗的變化,觀察程序計(jì)算結(jié)果是否與編程意圖一模一樣、有沒有出現(xiàn)沒考慮到的意外情況。
學(xué)生編寫的程序中經(jīng)常出現(xiàn)的語法錯(cuò)誤有中文標(biāo)點(diǎn)符號(hào)、變量名大小寫錯(cuò)誤、變量沒有定義而引用、向量或矩陣的索引號(hào)超出范圍等。教師給樣例程序的時(shí)候故意設(shè)置這些陷阱,讓學(xué)生仔細(xì)閱讀命令窗的錯(cuò)誤提示,自行改正語法錯(cuò)誤。經(jīng)常出現(xiàn)的錯(cuò)誤還有邏輯錯(cuò)誤,指導(dǎo)學(xué)生在單步調(diào)試過程中一方面察看程序運(yùn)行步驟,另一方面僅僅盯著工作區(qū)中變量的數(shù)值變化,認(rèn)真進(jìn)行數(shù)據(jù)分析和確認(rèn)。學(xué)生通過這些訓(xùn)練,逐步增長調(diào)試經(jīng)驗(yàn),提高程序調(diào)試技能。
3.3注重實(shí)驗(yàn)數(shù)據(jù)的分析、討論和理論驗(yàn)證
用理論驗(yàn)證程序是非常重要的,程序是將數(shù)學(xué)語言翻譯為計(jì)算機(jī)語言,程序只要沒有語法錯(cuò)誤,肯定能得到一個(gè)計(jì)算結(jié)果,至于這個(gè)結(jié)果對不對、有沒有道理,只能由人來判斷,用理論來驗(yàn)證。
入門1中學(xué)生學(xué)習(xí)Matlab基本運(yùn)算和簡單的plot指令之后,讓學(xué)生分析函數(shù):
[[y=lgx2-10x+25] (1) ]
的特性。學(xué)生獨(dú)立編寫程序,畫出函數(shù)曲線如圖2,得出該函數(shù)有對稱性、存在最小值的結(jié)論。
[x = 0:0.01:10;
y = log10(x.^2-10*x+25);
plot(x,y); ]
教師引導(dǎo)學(xué)生進(jìn)行理論分析:
[[lgx2-10x+25=lgx-52=2lgx-5] (2) ]
該函數(shù)以直線[x=5]為對稱軸左右對稱,[x]從左、從右趨于[5]時(shí)[y]均趨于[-∞],該函數(shù)不應(yīng)該出現(xiàn)最小值,理論分析和Matlab畫圖有矛盾。教師給出結(jié)論:“Matlab欺騙了我們”。教師引導(dǎo)學(xué)生橫向放大[x=5]的周圍,曲線如圖3所示,學(xué)生才發(fā)現(xiàn)不是Matlab說謊了,是自己做錯(cuò)了,[x=5]的位置函數(shù)曲線是間斷的,Matlab只計(jì)算了[x=4.99]和[x=5.01]兩個(gè)點(diǎn)。進(jìn)一步分析工作區(qū)中變量[y]的數(shù)值,[x501=5],對應(yīng)的[y501=-Inf],圖2看著似乎有最小值,其實(shí)它不是最小值,而是間斷點(diǎn)。學(xué)生深切體會(huì)理論驗(yàn)證程序的必要性。
學(xué)生不知道哪些東西需要做理論分析和討論,也不知道怎樣進(jìn)行分析和討論,這就需要老師循循善誘。比如項(xiàng)目1中用plot指令畫音樂信號(hào)波形之后彈出來的圖形窗口一片藍(lán)色,什么信息都得不到,教學(xué)生圖形窗口的操作方法:zoom,pan,cursor,將音樂中do音的信號(hào)波形橫向放大之后才看到正弦波,引導(dǎo)學(xué)生測量正弦波周期為0.0038s,計(jì)算倒數(shù)得到頻率262Hz,確認(rèn)生成信號(hào)與理論相符。講到這里,有些學(xué)生自行摸索rotate,brush,dock figure等更多功能。項(xiàng)目3的頻域分析中,用cursor檢驗(yàn)兩個(gè)正弦分量的頻率數(shù)值,確認(rèn)DTMF編碼子程序的正確性,再進(jìn)行下一步DTMF解碼子程序。學(xué)生雖然沒有接觸過頻域分析的概念,但是從高中三角函數(shù)引入頻率的概念還是很容易的,至于傅里葉變換子程序由教師編寫供學(xué)生使用,學(xué)生只要理解頻率的概念、會(huì)調(diào)用子程序即可進(jìn)行獨(dú)立編程,完成項(xiàng)目任務(wù)。
教師時(shí)時(shí)提醒學(xué)生,沒有經(jīng)過分析、討論和理論驗(yàn)證的程序是半成品,是不可信的,程序一定要通過理論驗(yàn)證環(huán)節(jié)。這一點(diǎn)也是本文反對在Matlab課程中做一些涉及較深專業(yè)知識(shí)的實(shí)驗(yàn)項(xiàng)目的原因,沒有深厚的專業(yè)知識(shí)底蘊(yùn),即使正確使用Matlab指令編寫出程序也沒有任何意義,因?yàn)榫帉懙某绦驘o從判斷其正確性,也無法對計(jì)算結(jié)果進(jìn)行分析和討論并給出合理的理論解釋。專業(yè)課實(shí)驗(yàn)交給專業(yè)課老師指導(dǎo),對理論知識(shí)理解透徹的前提下,Matlab編程才有意義。
此外,相關(guān)資料搜集技能、報(bào)告書寫作技能、發(fā)表技能、閱讀論文等技能都是需要的。Matlab教學(xué)中,每次做完一個(gè)項(xiàng)目都要求學(xué)生寫報(bào)告書,報(bào)告書采用論文結(jié)構(gòu),給學(xué)生做簡單的論文指導(dǎo)。因?yàn)檫€沒有學(xué)習(xí)專業(yè)課,讓學(xué)生讀論文難度比較高,找一些難度低的學(xué)術(shù)文章也不容易,可以考慮在網(wǎng)上搜索幾篇寫得好的與項(xiàng)目相關(guān)的文章推薦給學(xué)生讀。學(xué)生在解決項(xiàng)目任務(wù)的過程中碰到了適當(dāng)?shù)睦щy和挫折,克服困難,積極探索,最終品嘗到成功的喜悅,繼而增強(qiáng)了求知欲,開拓了視野,提高了分析問題和解決問題的能力。
4結(jié)論
高等教育的教學(xué)理念正在從“期待學(xué)生知道的量”到“期待學(xué)生用其所學(xué)”轉(zhuǎn)變,“高等教育不是給學(xué)生解決問題,而是讓學(xué)生想更多的問題”。本著這一教學(xué)理念,本文以快速入門、項(xiàng)目貫穿教學(xué)全過程的方式展開Matlab項(xiàng)目教學(xué),每一個(gè)項(xiàng)目均融入驗(yàn)證性、綜合性、設(shè)計(jì)性,讓學(xué)生想象力飛起來,讓學(xué)生主動(dòng)投身到項(xiàng)目任務(wù)的探索和研究中,達(dá)到深度學(xué)習(xí)的目的。在項(xiàng)目教學(xué)實(shí)施過程中注重培養(yǎng)學(xué)生幫助文檔閱讀技能、程序調(diào)試技能、計(jì)算結(jié)果的分析和討論技能以及用理論驗(yàn)證程序的良好思維習(xí)慣,以實(shí)現(xiàn)學(xué)生能夠達(dá)到初步的獨(dú)立編程能力這一教學(xué)目標(biāo)。
參考文獻(xiàn):
[1] 張靜亞.基于項(xiàng)目驅(qū)動(dòng)的Matlab教學(xué)方法研究[J]科技資訊, 2014(36): 147-149.
[2] 易昆南, 李慧, 趙澍源.讓枯燥無味的數(shù)學(xué)變得有趣、有味、有惑——Matlab中的音樂合成[J].實(shí)驗(yàn)室研究與探索, 2014, 33(6): 114-117.
[3] 魏為民, 屈婉瑩, 趙琰.Matlab程序設(shè)計(jì)語言快速教學(xué)實(shí)踐[J].計(jì)算機(jī)教育, 2015(24):102-106.
[4] 畢美華, 楊國偉, 周雪芳, 曾然, 胡淼, 李齊良.Matlab寓教于樂教學(xué)模式的探討[J].高教學(xué)刊, 2017(11): 86–87.
[5] 林海濤, 任務(wù)驅(qū)動(dòng)教學(xué)法在《Matlab程序設(shè)計(jì)語言》教學(xué)中的實(shí)踐[J].開封教育學(xué)院學(xué)報(bào), 2014, 34(1): 80–81.
[6] 張玉葉.Matlab語言課程教學(xué)中若干問題探討[J].實(shí)驗(yàn)室研究與探索, 2018, 37(3): 176–179
[7] 姜靜思.淺析項(xiàng)目式教學(xué)[J].電腦知識(shí)與技術(shù),2014,10(5):1006-1007.
[8] 曹倩雯,呂光金.游戲項(xiàng)目在“VB程序設(shè)計(jì)”課程中的應(yīng)用[J].電腦知識(shí)與技術(shù),2015,11(21):85-87.
【通聯(lián)編輯:王力】