APP下载

浅谈数学建模竞赛对大学生编程能力培养的作用

2020-11-02郑石军陈传军

科教导刊·电子版 2020年25期
关键词:编程架构竞赛

郑石军 陈传军

(烟台大学数学与信息科学科院 山东·烟台 264005)

0 引言

纵观智能技术发展的历程也是编程技术进步的历程,从基本的面向过程语言C到C++以及后来的Java,还有近几年十分流行的Python。每一次编程语言的进步都需要大量的编程技术人员对基本程序库和中间件进行开发和维护,同时社会也会随着新技术的兴起将新产品投放到各行各业,这也需要大量的优秀的编程技术人员。当代大学生是编程技术人员主要生力军和新鲜血液,因此提高大学生的编程能力,拥有计算机思维解决问题的能力对社会的发展有着极其重要的意义。

1 数学类本科学生编程能力现状

1.1 数学知识相对全面,但基础薄弱

数学类专业是各个高校的传统专业,也是基础类专业,主要培养学生具备基本的数学理论和数学分析问题的方法,在学习的过程中思维能力得到了比较系统的训练,能够运用建立数学模型的思想处理现实中的一些实际问题。虽然学校为学提供了完善的培养课程和优越的客观环境,但是仍存在知识基础薄弱,业务能力不强,存在“似乎什么都懂,什么都不懂”的现象。面对实际问题时不能灵活运用,甚至出现生搬硬套现象。

1.2 编程基础薄弱

培养具备基本专业数学素养和数学思维能力是数学类专业的培养目标,因此数学类专业学生关于计算机方面基础内容的学习就会少很多,而计算机类的一些课程就比较弱,特别是编程能力。计算机编程实践具有数量少、深度小、层次低、接触面窄、时间短的特点。平时编程环境也不如计算机专业学生浓厚,无形之中学到的知识少很多。

1.3 计算机思维能力薄弱

计算机思维是人们运用计算机的基础知识将人的思维或者想法转化成计算机能够识别并执行程序过程的一系列思维活动。计算机思维本质内容是抽象和自动化。计算机思维是以一种计算机可识别的方式将一个庞杂的任务进行抽象、分解或相关方面的建模,在不确定情况下的规划、调度、学习来解决问题的思维和意识。计算机解决问题的过程可描述为:问题定义及抽象化、抽象出问题的逻辑模型、算法设计、编程及运行。拥有计算机思维是一个长期积累的过程,它需要长时间的知识积累和实践并不断的领悟,因此数学类学生本身计算知识薄弱,计算机思维能力也必然会受其所累,是学生的一个短板。

2 数学建模竞赛项目介绍

建立在数学建模基础之上的全国大学生数学建模竞赛创办于1992年,第一届是由中国工业与应用数学学会组织的全国数学模型联赛,全国来自十多个省市的三百多个代表队参赛。1994年中国教育部高等教育司决定与中国工业与应用数学学会共同举办全国大学生数学建模竞赛,每年九月举行。美国大学生数学建模竞赛简称MCM始于1985年,由美国数学及其联合会(COMAP)主办,在世界范围内最具影响力的建模比赛,赛题涉及物理、经济、资源、社会等领域。另外还有由深圳市科学技术协会和中国工业与应用数学学会共同主办的“深圳杯”挑战赛,由江苏省工业与应用数学学会和中国矿业大学举办的“五一数学建模竞赛”等。竞赛题目贴近日常生活,语言通俗易懂,主要来源于工程技术、日常生活、社会经济等领域,经过简单的加工凝练而成。竞赛题目以通讯形式进行,参赛学生自由组队,每队三人,队员可以相互讨论自由搜集材料使用工具包括计算机软件网络等资源,但每个小队只能内部讨论,不能与小队外的人员传递任何信息,也不能与指导老师讨论竞赛试题。竞赛结束之前,每个小队需要提交一篇解决问题的论文和支撑论文的实验数据等材料。竞赛结果以模型假设的合理性、模型建立创新性、实验结果合理性、文字表述清楚明白等为主要标准来确定获奖论文及获奖论文的等级。数学建模竞赛是大学生难得的一次运用理论知识处理现实生活问题的练兵。

