APP下载

本科数学类专业程序设计基础课程的教学改革
——以武汉科技大学为例

2022-08-30邢远秀

大学教育 2022年6期
关键词:程序设计建模竞赛

邢远秀

武汉科技大学理学院,湖北 武汉 430081

本科数学类专业都需要具有较强的算法设计、分析与编程能力,能熟练使用计算机(包括掌握常用语言、工具及一些数学软件),具有编写简单应用程序的能力,因此,程序设计基础成为数学类专业重要的专业基础课程之一。通过对武汉科技大学(简称“我校”)信息与计算科学专业16 级到19 级学生共247 份调查问卷进行分析后发现,45.7%的学生在大学一年级学习该课程时认为该课程对本专业用处不大,17.4%的学生表示不清楚其专业用处,这说明学生在学习时对该课程在专业中的地位不够明确。这是因为在以往的实际教学中,大多数任课教师仍沿用计算机专业课程的教学内容与方法,并未体现出数学类专业的特点,造成该课程的教学内容与数学专业教学体系脱节、实践教学效果不佳、学生对该课程不了解不重视等问题。可见,数学类专业针对程序设计基础课程的教学进行改革十分必要。

一、现状

现在国内大多数本科院校都开设有数学类专业,这些专业都开设有程序设计基础这门课程。C 语言近20年在TIOBE编程语言排行榜中一直位居前三,并在2019年再次成为年度编程语言,主要是因为其表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,其他一些计算机类课程比如数据结构、C++所选用的教材基本上都是以C 语言为基础来进行描述的。选用C 语言作为程序设计基础课程的教学内容可以有效衔接后续专业课程,有些学校直接将这门课程开设为C 语言程序设计。对于数学类专业的学生来说,该课程既是本专业后续数学建模、数值分析等课程的实践基础,也是Python、Matlab等其他和数据分析关系较为密切的编程语言的基础。

目前针对数学类专业程序设计基础课程教学的改革与实践,都是只针对课程本身的知识点,集中在教学方法的改进上,有研究采用综合训练(大型作业)的方式进行教学,或者是改革上机操作的实践环节,或者是进行课件制作,实施多媒体教学,也有提出项目式教学法的,但是站在专业的高度将该课程纳入整个人才培养体系中进行教学改革的不多。

二、教学改革的思路与措施

(一)将课程内容与专业有机结合起来,打通课程孤岛

计算机最早被研制出来的目的就是要解决数学运算等问题,数学与程序设计语言的联系非常紧密,因此应该将程序设计基础课程的教学内容与数学专业的其他专业课程结合起来,形成横向交叉、纵向贯通的课程教学体系,使学生充分了解程序设计类课程在专业中的作用,再通过对实践教学项目的设计,使教学内容不再孤立,让学生学得明白,提高教学质量。从武汉科技大学信息与计算科学专业课程体系(见下图)可以看出,其专业课程主要分为三大类:一类是数学专业的专业类课程,一类是计算机类相关课程,还有一类是实践类课程。程序设计基础课程属于计算机类专业的基础课程,后续课程包括C++程序设计、离散数学、数据结构、数据库系统概论、算法分析与设计、计算机网络等课程,平行课程包括数学分析、高等代数与解析几何等课程,相应的实践类课程为C 程序课程设计。这些课程的内容存在贯通性和交叉性,教师在做程序设计基础课程的教学设计时,要考虑本课程与这些课程之间的联系,这样有利于学生了解本课程在专业中的定位,认清学习本课程的目的,有助于学生进行更有针对性的学习。例如在讲授指针的应用这个知识点的时候,可以结合数据结构中的链表一起来讲解,这样学生就能够知道指针可以用来做什么,也了解了本课程与其他课程的关系,学习起来会更有兴趣。

程序设计基础课程的教学内容应加大案例教学的比例,突出程序设计语言的工具属性。程序设计语言是实现算法、解决问题的工具,因此要尽量选用真实案例。例如在讲授分支结构switch语句的时候使用将百分制的成绩转换为等级制的例子,学生更容易理解和掌握。

(二)将课程资源建设与专业教学资源库建设融合起来,打造主课与辅课相结合的教学模式

