Matlab项目教学中学生独立编程能力的提高
全星日,许一虎,朱东弼
(延边大学,吉林延吉133002)
摘要:Matlab是一门应用性很强的实践性课程,开展项目教学法是比较合理的Matlab教学策略。Matlab项目教学以快速入门、项目贯穿教学全过程的方式展开,在解决项目任务的过程中理解、掌握和综合应用基本指令,将验证性、综合性和设计性融入每个项目任务当中进行深度学习。在Matlab项目教学实施过程中,从实战的角度出发,引导学生对程序进行调试,对实验数据进行分析、讨论和理论验证,以获得项目开发实践经验,并逐步提高学生独立编程能力。
关键词:教学改革;教学方法;项目教学法;程序设计;Matlab
中图分类号:G642文献标识码:A
文章编号:1009-3044(2020)34-0111-03
开放科学(资源服务)标识码(OSID):ImprovementofIndependent ProgrammingSkillinMatlabCourse based on Project-basedLearning
QUAN Xing-ri,XU Yi-hu,ZHU Dong-bi
(College of Engineering,Yanbian University,Yanji133002,China)
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.Verifica⁃tion,comprehensiveness and design are integrated into each project task for deep learning.In the process of Matlab teaching imple⁃mentation,from the perspective of actual combat,students are guided to debug the program,analyze,discuss and verify the experi⁃mental 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是强有力的数学分析工具,在工学中有着非常广泛的应用,如数值计算、算法仿真、数据分析等。Matlab课程后续的信号与系统、自动控制原理、通信原理等专业课中都可以用它进行仿真,加深对专业课基本概念的理解。而且Matlab与其他编程语言有很多相通的地方,学好Matlab可以提高学生的编程技能,加深对“程序”这一概念的理解。Matlab是一门应用性很强的实践性课程,以理论讲授为主、做几个应用性实验的传统教学模式使得学生能够理解基本语法和简单程序,但是当学生需要独立完成项目时往往感到束手无策、无从下手。不能为学而学,从实战的角度提高学生独立编程能力很有必要。
2Matlab教学中的若干问题思考
2.1Matlab是一门应用性很强的实践性课程
传统的Matlab教学多采用按照教科书内容按部就班、循序渐进的策略,主要教学内容是Matlab的语法和指令的使用方法。这种照本宣科式教学中,学生处于被动的接收地位,不利于激发学生的主观能动性和创新能力的培养。为了提高教学的趣味性并调动学生的学习积极性,张静亚应用项目教学法提高学习目的性,通过做实际项目,提高学生分析问题和解决问题的能力,采用了图像处理项目[1];易昆南等在数学专业Matlab 实验教学中结合音乐中的数学原理,鼓励学生求异思维和发散思维[2];魏为民等提出了快速入门的策略,仅用10学时讲授基本知识,穿插6学时实验完成Matlab入门,采用实例教学
法,列举了π近似值计算项目[3];毕美华等在Matlab理论教学中针对语法教学的枯燥性,引入了趣味性实例,提高了学生的学习兴趣[4];林海涛采用任务驱动教学法,帮助学生主动学习,在探索中获得成就感[5]。
Matlab教学中引入应用性项目的研究很多,但是对学生实践能力提高的相关研究比较少。有些学校的教学组织形式采用先讲理论课、后上机的两步走方案,这会降低学习效能,而且理论教学中学生处于被动地位,不利于举一反三和发散思维;一些学校做Matlab实验时开展验证性+综合性+设计性实验
收稿日期:2020-07-07
基金项目:延边大学教育教学改革研究课题(延大教发(2018)42号)
作者简介:全星日(1975—),男(朝鲜族),吉林省延吉市人,讲师,博士,主要研究方向为语音信号处理;许一虎(1985—),男(朝鲜族),吉林省延吉市人,讲师,博士;朱东弼(1967—),男(朝鲜族),吉林省延吉市人,教授,博士。
Computer Knowledge and Technology电脑知识与技术第16卷第34期(2020年12月)
项目[6],是否有更合理的方案进一步改进和深化这种阶梯式递进方案使其更适合Matlab教学?很多学生在专业课中用到Matlab时往往感到迷茫,不知道从何处下手,程序出现错误的时候也无法解决,也
不知道怎样分析和讨论实验数据,这些都是学生实践经验不足、独立编程能力不够的表现。
2.2结合深入的专业知识未必是好的教学策略
有些学校做Matlab实验时,实验内容与专业课紧密结合,做与专业知识有关的实验。对理论知识理解透彻的同学,这个教学策略或许是有帮助的,但是对专业知识掌握一般的学生,这一教学策略有可能带来多个学习目标的问题——Matlab编程技能要学、专业知识也要掌握。这部分学生跟着老师做了之后也没领悟到做了什么、为什么这么做,更无法模仿和应用这些做法解决其他类似问题。很多学校开设Matlab课程是安排在低年级,进入专业课之前或与专业基础课程同时进行,这就更不能结合深入的专业知识了。Matlab课程与专业课程紧密相连没有必要、也做不到,学生的理论底子还没上升到那个高度。Matlab教学中可以触碰简单的专业知识,但是提前量不要太大,不要涉及深入的理论,更不要替专业课做实验。信号与系统、通信原理、自动控制原理等很多专业课程中经常使用Matlab做仿真实验,这些实验交给专业课老师指导,对理论知识理解透彻的前提下,Matlab编程才有意义。
本文认为Matlab尽量在低年级开设,Matlab在专业课程中的定位应该是单纯的数学分析工具、为将来学习专业课提供工具上的支撑。学生的Matlab学习策略应该是在Matlab课程中入门之后,在后续的专业课中通过对专业理论知识的仿真,理解专业课的基本概念,同时深化编程技能,仿真过程中会用到新的指令,在专业课中现学现用。
2.3项目教学法有助于提高学生独立编程能力
项目教学法是以建构主义学习理论为基础,通过完成项目任务,在解决问题的过程中进行深度学习的教学策略。它能提高课程的趣味性,激发学生的求知欲,让学生能够自主参与进来,主动投身到项目任务当中,进行探索性、研究性学习。而且通过做项目,开阔学生视野,激发学生想象力,提高学生的自学能力、观察能力、分析和解决问题的能力、信息搜集能力等等[7-8]。在课程中应用项目教学法时,项目的选定很重要,项目要有趣味性、应用性和挑战性,且难易度适中;在项目教学实施过程中教师的指导也非常关键,老师要善于引导学生进行独立思考,让学生积极主动参与进来,要让学生领会编程思路、掌握调试技能,并引导学生对实验数据进行分析和讨论、对程序进行理论验证。从项目开发实战中获取编程经验、提高独立编程能力,这是项目教学法相对于实例教学法和任务教学法所无法比拟的优势。
3基于项目教学法的学生独立编程能力提高
3.1基于项目教学法的Matlab教学内容改革
我校Matlab课程安排在大二第一学期,总共讲授32学时,学生已学习的内容包括高等数学、线性代数、C语言等学科基础课程,并与电路等专业基础课同期授课。授课地点安排为机房,学生学习指令之后直接上机做实验,以便快速理解和掌握基本指令的使用方法,做项目时学生在课堂内完善和改进
教师提供的样例程序,在教师的提示下进行程序调试,对实验数据进行分析和讨论,引导学生进行深度学习。
为没有专业知识背景的低年级学生难易度适中且具有一定实际意义的应用性项目并不容易。做书上的例题和习题不能称之为项目教学;安排难度稍高的任务、鼓励和帮助学生独立完成任务的任务驱动教学法[5],在提高学生自习能力和编程能力上有一定意义,但是缺少应用性和趣味性,对学生的吸引力较小,不能引发学生深入而发散的思考,与项目教学有区别。一些学校开设验证性+综合性+设计性Matlab实验[6],这也不是真正意义上的项目教学。本文选定的项目以高中三角函数为起点,逐步拔高知识层次,快速入门之后即刻开展项目做深度学习。项目贯穿教学全过程,在解决项目任务的过程中理解、掌握和综合应用Matlab基本指令,用项目任务刺激学生求知欲,使学生思维活跃起来,触类旁通。
本文将Matlab所囊括的基本知识点分为三大入门模块,教学安排如表1所示,每一个模块讲授完之后,综合这些知识点进行项目实践。实践项目时先提供样例程序供学生模仿,通过样例程序的引导使学生迅速进入项目的问题情境。在此基础上扩展项目任务,指导学生对程序进行改进,将模仿(验证)、综合和设计三部曲融合到每个项目中。开展项目教学过程中不可避免地碰到没学过的指令和显浅的专业知识,教学中广泛采用现学现用策略,如果涉及较深的专业知识做屏蔽处理,由老师编写子程序供学生调用。
表1Matlab课程教学进度安排
入门1(4学时)
项目1(6学时)
复习(2学时)
入门2(6学时)
项目2(4学时)
复习(2学时)
项目3(4学时)
入门3(4学时)
数值计算、矩阵运算、逻辑运算
电子音乐
参考书例题和习题
程序结构、子程序及二维图形
计算π近似值五种算法性能比较
参考书例题和习题
DTMF信号的编码和解码
字符串运算和符号运算应用实例
3.2程序调试是必须掌握的技能matlab学好了有什么用
再熟练的编程人员也不可能一次性编写出没有语法错误、没有逻辑错误的完整的程序。一个对策是每写完一小段程序,即刻运行,确认无误之后再进行下一段程序编写;另一个对策是进行单步调试,单步调试在编程实战中也是经常使用的操作,但是学生喜欢痛快的,程序编写完之后按F5全速运行得到最终运行结果。教学过程中要求学生熟练运用这两种编程策略,同时密切关注工作区和命令窗的变化,观察程序计算结果是否与编程意图一模一样、有没有出现没考虑到的意外情况。
学生编写的程序中经常出现的语法错误有中文标点符号、变量名大小写错误、变量没有定义而引用、向量或矩阵的索引号超出范围等。教师给样例程序的时候故意设置这些陷阱,让学生仔细阅读命令窗的错误提示,自行改正语法错误。经常出现的错误还有逻辑错误,指导学生在单步调试过程中一方面察看程序运行步骤,另一方面仅仅盯着工作区中变量的数值变化,认真进行数据分析和确认。学生通过这些训练,逐步增长调试经验,提高程序调试技能。
3.3注重实验数据的分析、讨论和理论验证
用理论验证程序是非常重要的,程序是将数学语言翻译为计算机语言,程序只要没有语法错误,肯定能得到一个计算结
Computer Knowledge and Technology 电脑知识与技术
第16卷第34期(2020年12月)
果,至于这个结果对不对、有没有道理,只能由人来判断,用理论来验证。
入门1中学生学习Matlab 基本运算和简单的plot 指令之后,让学生分析函数:
y =lg ()
x 2-10x +25(1)
的特性。学生独立编写程序,画出函数曲线如图2,得出该函数有对称性、存在最小值的结论。
x =0:0.01:10;
y =log10(x.^2-10*x+25);plot(x,y);
2
该函数以直线为对称轴左右对称,从左、从右趋于
5时y 均趋于-∞,该函数不应该出现最小值,理论分析和Mat⁃
lab 画图有矛盾。教师给出结论:“Matlab 欺骗了我们”。教师引导学生横向放大x =5的周围,曲线如图3所示,学生才发现不
是Matlab 说谎了,是自己做错了,
x =5的位置函数曲线是间断的,Matlab 只计算了x =4.99和x =5.01两个点。进一步分
析工作区中变量y 的数值,x ()501=5,对应的y ()501=
-Inf ,图2看着似乎有最小值,其实它不是最小值,而是间断
点。学生深切体会理论验证程序的必要性。
4.9
4.92
4.94
4.96
4.98
5
5.02
5.04
5.06
5.08
5.1
图2局部放大的y =lg ()x 2-10x +25函数曲线
学生不知道哪些东西需要做理论分析和讨论,也不知道怎样进行分析和讨论,这就需要老师循循善诱。比如项目1中用plot 指令画音乐信号波形之后弹出来的图形窗口一片蓝,什么信息都得不到,教学生图形窗口的操作方法:zoom ,pan ,cur⁃sor ,将音乐中do 音的信号波形横向放大之后才看到正弦波,引导学生测量正弦波周期为0.0038s ,计算倒数得到频率262Hz ,确认生成信号与理论相符。讲到这里,有些学生自行摸索ro⁃tate ,brush ,dock figure 等更多功能。项目3的频域分析中,用cursor 检验两个正弦分量的频率数值,确认DTMF 编码子程序的正确性,再进行下一步DTMF 解码子程序。学生虽然没有接触过频域分析的概念,但是从高中三角函数引入频率的概念还是很容易的,至于傅里叶变换子程序由教师编写供学生使用,学生只要理解频率的概念、会调用子程序即可进行独立编程,完成项目任务。
0.07
0.075
0.08
0.085
time(sec)
a m p l i t u d e
(a)音乐中do 音信号的分析
00.005
0.01
0.015
01000200030004000
m a g n i t u d e
教师时时提醒学生,没有经过分析、讨论和理论验证的程序是半成品,是不可信的,程序一定要通过理论验证环节。这一点也是本文反对在Matlab 课程中做一些涉及较深专业知识的实验项目的原因,没有深厚的专业知识底蕴,即使正确使用Matlab 指令编写出程序也没有任何意义,因为编写的程序无从判断其正确性,也无法对计算结果进行分析和讨论并给出合理的理论解释。专业课实验交给专业课老师指导,对理论知识理解透彻的前提下,Matlab 编程才有意义。
此外,相关资料搜集技能、报告书写作技能、发表技能、阅读论文等技能都是需要的。Matlab 教学中,每次做完一个项目都要求学生写报告书,报告书采用论文结构,给学生做简单的论文指导。因为还没有学习专业课,让学生读论文难度比较高,一些难度低的学术文章也不容易,可以考虑在网上搜索几篇写得好的与项目相关的文章推荐给学生读。学生在解决项目任务的过程中碰到了适当的困难和挫折,克服困难,积极探索,最终品尝到成功的喜悦,继而增强了求知欲,开拓了视野,提高了分析问题和解决问题的能力。
4结论
高等教育的教学理念正在从“期待学生知道的量”到“期待学生用其所学”转变,“高等教育不是给学生解决问题,而是让学生想更多的问题”。本着这一教学理念,本文以快速入门、项目贯穿教学全过程的方式展开Matlab 项目教学,每一个项目均融入验证性、综合性、设计性,让学生想象力飞起来,让学生主
动投身到项目任务的探索和研究中,达到深度学习的目的。在项目教学实施过程中注重培养学生帮助文档阅读技能、程序调试技能、计算结果的分析和讨论技能以及用理论验证程序的良好思维习惯,以实现学生能够达到初步的独立编程能力这一教学目标。
(下转第130页)
Computer Knowledge and Technology电脑知识与技术第16卷第34期(2020年12月)
以此提升其在线学习社会临场感水平。
参考文献:
[1]刘英.远程学习者孤独感克服的方法和策略——台湾空大的
经验和思考[J].成人教育,2011,31(1):87-89.
[2]胡勇.在线学习过程中的社会临场感与不同网络学习效果之
间的关系初探[J].电化教育研究,2013,34(2):47-51. [3]Kreijns,K.,Kirschner,P.A.,Marjan Vermeulen[J].So-cial As⁃pects of CSCL Environments:A Research Framework.Educa⁃tional Psychologist,2013,48(4):229-242.
[4]Richardson,J.C.&Swan,K.Examining Social Presence in Online Courses in relation to Students’Perceived Learning and Satisfaction[J].Journal Of Asynchronous Learning Net⁃
works,2003,7(1):68-88.
[5]Garrison D.R.Anderson,T,Archer,W.Critical in-quiry in a Text-based Environment:Computer Conferencing. [6]张婧鑫,姜强,赵蔚.在线学习社会临场感影响因素及学业预
警研究——基于CoI理论视角[J].现代远距离教育,2019(4): 38-47.
[7]何苗,程坤,郭允建.虚拟学习社区中社会临场感研究初探[J].
中国电化教育,2010(1):54-58.
[8]焦建利,周晓清,陈泽璇.疫情防控背景下“停课不停学”在线
教学案例研究[J/OL].中国电化教育,2020(3):106-113[2020-03-24].knski/kcms/detail/11.3792. G4.20200310.1628.030.html.
【通联编辑:王力】
(上接第110页)
定程度上可反映学生学习效果。理论实践一体化教学模式下老师应提高实践活动所占成绩百分比的比重,留意学生在实践活动中的表现和实践任务完成情况,并将这两项指标作为学生实践平时成绩。学生课程最终成绩分为平时成绩和期末考试成绩两部分,校方可提高平时成绩在最终成绩中所占百分比的比重,将平时成绩所占百分比提高至百分之五十,以此来提高学生学习积极性。在评价学生表现时,老师可以先让学生进行自我评价,再让学生进行小组内部评价,最后由学生进行评价,让学生从全方位、多角度了解自己在实践活动中的表现,以便于改进自身实践行为、提高实践水平和能力。评价是相互的,学生也可以对老师的教学行为进行评价,提出自己对教学活动的合理诉求,以便于老师不断改进教学活动、改进自身教学模式,从而推动理论实践一体化教学模式更好地发展。
5结束语
通过以上内容分析可以得出,推进理论实践一体化教学的应用是高职院校教育的一场革新。对于计算机软件技术专业学生而言,需具备灵活运用理论知识和敢于、善于实践的能力,理论实践一体化是符合专业要求的一种教育方式。推进理论实践一体化教学的应用并非是老师一人的任务,需要校方和学生的共同配合,校方可为教学提供基础设施与条件,学生可积极主动配合老师工作,从而推动高职教育向更好的方向发展。参考文献:
[1]段贵珠,刘沫行.“理论实践一体化”教学模式的探索与创新[J].
河北广播电视大学学报,2009,14(4):41-43.
[2]焦健,卫耀军.高职高专计算机专业课程一体化教学模式的探
索[J].中国电力教育,2009(4):68-70.
[3]吕聪敏,赵悦品.高职院校计算机基础课“教学做一体化”教学
模式探析[J].中小企业管理与科技(上旬刊),2008(11):174. [4]胡大威.理论实践一体化教学模式的探索——高职计算机软
件技术专业教学改革的实践[J].辽宁高职学报,2007(10):41-42,52.
【通联编辑:王力】
(上接第113页)
参考文献:
[1]张静亚.基于项目驱动的Matlab教学方法研究[J]科技资讯, 2014(36):147-149.
[2]易昆南,李慧,赵澍源.让枯燥无味的数学变得有趣、有味、
有惑——Matlab中的音乐合成[J].实验室研究与探索,2014, 33(6):114-117.
[3]魏为民,屈婉莹,赵琰.Matlab程序设计语言快速教学实践[J].计算机教育,2015(24):102-106.
[4]毕美华,杨国伟,周雪芳,曾然,胡淼,李齐良.Matlab寓教于
乐教学模式的探讨[J].高教学刊,2017(11):86–87. [5]林海涛,任务驱动教学法在《Matlab程序设计语言》教学中的
实践[J].开封教育学院学报,2014,34(1):80–81. [6]张玉叶.Matlab语言课程教学中若干问题探讨[J].实验室研究
与探索,2018,37(3):176–179
[7]姜静思.浅析项目式教学[J].电脑知识与技术,2014,10(5): 1006-1007.
[8]曹倩雯,吕光金.游戏项目在“VB程序设计”课程中的应用[J].
电脑知识与技术,2015,11(21):85-87.
【通联编辑:王力】
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论