3 数学建模竞赛对编程能力的影响

在数学建模竞赛中,学生直接面对现实生活中的实际问题,充分调动学生的知识运用能力,知识转化能力,运用以前掌握的数学知识、计算机知识及其它相关知识分析问题,排除影响较小的影响因素抓住主要问题,形成可行的解决问题的基本架构和逻辑。

3.1 有利于培养学生的问题抽象能力

建模竞赛试题紧密结合社会上的热点问题,例如2020年美国大学生数学建模竞赛C题是关于线上购物的问题,要求学生根据提供的数据为即将上线的产品提供销售预测和建设性的意见。认真读完试题内容以后,对题目提供的数据文件进行初步分析。明确问题的条件和完成的任务,捕捉材料里的关键信息,例如C题中数据量太小,每个数据文件里只有几百条数据,数据量不足,不能用基于DNN、RNN等的深度学习模型,深度学习不能解决实际问题。另一个关键内容是“review text”,题目也有要求分析review和rating的关系,但这仅仅是一个常规的NLP任务,完全没有到需要词向量嵌入再训练一个大模型的地步。学生可以直接调用Python工具包,先对文本分词,再用情感词典计算情感得分。如果仍要用深度学习而且有配置相应的环境工具,那么应尽可能去引用一个训练好的情感分类网络来预测情感得分。如上所述在对问题分析的过程中,解决问题的思路也变得逐渐清晰,要使用的方法也逐渐明朗。分析问题的过程也是问题抽象的过程,它包括解决思路抽象分析和可行性方法的抽象分析。

在建模竞赛中,问题分析的过程也是程序分析的过程,两者互为依托,相辅相成统一于模型构建。

3.2 有利于提高具体设计代码的能力

近些年建模竞赛试题越来越贴近生活,涉及到的知识点比较多,求解过程也相对复杂,这些情况使得求解方式变得非常灵活,最终答案不唯一。如何在固定的一段时间内解出答案,并尽可能的完善,是竞赛学生面临的一个重要问题。建模竞赛基于实际问题的小组讨论方式,能够快速扩展学生的设计代码的知识面。小组成员相互比较熟悉,知识层次处于同一水平,针对具体问题能够比较自由的表达个人观点和想法,这使得小组成员的知识点能够迅速的做到知识互补。由于平时编程训练有限,知识面相对狭窄,面对实际问题编程时,往往出现代码设计停滞不前,浪费时间,建模竞赛的这种小组成员合作模式很好的弥补这个缺点。

3.3 有利于提高程序架构设计能力

数学建模竞赛的程序架构相对简单一些,但程序各个组件联系紧密,程序架构完整,由于没有达到软件的规模,姑且称之为程序架构。简单地说,程序架构是要完成一定功能的程序草图,程序架构提供了一个结构、行为和属性的抽象。一般地,数学建模竞赛的程序架构可以用三层模式表述,如图1建模程序架构图。

图1:建模程序架构图

根据具体问题的条件,程序架构的工作特点略有不同,但核心工作都集中在逻辑层。历年建模竞赛的问题有的输入数据量大,数据层的工作复杂一些,例如2012年A题葡萄酒评价;有的中间计算数据量大,对计算产生的数据有一个重新组织梳理的过程,例如2019年A题高压油管压力控制;有的开放性强,数据可靠性要求高,例如2015年B题出租车资源配置。学生在解决这些问题的时候加深了程序架构的理解,初步掌握了程序的运行模式,对软件的架构设计有了一定的了解。

猜你喜欢

编程架构竞赛
基于FPGA的RNN硬件加速架构
2020丝绸之路数学竞赛
编程,是一种态度
功能架构在电子电气架构开发中的应用和实践
编程小能手
纺织机上诞生的编程
我看竞赛
LSN DCI EVPN VxLAN组网架构研究及实现
一种基于FPGA+ARM架构的μPMU实现