摘要: 大学数值计算类课程具有注重方法应用性、强调计算机实践的特点。然而,当前此类课程教学中普遍存在着班级规模大、实践学时缺乏以及实践质量难于控制等问题。本文通过设计层次化实践内容、开发数值计算实践软件、科学化考核方式等手段,引导大学生自主进行高层次的实践训练,有效解决了实践教学中存在的共性问题,形成了集“内容–考核”为一体的数值计算类课程实践教学模式。实践效果表明了该模式的实用性和先进性。
Abstract: The courses with the characteristics of numerical calculation pay more attention to the application of numerical approaches and emphasize to practice on computers. However, current teaching of such courses generally faces issues such as large class sizes, less practical teaching hours, and difficulties to measure teaching quality. This paper addresses the common problems in practical teaching by designing hierarchical practical content, developing numerical computation practice software, and scientific assessment methods. It guides college students to independently engage in advanced practical training, effectively resolving the common issues in practical teaching and forming a “content-quality” integrated practical teaching model for numerical computation courses. The reality shows the new teaching mode is more efficient and innovative.
1. 引言
随着计算机技术和计算数学学科的不断发展,科学计算已经成为和理论研究、实验论证并列的科学研究手段。在高等教育教学中对大学生进行科学计算能力培养,对于提升大学生解决问题的能力,满足社会对科学计算人才需求,加快科技进步和创新等具有重要意义。目前,我国多数高等院校都为理工科大学生开设多门与科学计算能力培养密切相关的数值计算类课程,如《数值分析》《最优化方法》和《偏微分方程数值解法》等。突出工程应用思想、注重方法的实用性以及强调计算机实践是此类课程的共同特点[1]。众多科学计算教育工作者已经从知识学习、能力提升以及素养养成等角度出发,围绕数值计算类课程实践教学实施了多项教学改革探索与实践。其中,于陆洋等[2]利用Matlab GUI编写了可视化界面,实现了人机交互,并通过实施课堂计算机模拟教学实践等方式,取得了更好的教学效果。林玉蕊等[3]从理论、实践教学的各个环节着手,运用Matlab编程实现算法,并将算法实例嵌入“数值分析”课程教学全过程,实现了应用案例教学与算法细节直观演示的课堂双融入。西安建筑科技大学[4]更是将Matlab语言和“数值计算方法”课程并课,实现了计算类算法理论和编程实践的紧密结合,使得编程语言学习有依托,理论实践有工具。张天云等[5]则从“数值分析”课程实验内容入手进行教学设计,并分享了部分基础性实验和综合性实验案例。可以看出,数值计算类课程的实践教学改革大多聚焦于基于Matlab软件的编程实践以及课堂演示。从本质上看,这些应用实践展示仍属传统的课堂授课范畴,侧重于教师的“教”,但对于学生的“学”和“做”等并没有给出有效的解决方案,对于基于实践教学效果的“评”更是未有提及。
目前,相对于知识传授本身,高等教育教学的目标更聚焦于大学生的能力培养与专业素养养成,大学数学类课程的教学理念正从“以教师为中心”向“以学生为中心”转变,教学方法正逐步淘汰单一的“知识灌输式”教学,更为强调“问题驱动式”“探究式”“研究式”等教学模式的合理应用,实践教学的重要性得到广泛认可。同时,在高等教育突出大学生自主学习的背景下,高等院校普遍对专业课程的课堂教学总学时进行了一定程度的限制,包括数值计算类课程在内的课程课堂学时被动压缩。例如,西北工业大学面向工科大学生开设的“数值计算方法”课程授课内容包括非线性方程求根、线性方程组求解等八个章节,但课堂授课学时只有32学时,且没有配备专门的实践学时。同时,该课程年修读大学生超过2000名,班级规模150人左右,课程实践教学面临诸多困难。在课程教学目标不变甚至在能力培养要求有所提升的情况下,传统的教学方法、实践模式等已经不能满足新时代大学生能力培养的需求。有鉴于此,我校科学计算团队积极开展实践教学研究,探索出能够在学生规模大、没有统一实践机时情况下,有效开展课程实践教学、量化实践效果的实践教学模式。
2. 系统化、层次化设计课程实践内容
数值计算类课程主要讲授通过计算机求解工程实际中抽象出的数学模型的算法。算法截断误差及计算机舍入误差的存在导致求解结果皆为近似解,且不同算法在求解同一问题时精度和效率会呈现较大差异,大学生必须动手实践才能对这些内容有深刻认识,并对算法思想、应用效果等有更为深入地理解。我校科学计算团队根据实际情况和学生需求,对课程实践内容进行系统设计,将实践内容分为基础性实验、综合性实践和创新性实践等三个层次。
团队为课程实践专门编写了《计算实习》教材。该教材以提高大学生数学素养、培养大学生科学计算的实际操作能力为主要目的,内容主要涉及经典的数值类算法,如数值逼近、数值积分与数值微分、常微分方程(组)初边值问题的数值解法、代数特征值求解、偏微分方程的有限差分法、偏微分方程的有限元法,最优化方法等,基本涵盖了我校开设的数值计算类课程教学内容。教材除了算法的简单介绍、编程实现要点提示以及实验实践题目等内容外,还专门介绍了课程对实践环节的总体要求、计算实践的基本步骤以及计算实践报告规范等。这是课程实践的第一层次任务,实践内容属于验证性实验及基础计算性实践。
案例教学已经证明是一种优秀的、能够引起学生兴趣并驱动其进一步研究实践的教学模式。受益于我校数学建模活动的蓬勃发展,几乎所有数值计算类课程主讲教师都有指导大学生参加全国或国际数学建模比赛的经验,而竞赛中出现的一些题目,如2003年SARS传播问题、2007年中国人口增长问题等与微分方程组求解问题密切相关,2015年太阳影子定位问题与最优化方法相关,我校数模竞赛中的电阻率数据问题与插值问题密切相关等等。另外水塔流量估计、堰塞湖抢险中的水文数值计算、直升机机翼形状等与生活实际相关联案例的引入,有利于提高大学生应用数学的意识、科学计算能力和使用数学知识解决实际问题的能力。这是课程实践的第二层次任务,鼓励学生尝试综合性、设计性应用实践。
考虑到学生的个性差异和需求,体现“给通才制定规则,给天才留出空间”的教育理念,团队为部分偏才、怪才选定了具有探究、研究特色的实习题目,例如在求解线性方程组时,设计“Hilbert方程组求解”题目,鼓励部分学生探究合适的病态方程组求解方法,在对微积分数值求解时,引入分数阶导数概念,引导学生利用整数阶导数计算思想对其进行数值求解等等,学生也可以根据实际情况,结合本科生导师制,自主选择与课程相关的研究项目。在整个实践过程中,老师的作用只在于组织引导、质疑解答,让学生有自主学习时间和空间,着重培养学生发现问题的能力和创新精神。这是课程实践的第三层次任务,引导学生基于问题、基于项目进行探究式、研究式创新实践。
3. 建设实践教学平台,科学化实践考核模式
数值计算类课程实践对于提高大学生科学计算能力、培养创新型人才有至关重要的作用,实践质量客观影响学生综合素质的提高,这就要求必须对实践质量进行监控。实践考核是评估实践质量的重要环节,合理、科学的实践考核模式对引导学生更好掌握课程知识、强化计算思维,提高知识应用水平有重要作用。针对我校实际情况和实践内容的层次性,在“厚基础、强实践、促应用”的指导原则下,团队为不同层次的课程实践内容设定不同的分值,引导学生不满足于完成基础性实践,鼓励大部分同学在完成一定量基础性实践的前提下,合作挑战并完成更为复杂的综合实践或创新实践内容。实践成果作为课程考核的重要组成部分,占课程总成绩的20%。
基础性实践是根据大学生必须具备的基本计算能力设置的验证性问题,但由于选修学生规模大,在没有统一安排实践机时情况下,任课教师很难准确把握每名学生完成情况,仅回答学生在实践中遇到的问题都是巨大的教学负担。为此,我校科学计算团队开发了一款名为“算法盒子”的计算实践软件。该软件用VB语言进行开发,界面友好,学生可以根据软件提供的“编辑窗口”编辑C++语言代码,并可以实现编译、调试、运行等相关功能,完成基础性实践所设置的各项任务;软件同时提供“算法调用”功能,学生可以直接调用已经内置于软件的所有基础性实践相关程序,验证实践结果。值得一提的是,调用相关程序不需要了解程序结构和代码,通过在对话框按照C++语言语法输入相应数学表达式即可获取验证结果,当然大学生同样可以通过研究内置算法代码结构及相关编程方法自行查找编程错误,一些常见编程错误也会统一整理更新,并以文档形式保存,以供后续学生研究学习。另外,可以通过软件提供的“算法添加”“算法删除”功能自主对软件内容进行个性化设置,能轻易使得该软件为其它数值计算类课程实践教学所用。根据课程进度,学生需要在任课教师指定的时间节点,根据章节要求,按照固定格式提交多份实践报告,对按要求完成并提交基础性实践作业的同学,任课教师根据完成质量进行打分,分值在30~90分之间。
综合性实践需要学生在具备基本计算实践能力基础上(完成基础性实践至少1/2内容),针对选定的综合性实践问题,根据相关理论实践知识,对问题进行建模、求解。鉴于问题的复杂性,学生可以按照数学建模竞赛模式自由组队,3人一组,在规定的时间节点以论文形式提交实践结果并附相关源代码以备检查,分值在50~100之间。
创新实践要求学生在掌握相关问题基本理论和算法的基础上(完成基础性实践至少1/3内容),针对实践问题的特殊性,查阅相关文献,了解问题研究现状,提出解决问题的研究思路、可行性分析以及实践结果分析。理论和实践基础比较强的大学生可以3~5人一组,自由组队,同样按规定时间节点以论文形式提交实践结果和相关源代码,所有队伍以分组答辩形式汇报工作,包括结果不够理想的尝试性、探索性工作。任课教师根据创新性和工作量进行打分,分值在60~100分之间。
4. 实施效果
数值计算类课程实践教学改革实施以来,学生对课程兴趣及与任课教师交流的频次有明显提升。学生的到课率、抬头率始终保持在较高水平,实践作业完成度高。为了进一步优化实践教学模式,分析实践教学改革对课程教学质量的影响,课程团队以线上问卷调查的形式调研学生对实践教学模式的认识和看法,共回收问卷559份。问卷调查显示,93.4%的同学认为课程实践对提升科学计算能力有较大帮助,87.2%的同学认为实践内容对课程理论知识的学习和算法的深入理解意义重大,84.7%的同学认为课程实践对参加数学建模竞赛等创新科技活动有重要作用,76.6%的同学表示每周在这门课程的时间投入大于6小时,87.8%的同学认为高阶的实践题目具有一定难度,至少需要3周时间才能完成,并建议放宽实践作业提交时间要求。从问卷统计结果来看,多数同学认可实践模式在课程教学中的重要作用以及在能力提升方面所产生的积极影响。从实践成效上来看,每年约有52.3%的大学生选择挑战综合性实践或创新性实践项目,且完成质量较高,90%以上同学能够获得85分及以上的实践成绩。同时,每年都有课程实践表现优秀学生获批国家级、省级大学生创新创业训练计划项目,并在任课教师的指导下继续拓展创新性实践。此外,据统计,经过数值计算类课程实践训练的大学生80%以上在校期间至少参加过一次数学建模竞赛,超过96%的全国大学生数模竞赛及国际数学建模竞赛参赛队员接受过不同层次的科学计算实践训练。数值计算类课程任课教师100%参与指导大学生数学建模竞赛,且作为指导教师获国际数学建模竞赛特等奖1项,一等奖25项,二等奖59项,全国数学建模竞赛一等奖4项,二等奖项,省一等奖78项。同时,实践教学模式作为“数值计算方法”课程建设的重要组成部分获得专家认可,课程也于2023年获批国家级一流课程。
5. 结语
科学计算是现代科技不可或缺的研究手段。数值计算类课程包含的各类科学计算方法是解决工程实际问题重要的手段和工具。基于数值计算类课程开展的算法实践对培养大学生解决问题能力有重要意义。本文系统介绍了西北工业大学科学计算团队建设的数值计算类课程实践教学模式。该模式通过层次化设计课程实践教学内容为大学生的个性发展提供了广泛空间,通过开发计算实践软件平台为大学生的数值实践提供便利,为数值计算类课程班级规模大、实践学时缺乏等问题的解决提供了可行方案,通过建立科学的实践考核方式激励大学生勇于探索算法的深层次应用,有效提升了计算实践质量。模式具有一定的实用性和先进性,实践效果良好,可供兄弟院校借鉴参考。
NOTES
*通讯作者。