应自上而下建立有机结合的专业教学资源库,而不是简单地将每个课程的教学资源整合到一起形成专业教学资源库。在建设专业教学资源库前要做好整体规划,从专业的角度设计每门课程的教学资源。利用教学资源库开展教学模式改革,采用主课与辅课有机结合的教学模式。讲授程序设计基础课程时,这门课程即为主课,与之相关联的专业课如下图所示的数学分析、高等代数与解析几何等课程即为辅课。由于程序设计基础课程学时有限,教师难以系统讲授辅课内容,因此要丰富辅课教学资源。辅课学习以自学教学资源为主,这样可以弥补主课教学时间与教学广度不足的缺点。我校目前尚未建成数学专业教学资源库,笔者在教学的时候将网上教学资源作为补充内容,取得了很好的效果。比如笔者讲到指针时结合数据结构中的链表来讲解,因课时有限而无法在课堂中详细讲解链表有关知识,便借用学堂在线上华南理工大学数据结构的课程视频,让学生提前学习链表的有关知识,再到课堂中结合链表讲解指针的知识,取得很好的教学效果。

大学数学课程具有内容的高度抽象性、思维的逻辑严密性、方法的灵活多样性等特点,不仅需要教师花费较多的课时进行讲解,同时也需要学生课下花费足够的时间进行巩固,因此可以进行翻转课堂等教学方法的探索。2020 年上半年受疫情的影响,停课不停学,教师们普遍采用网上教学的模式,这样必然对传统教学模式产生深远的影响。不管是学生还是教师,都对在线学习有了深刻的认识。恢复正常的教学活动后,教师会主动将线下教学与线上教学结合起来。笔者该学期的线上教学效果明显,经统计,学生在线上教学的到课率为98.8%,作业完成率为95.1%,这说明线上教学完全可以成为线下教学的重要补充。不仅课堂教学可搬到线上,实践教学也可搬到线上,笔者采用线上教学平台讲解、指导实践,利用远程控制系统帮助学生解决难题、检查实践教学结果,都取得了很好的教学效果。

(三)将课程教学和数学建模大赛等学科竞赛结合起来,以赛促学

学科竞赛具有探索性、创造性和科学性,能够培养大学生理论联系实际和独立工作的能力,让大学生学习在实践中发现、分析和解决问题,对增强大学生的意志力、进取心、创新思维和创新能力都有很大的帮助。目前本科学生可以参加的全国性比赛有全国大学生数学建模竞赛、挑战杯大学生创业大赛等,这些比赛在培养学生实践能力和创新创业能力上起到了重要的推动作用,对人才培养模式改革的引领作用非常明显。所以,教师在日常教学中,应注意将课程教学与数学建模等大赛相结合,一方面为大赛挖掘、培养种子选手,另一方面将大赛与课程教学、创新创业教育相融合,提高学生的专业水平,培养学生的创新精神和创业能力。

在将课程教学与学科竞赛结合起来方面,我们采取的做法主要有以下三点。

一是将学科竞赛内容与课堂教学结合起来。比如全国大学生数学建模竞赛的举办目的在于调动学生学习数学的积极性,提高学生建立数学模型和运用计算机技术解决实际问题的综合能力,这就要求学生不仅能够设计算法,还必须掌握程序设计语言来完成数学建模。因为库中封装了栈、队列等数据结构以及查找、排序等算法,所以学生平时在掌握建模中的一些常用算法的同时,还要学会运用C 的标准模板库,这就要求学生熟练掌握使用C语言进行程序设计。教师在讲授C语言时结合数学建模竞赛的相关内容,可以提高学生兴趣,让学生将数学和C 语言程序设计结合起来,有助于以赛促学。

