鄭小雪 林威
摘 要:以MATLAB課程的教學任務和教學目標為出發點,對該課程的教學設計和教學方法進行研究與探討,提出了以模塊化教學和任務驅動式教學法為核心、結合階段式教學和分組實訓的教學思想,分析了各個階段教學實踐工作的特點與要求,設計了契合課程實際情況的考核方法與指標。旨在強調程序設計類課程的應用導向性,解決課程教學與實踐環節缺乏繼承性的問題,實現“教”、“學”、“做”三要素的一體化。
關鍵詞:MATLAB;模塊化教學;任務驅動式教學法;教學改革
中圖分類號:G642 文獻標志碼:A 文章編號:2096-000X(2018)07-0067-04
Abstract: Taking the teaching task and teaching goal of MATLAB course as the starting point, the paper studies and discusses the teaching design and teaching method of the course, puts forward the teaching ideas which focus on modularization teaching and task-driven teaching method combined with the stage teaching and group training, analyzes the characteristics and requirements of teaching practice in all stages, and designs the assessment methods based on the actual situation of the curriculum. The purpose of this course is to emphasize the application orientation of programming courses and to solve the problem of lack of inheritance in the teaching and practice of courses so as to realize the integration of the three elements of teaching, learning and doing.
Keywords: MATLAB; modularization teaching; task-driven approach; educational reform
一、概述
MATLAB是目前在科學研究和工程設計中被廣泛應用的高級編程語言,它以高性能的矩陣(數組)運算為基礎,整合了大量的通用算法和高效的運行函數,其應用范圍涵蓋數值計算與可視化分析、系統建模與仿真、數字信號和數字圖像處理、算法開發與設計、控制系統構建和計算生物學等諸多領域[1-5]。相較傳統的高級編程語言(例如C語言和Fortran語言等),由于原生支持向量和矩陣運算,MATLAB在解決科學和工程計算問題上擁有設計開發簡便快捷和計算實現快速高效的雙重優勢。因此,早在20世紀90年代,歐美等發達國家的大學就普遍將MATLAB列為一門必須掌握的編程語言。近年來,隨著多學科融合教學科研模式的興起,以及注重本科生應用實踐能力提升的教育導向,國內許多大學在設置本科生必修課程時也相繼引入了MATLAB教學內容。
由于MATLAB引入國內高校的時間并不長,在不同學校之間的推廣程度也不盡相同,使得目前該課程的教學研究和改革領域可供直接參考或借鑒的經驗與成果相對較少。在綜合性大學理工類專業的本科教學工作中,如何充分發揮MATLAB的科學價值和工具作用,引導學生了解、掌握科學計算的基本方法與能力,并且能夠將該能力貫穿于具體應用問題的分析與解決過程,是MATLAB教學的重要任務和目標[6,7]。然而,在實際教學過程中,課程的拓展空間與授課時間會受到教學大綱和總體課時的雙重制約,因此,教師需要在有限的課時內將MATLAB的基本操作技能、計算方法、程序設計思想和應用途徑等課程精髓灌輸給學生并使其具備一定的實踐能力,這對于教師的教學方法與教學能力提出了較高的要求[8]。本文將結合作者自身的教學實踐與經歷,對該課程教學工作的開展進行分析與探討。
二、教學設計與教學研究
(一)前置課程和教學計劃安排
為了確保學生的接受度和課程的教學質量,需要結合MATLAB自身的語言結構特點和所需的基礎知識儲備安排適當的前置課程。由于MATLAB的數據類型、數據結構和語法規范等與C語言較為類似,兼之C語言在各個高校的專業基礎課程中具有很高的普及度,因此將“C語言程序設計”作為MATLAB教學的前置課程是合理且可行的。同時,為了實現MATLAB的科學計算功能,需要學生具備“高等數學”、“線性代數”和“概率論與數理統計”等方面的數理知識,特別是“線性代數”中所涉及的矩陣論與矩陣運算思想,更是MATLAB的優勢與精華所在,所以,應當將上述數學類公共基礎課作為該課程的前置課程。此外,為了提高學生的程序設計和應用實踐能力,可以引導學生預先選修“算法與數據結構”、“數字信號處理”等計算機方向的專業課程。
在課程安排方面,考慮到前置課程的開課時間,特別是C語言和數學類公共基礎課一般安排在第一至第三學期授課,故MATLAB課程較為合理的開課時間應當為第四學期。安排在這個時點授課,一方面能夠保證較為充分的基礎知識儲備,有利于學生建立扎實、完備的方法與理論體系;另一方面能夠較好地實現新老課程之間的銜接,有利于學生理解、消化新的知識點與教學內容。
在學時分配方面,由于MATLAB課程涉及的知識點具有內容細、數量多、涉及面廣等屬性,同時,作為程序設計與實踐類課程,需要將教師授課演示和學生上機實操緊密結合才能達到較好的授課效果,因此,應當保證有較為充分的計劃學時作為支撐。以作者的實際教學經歷為例:課程的計劃學時總計48學時,每周授課1次4學時,授課時間跨度為12周;單次授課的4學時中,安排2課時的課堂教學和2學時的上機實操。
(二)教材選擇和教學任務分解
教材選擇是教學工作開展的前提和基礎,選擇結構合理、內容全面、難易適中的教材能夠幫助教師更好地達成教學目標,同時也有利于學生對相關專業知識的學習和掌握。基于上述考量,作者選取了《MATLAB程序設計基礎與應用》(劉帥奇等著,清華大學出版社,2016年)作為教材,該教材的章節結構安排合理,知識點講解通俗易懂,且配有專項練習,有助于學生在教師的輔導下快速掌握MATLAB的操作能力和使用技巧。在課程參考書方面,選取了《MATLAB從基礎到精通》(王薇著,電子工業出版社,2012年)和《MATLAB數字圖像處理(第2版)》(張德豐等著,機械工業出版社,2012年)作為教材的拓展與補充。
在選定教材的基礎上,首先,對教學過程進行整體性規劃,通過對教材的深度閱讀和整理歸納,抽取其中關鍵性的知識點,構建、編排教學內容。之后,引入模塊化教學的理念,通過對各個知識點之間的繼承和關聯,將教學內容分解為多個具有先后次序的任務模塊,每個模塊凸顯一個主題,圍繞該主題講解相關的MATLAB操作技能與具體應用。各個任務模塊在知識體系的構建方面力求循序漸進,在實踐能力的培養方面注重新舊知識點的融會貫通和綜合應用,以期在教學安排上達到階段性和系統性的協調統一。
例如,在開展MATLAB基礎知識任務模塊教學時,適量地提前引入后續模塊中關于科學計算和數據可視化的部分內容,配合MATLAB的功能演示,激發學生對課程學習的興趣和動力。又譬如在講解MATLAB的數據類型與運算時,將“元胞數組”和“結構體”部分的教學內容整合至與其關聯性更為緊密的“數組與矩陣”任務模塊中,以提高教學內容的協調性,加深學生對相關內容的理解與認識。
通過教材選擇和教學任務分解,在教學內容的整體編排方面達到了吐故納新的效果,基礎性和重要性的知識點被繼承和保留,難以理解的概念和應用較少的生僻內容被剔除,同時,進一步擴大了實踐性教學的比重,以確保教學內容的可操作性和實用性。
(三)教學方法研究
結合課程內容和授課對象的特點,選擇適當的教學方法是達成教學目標的必要條件和關鍵步驟。MATLAB作為高級編程語言和計算工具,其課程內容應當以技能培養為主導,體現出較強的應用性和實用性。同時,考慮到授課對象已經修習過前置課程,教師在授課時應避免對相似性較強的內容(例如MATLAB中與C語言幾乎一致的程序控制結構部分)做過多的重復性講授,而需將教學重點放在MATLAB的特色與功能方面,并通過合理地安排實踐環節和實踐內容來鞏固知識點,提高學生對MATLAB的實際應用能力。
基于上述分析,作者在開展MATLAB課程教學的工作中采用了以模塊化教學和任務驅動式教學法為核心的多樣化教學方法[9,10],下面對其做簡要介紹。
1. 多層次任務設計
多層次任務設計將教學內容中的各個任務模塊分解為講授型任務和實踐型任務兩部分。其中,講授型任務進一步細分為用于講解MATLAB基本操作和常用命令(函數)的引導性任務,以及用于強化知識點的鞏固性任務;實踐型任務則細分為實現基本功能與簡單應用的基礎性實踐任務,以及實現多功能和綜合性應用的進階性實踐任務。
多層次任務設計內容如圖1所示。
2. 任務驅動式教學法
通過多層次任務設計,將任務模塊分解為不同層次、性質和目的的子任務。
對于講授型任務,其主體為授課教師,任務環境為課堂。其細分后的引導性任務需要通過講解任務模塊所涉及的基本原理、概念和方法,進而引出任務模塊中的各個知識點。鞏固性任務則是在完成引導性任務的基礎上,通過教師講授和實例演示相結合的方法,加深學生對于知識點的理解和認識。例如,在講授“MATLAB程序設計”模塊時,將MATLAB的命令執行方式(交互式命令方式和M文件方式)安排為引導性任務,結合對MATLAB文本編輯器功能的講解,引出“命令文件”和“函數文件”這兩個知識點;再通過教師對這兩種文件的功能、結構和差異性講解,輔以實例演示,使學生真正掌握這兩種文件的編輯和調用方法。
對于實踐型任務,其主體為學生,授課教師扮演輔助引導的角色,任務環境為機房。在開展實踐型任務時,需要貫徹以能力培養為目標、以具體應用為導向的教學方針,結合學生對相關知識點的掌握情況,由易到難、循序漸進地安排任務。基礎性實踐任務可以安排在教學的初期階段,任務內容宜采用簡單的“輸入指令/顯示結果”形式,使學生盡快熟悉MATLAB的基本功能和操作技巧。進階性實踐任務安排在教學的中期和后期階段。在中期階段,可以安排學生對基礎性實踐任務中學到的指令(函數)進行選擇和組合,實現一些具有特定功能的簡單程序;還可以讓學生模仿教師提供的編程實例,并對其進行修改與調試,舉一反三地實現不同的功能。在后期階段,可以將案例或項目作為任務目標,由教師提供部分參考性源代碼,并組織學生分組學習和討論,最后完成整個項目的代碼編寫,培養學生的應用開發與綜合實踐能力。
在實施多層次任務驅動式教學法時,應當遵循以下幾個原則:
一是層次性原則。安排任務時要注意任務的難易程度和先后次序,為實現“階梯式”教學創造條件。例如,先講授MATLAB的系統界面和基本操作,再講授MATLAB支持的數據類型,之后延伸至具體的數據結構。
二是繼承性原則。將各個任務模塊視為一個整體而非孤立的板塊,注重不同任務間的繼承關系,通過前置任務自然過渡和引出后置任務。例如,在講授數據可視化內容時,由基本繪圖函數“plot”引出多子圖繪圖函數“subplot”,再進一步延伸至三維繪圖函數“plot3”。
三是應用性原則。即實踐任務的內容應取材于科研和工作中的具體問題,同時,盡可能地凸顯MATLAB在處理此類問題方面的特色。例如,對于以向量為定義域的函數值求解問題,先讓學生采用普通的循環遍歷方法進行計算,再引導學生將循環結構轉換為向量化表示,并對兩種結構的運行效率進行比較,使學生直觀地認識到MATLAB矩陣運算的優勢。
3. 輔助教學法
為了配合多層次任務驅動式教學法的實施,作者在開展教學實踐的過程中相繼引入了階梯式教學法和分組式教學法等輔助教學法,以期轉變傳統的以教師講授為主、學生學習為輔的“填鴨式”教學過程,強調學生作為學習者和教學主體的核心地位,發揮其主觀能動性,增強其應用實踐能力。
(1)階梯式教學法。階梯式教學法是一種漸進式教學法,其特點在于整個教學過程呈現階梯分布的態勢。即由簡單任務開始,隨著教學過程的深入,任務的內容和難度逐級遞增;同時,在不同的階段設置對應的實踐項目以檢驗該階段的教學成效。該教學法十分適合搭配任務驅動式教學法使用,可以有效緩解學生在學習新知識、新方法和新工具時的畏難情緒,伴隨著階段性教學與實踐任務的逐一完成,學生的學習成就感和應用實踐能力也會逐步得到提升。
(2)分組式教學法。分組式教學法的實施對象為實踐型任務,特別是在教學的后期階段以項目應用開發為任務目標的綜合性實踐任務。通過將學生分為不同的項目組,要求組內成員遵循統一的任務目標開展協同工作,以團隊的形式完成整個項目的代碼設計與編寫工作,且在評定實踐成績時也以項目組為單位。采用分組式教學法有利于培養學生的團隊精神和合作意識,同時也與單位和企業中研發具體項目時所采用的實際工作模式相吻合,能夠從應用層面強化和提升學生的個人能力。
4. 教學實踐探討
在采用模塊化和任務驅動式教學法的MATLAB教學實踐中,對任務進行分解、布置和完成任務的過程是教師與學生之間指導與學習的互動過程。教師通過設置任務目標和講授任務相關的知識點輔助學生構建課程的知識體系,學生通過自主學習和交流協作力求完成教師提出的任務。
對于課程教學的不同階段,教師宜采用與之對應的指導與介入方式。下面將結合作者自身的教學實踐,對如何開展各個階段的教學工作進行簡要探討。
(1)教學前期階段。該階段需以教師講授為主,結合操作示范與實例演示,使學生快速掌握完成任務所需的基本技能和方法。例如通過展示一個完整的函數文件讓學生理解和掌握MATLAB函數的基本結構和語法形式,同時輔以文本編輯器的功能介紹,引導學生自主創建和編輯具備簡單功能的用戶自定義函數。
(2)教學中期階段。進入該階段后,由于學生已經具備了一定的知識儲備和動手能力,此時教師的教學工作重心應由講授逐漸向應用實踐傾斜,可以引導學生對教師提供的實例做進一步的延伸于拓展,而非拘泥于實例內容的復制和重現。在這一階段,教師應當注重培養學生的獨立思考和編程能力,促進學生形成較好的編程習慣。例如,教師先提示學生利用“help”命令查看函數“ind2sub”和“sub2ind”的幫助文檔,并引導學生結合文檔中的范例練習二維數組行列坐標索引和線性索引之間的相互轉換;進而指導學生自己編輯函數文件,實現與系統函數相同的索引轉換功能,達到讓學生“邊學邊做”和“知其然更知其所以然”的目的。
(3)教學后期階段。在教學后期階段,最能夠體現MATLAB課程以應用為導向的教學特色。在開展教學實踐時,教師可將具體項目的設計與開發作為任務目標,采用分組實訓的方式引導學生逐步逼近并最終達成上述目標。通過綜合性實踐訓練,使學生具備從工程整體性的高度審視任務的能力,同時培養學生的工程思維習慣和團隊合作意識,為學生踏入工作崗位后接受實際任務打下堅實的基礎。
5. 課程考核方式
傳統的“筆試+百分制”的考核方式由于更為注重對理論知識的考察,無法完全適用于MATLAB這門偏重應用實踐的課程。因此,在設置課程考核方式時,作者將重心放在對學生實踐能力的考核上,同時引入筆試和課程設計兩種考核方式。
在編排筆試試卷時,將主觀題部分作為試卷的重點,要求學生采用MATLAB的語法規范在卷面上書寫代碼以解決一些具體問題。卷面分比例分配如下:卷面成績(100分)=客觀題成績(40分)+主觀題成績(60分),其中客觀題部分包括填空、選擇、判斷等題型,主觀題部分全部為編程應用題。
在課程設計方面,由教師提供若干個小型項目作為考核內容,以實訓分組為單位讓學生自行選擇項目進行開發設計,教師根據學生提交的項目代碼的完成度和功能性給各個實訓小組進行評分(組員個人評分等同于小組評分),將該分數作為學生的實踐考核成績。
學生課程總成績通過以下方式生成:
個人總成績 = 卷面成績(占比40%)+ 實踐成績(占比40%)+ 平時成績(占比20%)
通過改革課程的考核方式,加大了對于學生實踐能力的考核力度,突出了MATLAB的課程特色,對于增強學生的實際應用能力具有積極的作用和意義。
三、結束語
作者在數輪MATLAB教學實踐中應用了模塊化教學和以任務驅動式教學法為核心的多樣化教學法,取得了較好的成效。學生的反饋信息和綜合評教結果表明:層次性和階段性的任務設置能夠激發學生的學習動機,使學生明確學習目標,確保學生能夠較為全面地掌握該課程的主要知識點;與階段任務相匹配的實訓環節則有利于加深學生對于基礎理論和基本方法的理解與認識,同時提高學生的操作技巧和實際應用能力。
通過開展教學設計和教學研究,在MATLAB課程教學工作中真正實現了“教”、“學”、“做”三要素的一體化,使教學工作達到了新的層次。作者的教學實踐可以為MATLAB課程教學改革提供新的思路,也可以作為非計算機專業程序設計類課程教學的有益借鑒。
參考文獻:
[1]王旭華,孫義友,杭宇,等.MATLAB在測量實習教學中的應用[J].測繪通報,2009(12):76-78.
[2]劉光普,高玉春.MATLAB在通信原理教學中的應用[J].數據采集與處理,2012(s1):39-42.
[3]童孝忠,王濤,柳建新.MATLAB軟件包在地球物理數值計算與輔助教學中的應用[J].物探化探計算技術,2013,35(5):512-518.
[4]薛定宇,潘峰,陳大力.基于MATLAB/Simulink的系統仿真技術系列教材建設與教學改革[J].實驗室研究與探索,2013(11).
[5]何德峰,俞立,徐建明.基于MATLAB的現代控制理論實驗教學實踐[J].實驗技術與管理,2016,33(3):123-126.
[6]畢萍,劉毓.“MATLAB工程應用基礎”課程新模式的教學改革[J].實驗室研究與探索,2012,31(12):145-147.
[7]王偉征.MATLAB作為公共選修課的教學實施方案探究[J].計算機時代,2017(1):73-75.
[8]王保麗,印興耀,張廣智.“理論-實驗-應用”一體化教學的探索與實踐[J].實驗室研究與探索,2015,34(11):152-155.
[9]賈愛賓.分層模塊化教學在《復變函數與積分變換》課程中的實踐[J].中國成人教育,2015(16):180-181.
[10]張靜亞.基于項目驅動的MATLAB教學方法研究[J].科技資訊, 2014(36):147-149.