王先传,王 浩,陈秀明,王先超
(阜阳师范大学 计算机与信息工程学院,安徽 阜阳236037)
不断提高高等教育的教育教学质量是人才培养追求的永恒“不动点”。当前,以新工科建[1-4]设为桥梁,实现高等教育内涵式发展的过程中,这个“不动点”的地位更加突出。在新工科背景下的工程教育要求高校应全面落实包括以学生为中心、面向产出(outcomes-based education,OBE)、持续改进(continuous quality improvement,CQI)在内的三大先进教育理念,以提升人才培养质量。工程教育的基本定位是培养学生利用深入的原理解决复杂工程问题的能力[5]。2016 年6 月我国正式加入的《华盛顿协议》、我国2015 版《工程教育认证标准》[6]和2017 年11 月修订的《工程教育认证标准》(以下简称标准)均用了7 个特征来刻画复杂工程问题[7],其中的第3 条就强调“需要通过建立合适的抽象模型才能解决,在建模过程中需要体现出创造性”。可见数学建模能力的培养对解决复杂工程问题的重要性。为此,本文将探讨如何培养计算机类专业人才的数学建模能力。
数学特别是其两个重要分支即应用数学和运筹学,已从纯粹的理论研究发展成为一种具有时代潮流的新技术——数学技术,并成为高新技术的重要组成部分[8]。已有研究表明发明专利能否成功申请与申请人的数学建模能力有着密不可分的关系。因此,数学建模不仅是产教研用的典范,更是启迪创新意识、培养创新思维、锤炼创新能力以培养新工科人才的一条重要途径。在大数据与人工智能时代,其作用和意义更加凸显。因为数学建模不但可以巩固和扩大学生课内所学的知识,而且能够充分考察学生的直觉思维、抽象能力、数学语言“翻译”能力、表达能力、沟通能力、设计能力、编程能力、使用最新科技成果的能力、团队意识和自主学习能力,从而提升其利用深入工程原理分析和解决复杂问题的能力,等等。
Scott Page 对数学模型的功能进行总结,提出模型的7 大用途:推理(reason)、解释(explain)、设计(design)、沟 通(communicate)、行 动(act)、预 测(predict)和探索(explore)[9]。其首字母构成了一件“红色披风”(REDCAPE),旨在提醒我们数学模型及其思维可赋予我们强大的力量。
数学建模比赛,特别是以创新意识、团队精神、重在参与、公平竞争为宗旨的全国大学生数学建模竞赛,是培养创新能力的一个极好载体,其目的在于激发学生学习数学的兴趣,培养学生综合利用所需知识和计算机技术解决实际问题的能力。比赛过程可以培塑学生同舟共济的团队精神和协调组织能力。特别值得一提的是,近年来,作为全国大学生数学建模比赛的发起者,中国工业与应用数学学会牵头整治了比赛过程中出现的一些弊端,如抄袭学术论文、找别人代写论文等。这些举措不仅保障了比赛的公平竞争,更进一步培养了学生的诚信意识和自律精神。
《标准》中对工程教育认证提出的12 条具体的毕业要求指标[7],其中前5 条为工程技术指标,其他为非工程技术指标。这些指标中有7 条与建模能力有较强的关系,其中工程技术指标4 条,非工程技术指标3 条。例如:
第1 条“工程知识”要求学生“能够将数学、自然科学、工程基础和专业知识用于解决复杂工程问题”。学生如何才能将数学用于解决复杂工程问题呢?就要求他们不但要学好数学相关课程,如高等数学、概率统计等,还要至少能够对复杂工程问题进行抽象即用数学语言描述。这个描述其实就是建立相关的数学模型。只描述还远不够,还要运用数学解决该问题,即进行模型的求解。
第2 条“问题分析”要求学生“能够应用数学、自然科学和工程科学的基本原理,识别、表达、并通过文献研究分析复杂工程问题,以获得有效结论”。其中的应用数学的基本原理表达、分析复杂工程问题以获得有效结论就是要求学生先选择适当的抽象模型将复杂工程问题形式化,即用数学语言把其“翻译”成数学问题,从而构建抽象模型,模型求解后再将数学语言“翻译”成自然语言,从而获得有效结论。
第4 条“研究”要求学生“能够基于科学原理并采用科学方法对复杂工程问题进行研究,包括设计实验、分析与解释数据、并通过信息综合得到合理有效的结论”。数学建模在本质上就是培养学生的科研能力,在建模过程中查阅资料,分析与解释数据是必不可缺的。模型求解后,对信息进行综合得到合理有效结论,以便进行基于模型的工程实施,即实现模型的应用。
第5 条“使用现代工具”要求学生“能够针对复杂工程问题,开发、选择与使用恰当的技术、资源、现代工程工具和信息技术工具,包括对复杂工程问题的预测与模拟,并能够理解其局限性”。该条与模型求解时所要做的工作非常吻合。在模型求解时,要求学生能够使用恰当的技术如遗传算法[10]、机器学习[11]、排队论[12]、人工神经网络[13]、元胞自动机[14]等,并使用合适的现代软件如Visio、Matlab、Lingo、Python 及其常用库编写相关程序对模型进行模拟、求解,并对结果进行可视化,最后给出模型的优缺点。
第9 条“个人和团队”要求学生“能够在多学科背景下的团队中承担个体、团队成员以及负责人的角色”。数学建模所要解决的通常都是金融、交通、环境、控制、社会等不同领域的新问题。因此,在数学建模比赛有助于培养学生的团队意识和责任担当。
第10 条“沟通”要求学生“能够就复杂工程问题与业界同行及社会公众进行有效沟通和交流,包括撰写报告和设计文稿、陈述发言、清晰表达或回应指令。并具备一定的国际视野,能够在跨文化背景下进行沟通和交流”。他们3 个人组成一个队,为了一个共同的目标,比赛过程中可能会为了做哪一道题、采用哪种方法与技术等而争吵得面红耳赤,但最终要做出最后决定,这样有人就要学会了妥协与宽容。在比赛过程中不但要进行有效的沟通和交流,还要一定的形成文字材料即一篇建模论文。特别地,美国大学生数学建模比赛,其竞赛试题不但具有一定的国际视野,而且用英文展示,并要求学生也要提交一篇英文数学建模论文。这些对“沟通”素质的培养与提升起到至关重要的作用。
第12 条“终身学习”要求学生“具有自主学习和终身学习的意识,有不断学习和适应发展的能力”。在建模和比赛过程会遇到不同领域的复杂科学问题,他们要从网上或书籍中查阅相关资料、弄懂相关概念,并搜寻有效的原理与方法以解决问题。可见数学建模有助于培养学生的自主学习和终身学习意识,提升其可持续竞争力。
根据《普通高等学校本科专业目录(2020 版)》计算机类专业有17 个[15],我校计算机与信息工程学院现有计算机科学与技术、数据科学与大数据技术、软件工程、物联网工程、信息工程、智能科学与技术6 个本科专业。其中信息工程专业不在17个计算机类专业之列。
如上所述,数学建模对学生能力培养,特别是《标准》中对工程教育认证提出的12 条具体的毕业要求的达成具有举足轻重的作用。按理说,应该把数学建模或数学模型课程作为计算机类专业的数学与自然科学类课程。目前,已有不少高校把数学建模纳入计算机类专业的课程体系,但仍有许多高校并没有把它列入课程体系。例如,笔者所在高校最新修订的计算机科学与技术专业人才培养方案中数学与自然科学类课程如表1 所示。人才培养方案总学分168.5,其中数学与自然科学类课程25.5,占15.13%>15%,达到《标准》要求。同时,没有包括数学模型课程。
究其原因,虽然数学建模课程对工程教育认证中的7 条都可以很好地支撑,但那7 条并非只能用数学模型一门课程做支撑,即可以用其他多门课程,如高等数学、数值分析、数据结构等来解决[16]。另一方面,数学模型一般由数学学院来承担,在现在的绩效考核下,为保障本学院教师的工作量,各学院都不乐意把自己学院可解决的课程让其他学院来承担,即只能因人设课。
这种做法不能使学生得到系统的数学建模训练,只能零散地、片面地接受数学建模相关知识。最终伤害的还是学生,导致他们对数学建模不了解、缺乏应有的兴趣,不肯参加相关的数学建模比赛。最终导致他们缺乏面对复杂问题的勇气,这一点可从毕业论文的选题中可以看出。近年来,每年都有相当一部分同学以简单地网站和管理系统设计作为毕业设计选题。2020 年毕业的336 名同学,其中248 篇为管理软件选题,占73.8%。在这些选题主要涉及酒店管理、人事管理、购物网站、考试系统,等等。这些选题的设计和实现模型基本一样,不同选题之间的参考和借鉴程度比较严重,创新性比较低。今年笔者在评阅时遇到两篇毕业设计,题目和内容包括实验部分几乎都一样。与没参加过数学建模比赛的同学相比,参加过数学建模比赛的同学基本都能较好地完成一篇毕业设计,不少还被评为优秀毕设。因此,当前这种教育模式和质量监控体系不能从整体上培养和提升学生的综合素质和可持续发展能力。
虽然我校每年都组织学生参加全国大学生数学建模比赛和美国大学生数学建模比赛,但总体参数队比较少,计算机类各专业参加比赛的学生就更少,每年3~5 个队。虽然学校制定了相关的激励措施,但近年来取得省一等奖越来越难。这样赛前指导老师不肯下功夫和时间培训学生,导致比赛过后老师和学生都感觉很累,而且还不能取得好成绩,形成了恶性循环。因此,数学建模比赛的受众面小,效果很不理想。
基于学生为中心[16-17]和OBE 教学理念[16,18]培养和提升学生的数学建模能力。具体做法如下。
不同的课程可以向学生渗透不同的数学建模思想。将数学建模思想融入到现有数学与自然科学类课程,主要可以完成“问题”到“形式化”的转化,培养创新意识、学生抽象和推理能力;程序设计类课程主要可以完成“形式化”到“计算机化”的转化,培养学生计算思维、编程能力和实践能力。特别地,数值分析和算法类课程可进一步提升学生算法设计与分析能力。
下面以算法设计与分析课程中经典的0-1 背包问题为例,探讨如何向学生有效渗透数学建模思想。0-1 背包问题是指给定若干个物品和1 个背包,每个物品的质量和价值以及背包容量均已知,对每个物品只有装入和不装。如何选择物品,使装入背包中的物品价值最大?
通过对该问题学习和解决,我们不能只使学生能够理解和掌握动态规划算法、回溯法和分支限界法,并能应用它们解决一些实际问题,还应通过该问题培养学生的模型思维和建模能力。
首先,引入变量。假设共有n 个物品,每个物品质量和价值分别为mi和vi(i=1,2,…,n),且wi>0,且vi>0,背包容量为C>0,并用xi∈{0,1}表示第i 个物品的状态,1 和0 分别表示物品装入和不装入背包。这一步看似很简单,即给出每个变量的含义,而经常被忽略。
再次,模型求解。需要一个具体实例,如n=3, C=30, m={16, 15, 15}, v={45, 25, 25}。为了培养学生算法设计与分析能力和软件开发能力,在向学生详细讲解动态规划算法、回溯法和分支限界法的同时,应告诉学生还可以使用现有软件Lingo 或Lindo 来解决该问题,即让学生使用恰当的现代工具解决问题。用Lingo 可解得该问题的最优解为(0,1,1),最优值为50。即将第2 和3 个物品装入背包时,所求价值最大,达50。
最后,模型评价。主要分析和总结不同方法求解该问题时的时间复杂度。
该例子虽然不能使学生了解所有建模方法,但可以使他们能够了解不少关于数学建模的知识如建模步骤、相关数学概念以及Lingo 软件的编程、使用和求解报告分析。同时,还有助于他们克服畏难情绪,培养其建模兴趣。
在相关课程中融入数学建模思想虽然有助于培养学生的建模思维和建模能力,但基本上是片面的、零散的,不具有系统性。在新常态下,利用暑假开展建模培训,培训老师没有任何报酬。为使学生能够较好地掌握常用数学建模方法,我们强化教师奉献精神,搞好暑期建模培训工作。10天左右时间的培训使他们能够掌握数学建模常用思想、方法、原理和技术,而后要求他们组队并把近3 年全国大学生数学建模竞赛试题作为真题进行训练。同时,邀请指导老师对其建模论文进行评阅,以达到渐渐提升其建模能力的目的。作为培训工作的前奏,要求拟参加培训同学首先参加中国工业与应用数学学会和中国知网联合主办的“数学的重要性及其应用”公益讲座,使其感悟数学建模之美,提升其参与建模比赛的兴趣。
为了更好地培养和提升计算机类各专业人才的数学建模能力,给出两条建议:第一,建议越来越多的专业课教师将越来越多的数学建模思想融入到越来越多的课程,并宣传数学建模比赛,以激发学生学习数学建模兴趣,并全身心地投入到数学建模比赛。第二,在持续改进教学理念下,我们建议和期待相关专业负责人在下一次人才培养方案时将数学模型作为选修课纳入某一个专业的课程体系,并进行3 年左右尝试。如果有助于人才培养质量的提升,再将其作为必修课,并将其推广至计算机类各专业。
数学之用是无用之用,才最有价值。在新工科建设背景下,提升学生数学建模能力不但使学生体会到数学“作为模型,它是一种语言,大道至简;作为理论,它是一种财富,博大精深;作为算法,它是一种力量,改变世界”,而且可以增强学生分析和解决复杂工程问题的能力。