APP下载

以应用为导向的本科MATLAB教学实践与探讨

2018-09-10郑小雪林威

高教学刊 2018年7期
关键词:模块化教学教学改革

郑小雪 林威

摘 要:以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.

猜你喜欢

模块化教学教学改革
模块化教学在钳工实习中的运用与探索
关于机械基础课程模块化教学探索
采购管理课程教学模式研究
《商务策划》课程实践教学改革研究
浅谈中职数控技术应用专业模块化教学
应用型人才培养背景下模块化教学研究与实践
中职学校“生本课堂”的调查研究与实践
高校三维动画课程教学方法研究
基于人才培养的技工学校德育实效性研究
现代信息技术在高职数学教学改革中的应用研究