二是将学科竞赛与实践教学体系结合起来,主要围绕学科竞赛内容来设计实践教学内容,增加创新性、设计性的实践内容,减少验证性、结论性的实践内容,重点设计课程设计实践项目,突出锻炼学生的创新实践能力。比如2019 年“高教社杯”全国大学生数学建模竞赛的A 题为“高压油管的压力控制”,为了保持压力和喷油量的稳定,必须建立数学模型和设计算法来确定从高压油泵进入高压油管和从高压油管喷出的燃油量,从而确定单向阀的开启时长、凸轮的转速、减压阀的控制策略。由于学生此时对如何建模和算法并不熟悉,因此我们在程序的流程控制实践教学环节中,将该题目改为根据输入的压力值判断压力值所在区间:根据输入的压力值x,判断当x 等于100MPa 时,输出“压力稳定在100MPa”;当x 大于100 MPa 并小于等于150 MPa 时,输出压力的具体值,即x 的值;当x 大于150MPa 时,输出x的值,并提示“压力已大于150MPa”。学生可以通过if…else 语句或者case 语句来实现,这样一方面可以使学生熟悉数学建模的实例,另一方面也可以锻炼学生对选择结构的理解和应用能力。

三是将学科竞赛与第二课堂结合起来。课堂教学在育人过程中具有不可替代的作用,但仅靠课堂教学还远远达不到教书育人的目的。传统的课堂教学更多的是开展知识传授和专业技能训练。所以有必要充分利用第二课堂活动,将其作为课堂教学活动的辅助手段,以弥补课堂教学活动在知识拓展、实践能力锻炼、创新能力培养等方面的不足。从大一新生入学开始,我们就组织学生成立学习兴趣小组,课后坚持给学生开放实训室,组织学生参加各类课外学习活动,并针对学科竞赛进行定期的集中培训和不定期的个别辅导,将学科竞赛与第二课堂活动结合起来,有效地提高学生的创新实践能力。

(四)加强师资培养,提高任课教师的数学素质

师资是教学质量的决定性因素,要想程序设计基础课程的教学与数学专业得到更好结合,就必须注重提高其任课教师的数学素质。我校目前讲授该课程的教师主要是计算机专业毕业的教师,或者是来自本校计算机学院的专业教师,这些教师的计算机水平较高,但数学基础略显薄弱,所以要提高他们的数学素质。可以通过以下几个途径来实现:(1)安排新进教师当数学专业教师的助手。不论新进教师的专业是数学专业还是计算机专业,在他们讲授程序设计基础课程前,都为其指定一位数学专业的老教师,让其在熟悉教学活动的同时,了解程序设计和数学的关系,了解怎样用程序设计语言解决本专业的数学问题。(2)定期举办学习研讨班。研讨班由专业或教研室组织,目前很多高校每周都有教研室活动,利用教研室活动举办定期或不定期的学习研讨班,数学教师和计算机教师在一起就教学问题进行探讨,彼此增进对相关专业知识的了解融通,可有效提高计算机专业出身的教师的数学素质。(3)以赛促教。充分发挥大赛“以赛促教”的作用,由计算机专业的青年教师担任指导教师,让其在指导学生参加学科竞赛的过程中,不断提高自身的知识水平和业务能力,教学相长,促进青年教师的快速成长。

(五)加强评价机制改革,丰富、优化评价手段

程序设计基础课程的实践性强,因此其考核方式不能只采用期末笔试,应注重学生平时学习的过程性考核,而且过程性考核方式应该多样化,突出考核学生的实践动手能力。

采取“过程性考核+终结性考核”的方式评定课程学习成绩。其中C 语言中的理论知识部分,仍需采用笔试的方式进行,但需要减小其权重,同时需要加大对平时实践能力的评价权重。平时成绩不能只看上课签到和课后作业完成情况,还要看平时上机的成绩,这样才能全面考查学生的综合能力。

三、结语

程序设计的发展越来越趋向于体现其工具性,并渗透到各行各业的应用中,在不同行业的应用也各有侧重。程序设计基础课程的教学应能体现程序设计在数学专业中的具体应用,用程序设计语言解决数学中常见的问题,使课程教学能够更有效地将理论与实践联系起来,将本门课程与其他相关专业课程联系起来,有效激发学生的学习兴趣,提高学生的专业知识水平和创新实践能力。

猜你喜欢

程序设计建模竞赛
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
物理建模在教与学实践中的应用
在经历中发现在探究中建模
医学专业“Python程序设计”课程教学改革总结与思考
思维建模在连续型随机变量中的应用
求距求值方程建模
数学潜能知识竞赛
创新思维竞赛(3)