1. 引言
随着科学技术的发展和进步,社会对学生的应用性、实践与创新能力提出了更高的要求,这对那些教学内容相对较为稳定、解题方法比较单一的课程教学提出了挑战。如何采用合适的教学方法和创新的教学手段来激发学生兴趣,提高学生的应用实践能力,培养他们的创新意识,已成为一项重要的教学方法研究课题。
科学技术的突飞猛进,人工智能的不断发展,无论是工农业生产还是国防尖端技术,数学建模均起到重要作用。数学建模是把自然现象转化为数学问题,并应用数学方法求解,最终对现实问题做出解释的过程,其关键是如何把一个现实问题经过观察、抽象、假设、归纳、演绎转化为一个数学问题。
微分方程建模是利用微分方程来模拟某些自然现象随时间推移而连续发生的变化的本质。这中间通常涉及对问题的分析假设到微分方程模型的建立,然后求解,再回归到实际问题,把求得的结果与实际情况对比,以修正或改善模型特性,使之更准确地描述实际问题,最终达到推广应用的目的。例如放射性物质衰变规律、牛顿第二定律、机电产品的设计、建筑工程项目的设计、气象预报和新型尖端武器的研制、火箭的发射等,都有大量复杂的微分问题亟待解决。它们的复杂程度已达到远非人工手算所能解决的地步,现在许多复杂的微分数值计算问题都需要计算机进行电算,也就是说,要编制出计算机电算程序,进行仿真模拟验证其有效性和直观性。文献 [1] 提出从信息技术学科发展的角度来说,信息技术的核心思想是利用程序设计语言来设计应用程序,而非单纯的软件操作技能训练,需要进一步激发学生对程序设计语言理论知识的理解和学习兴趣。文献 [2] [3] 提出一种新的分层实验教学方法,通过实践证明新的教学法,在计算机编程语言实验课程中,能够兼顾学生个体间存在的差异,充分调动学生学习积极主动性,提高学生实践动手的能力。文献 [4] [5] [6] [7] 基于Matlab相关教学案例,讨论Matlab在教学上的运用影响,并通过教学实践证明Matlab的变成教学能提高教学成效。
微分方程课程主要是面向数学与应用数学、物理、化学、计算机科学与技术等理工科专业开设,是实践性很强的一门课程,尤其是对数学和物理专业,要求学生既要学好理论知识,又要掌握实际操作技能。然而,传统的课堂教学多采用讲授法,这种教学方法以教师为中心,忽视学生的认知主体作用,通常是将教学内容中有关理论知识一一作细致讲解,课后做习题的方式,这种方式对理论教学是有效的,而对学生的应用实践能力培养是有欠缺的,要培养满足社会需求的高素质应用型人才,不仅要有一定的理论知识,更重要是要具有很强的应用实践能力。基于此目的,笔者将编程实验教学法引入课程教学,实现理论与实践的结合,激发学生学习这门课的兴趣,促进理工科专业的学生实践能力与创新意识的提高,以满足社会和就业的需求。
2. 编程实验教学法的基本特征及教学目标
编程实验教学法是一种建立在建构主义学习理论基础上的教学方法,建构主义者提出:“学习不是被动接受已定知识,而是学习者主动在内部建构知识意义的过程。学生是积极的学习者,他们的学习是受社会文化、与教师和同伴的相互作用及自己的原有经验等影响的主动学习,他们是自己知识的建构者。”因此,教学不应是“由外而内”的注入,而应是“由内而外”的主动吸收。改变学生与教师的立场,将以往以教师传授为主的单一的传统教学理念转为以解决问题、完成任务为主的互动的教学理念,将再现式教学转化为探究式学习,充分发挥学生的学习积极性,使学生处于积极的思维和学习状态。这正是编程实验教学法“以任务为主线,教师为主导、学生为主体”基本特征。将编程实验教学法引入常微分方程课程教学,其目的就是使每一位学生依据常微分方程的基本理论,结合自己特有的计算机知识和经验(包括一些专业软件的学习),构建新的知识架构,提高分析问题、解决问题的实践能力。
3. 编程实验教学法任务情境的创设及应用策略
3.1. 积极引导学生加强常微分方程基本理论的学习,为编程实验教学提供条件
编程实验教学法的应用是建立在一定专业理论知识之上的,即常微分方程基本理论知识,学生没有一定的专业知识,可能会对下达的编程实验任务不理解或理解有偏差,为顺利完成编程实验任务产生不必要的障碍或实验结果不理想。有些编程实验任务覆盖的知识点还是比较广而深的,需要扎实的常微分方程理论功底。因此,需积极引导学生加强常微分方程基本理论的学习,为编程实验教学法的顺利实施提供条件。
3.2. 积极下达适度的编程实验任务,激发学生的编程兴趣
编程实验需要具有一定的专业理论知识,因此任务的下达难度需适中,需符合学生的实际,循序渐进,使学生更多地体验到成就感和获得感,体验到编程实验快捷和便利。比如求解一阶线性微分方程,需要多步骤的求解,而使用MATLAB软件编程求解,可以很快得到结果,在不强调求解步骤的情况下,可以充分体现计算机软件解题的快捷和便利性,从而可以在很大程度上激发学生编程实验的兴趣。
3.3. 积极引导学生拓宽自身知识面,充分体现编程实验的价值
常微分方程往往具有丰富的实际应用背景,在很多学科领域都有重要应用,比如:自动控制、物理、航空、气象、医学、化学等领域都有所应用,在这些丰富的应用背景下,开展编程实验教学显得更有意义,通过编程实验模拟分析、解决实际问题,可以节约实验成本,通过学生宽广的视野,将编程实验应用到更多领域,在激发学生的内生动力的同时,也充分体现了编程实验的价值。
3.4. 积极引导学生加强相关专业软件的学习,为编程实验教学助力
常微分方程丰富的应用背景,决定编程实验教学预达到较好的效果,需要熟悉和应用多种、各类计算机软件,比如:MTALAB、MATHEMATICA、MAPLE等软件。以上软件各具特点、各有优势,综合应用到编程实验教学,无疑是锦上添花,为编程实验教学助力。在日常的教学中要有意识地引入相关软件知识的学习,并积极引导学生加强相关专业软件的学习。
3.5. 积极开展小组协作式教学,促进编程实验教学效果的达成
编程实验教学需要一定的专业知识和数学软件应用能力,这对编程实验教学的实施产生一定的影响。积极开展小组协作式教学,将有效缓解这一困境,专业知识强的学生和专业知识弱的学生形成互补,数学软件应用能力强的学生和应用能力弱的同学互补,小组成员之间相互帮助、带动,相辅相成,将有效促进编程实验教学效果的达成。
3.6. 积极开展编程实验教学任务编制研究,提高编程实验任务的知识探究性
编程实验教学法的有效实施,关键在于实验教学任务下达的质量和水平,实验任务的编制既要能巩固专业基本知识,又要能探索新知;既要能确保学生能顺利完成,又要能激发学生编程实验的热情;既要能解决单一专业知识,又要能拓展学生的知识面。可以说,要兼顾所有还是有难度的,因此,需要积极开展编程实验教学任务编制研究。
3.7. 积极发挥编程实验教学效能,培养学生的创新能力
将编程实验教学法引入常微分方程课程教学,两者有着很好的契合点,常微分方程有着很好的应用背景,编程实验教学法有着得天独厚的理论与实践相结合的教学优势,为培养学生的创新能力提供条件。积极发挥编程实验教学效能,在编程实验任务编制中,注意引导学生从各个方面解决问题,用多种方法解决同一个问题,防止思维的绝对化和僵化,在大学生的创新能力培养上持续用力。
4. 应用案例
在常微分方程教材中引入了洛伦茨(Lorenz)方程,这是一个有关天气预报的模型,具有很好的应用背景,贴近生活,具有很强的探究性,将此作为编程实验教学任务下达给学生,学生会很感兴趣,积极自主查找相关资料,为达成编程实验教学的效果,教师适当做一些引导并将学生分成四个小组,要求他们在完成编程实验教学任务的同时,仔细观察解轨线的变化规律,就会有学生发现混沌现象,通常我们会选择MTALAB软件来模拟。
洛伦茨(Lorenz)方程及MATLAB软件程序如下:
方程:
程序:
function dx=lorenz(t, x)
dx=zeros(3.1);
dx(1)=10*(x(2)-x(1));
dx(2)=28*x(1)-x(2)-x(1)*x(3);
dx(3)=x(1)*x(2)-8*x(3)/3;
程序运行结果如图1。

Figure 1. Lorenz system phase diagram
图1. Lorenz系统相图
5. 小结
编程实验教学法是建立在建构主义教学理论基础上的教学方法,提倡以学生为中心的学习,强调对任务情境的创设和小组协作;是以任务为学习活动的中心,学生通过对任务进行分析、讨论和完成实现意义的建构。本文依据编程实验教学法“以任务为主线,教师为主导、学生为主体”的基本特征,结合常微分方程课程教学特点,提出7个方面的编程实验教学法任务情境的创设及应用策略,为编程实验教学法的顺利实施和达到预期效果提供参考路径,希望通过这项教学改革的实施能够激发学生的学习该门课程的兴趣,加深对知识的理解,以此同时,学生的创新能力和实践能力也得到相应的提高和培养。本课题研究成果在理论和实践上均有一定的现实意义,对推广和实施实践教学具有一定的参考价值,相信会运用到各个领域。
基金项目
新疆维吾尔自治区教育厅综合改革项目(2018XJJG02),伊犁师范学院校级2016年一般教改项目(JG20161677)。