APP下载

引入计算机程序设计大赛培养学生的编程实践能力
——以C语言程序设计课程为例

2020-04-28赵莎莎

贵阳学院学报(自然科学版) 2020年1期
关键词:程序设计竞赛大赛

赵莎莎,张 微

(阜阳师范学院 信息工程学院,安徽 阜阳 236041)

C语言程序是学习所有编程的基础课程,是学习其它专业课程的前提,所有高校计算机专业课程都会开设该门课程。同时,C语言程序还是计算机专业学生考研初试和复试经常要用到的编程语言;在历年的编程语言排行统计中,C语言也始终保持着较前的位置。因此,C语言可谓是重要的,对于计算机专业的学生来说,是必须学好的基础课程。那么如何让学生更好的掌握该门语言,提高学生的动手实践能力,是一名计算机老师应该关心的。[1]

目前举办的许多计算机相关的竞赛都涉及到C语言的开发,如单片机竞赛,机器人大赛,网络安全大赛等,特别是蓝桥杯程序设计大赛,全国程序设计大赛等各类程序设计大赛都设置了C/C++项目,通过对学生进行竞赛培训,参加竞赛,可以提高学生解决问题的能力和自主学习的积极性。

本文以C语言程序设计课程为例,将计算机程序设计大赛引入到该实践课堂中,通过课堂的设计,学生的反应,教学效果的反馈,分析探讨以专业竞赛促进大学生双创实践教学模式,最后得以推广,提高我系的实践教学课程质量。

一、调查分析

首先针对专业竞赛对学生进行了一个小的调查,调查题目如表1所示:

表1 专业竞赛调查表

调查表比较简单,主要针对学生参加专业竞赛,以及对专业竞赛的了解情况做出了提问,从调查情况来看,百分之五十的同学没有参加过专业竞赛。如图1所示,第一次参加专业竞赛的时间一年级占百分之六十以上,说明大一的同学对参加专业竞赛的积极性还是比较高的,教师应该在学生大一的时候就多宣传鼓励。

图1 第一次参加专业竞赛的时间

你所了解的专业竞赛有哪些?可以看到大部分同学还是知道一些专业竞赛的,只是了解多少的问题。图2所示,学生了解专业竞赛的渠道在网络,社团组织,班级通知,教师课堂方面的比例较为均衡,比例都在百分之五十,说明这些渠道还是很重要的。而是否有意愿参加专业竞赛呢?调查显示如表2,一年级的学生参加专业竞赛的意愿较大,三年级,四年级的较小。大部分学生认为参加专业竞赛对自己的学习是有正面影响的,希望学校在软件,硬件环境方面以及专业竞赛培训方面能提供更好的条件和帮助。

图2 专业竞赛宣传渠道

表2 参加专业竞赛的意愿调查表

二、针对专业竞赛的措施

(一)专业竞赛的宣传

专业竞赛的宣传很重要,调查显示很多学生,实际中可能更多的学生对专业竞赛的了解非常少,甚至不知道专业竞赛有哪些,竞赛的时间是什么,更不知道该如何准备,如何参赛,参赛的形式是什么,这些都需要进行前期的宣传。宣传的渠道主要有三种。

1.网络宣传 主要通过校园网站进行通知,一般网页上都会显示参赛的时间,组织的形式,组织单位等信息。相对来说,内容比较详细,但是问题在于很多学生不去关注,因此往往看不到通知而错过了参赛的机会。

2.学生组织宣传 可以依靠学生会,相关的社团组织,如计算机协会,数学建模协会等,通过这些社团组织对专业竞赛进行宣传甚至组织竞赛的初选。这类宣传方式针对性强,学生会直接通知到各个班级,各个班级再通知给每个学生,宣传范围广。社团组织可以针对竞赛的类别对本组织成员进行宣传,培训,相对其他同学,社团组织的成员对相关的专业竞赛有较大兴趣,参赛的几率高。而且社团成员之间互相传授经验,组成参赛团队的可能性大。因此利用社团进行宣传是不错的途径。

3.教师课堂宣传 教师课堂的宣传最直观,一般教师对专业竞赛都有经验,无论是参赛的形式,作品的展示,以及很多官方通知中不能明确理解的地方,教师通过往年的参赛经验以及和组织方的联系,可以给学生更多、更清楚的解释,还可以给学生提供往年参赛的案例。通过教师的宣传和鼓励,可以提高学生对专业竞赛的兴趣,吸引更多的学生参与进来,本人经常在课堂上进行引导,引导学生参加合适的专业竞赛,实践证明学生会在课余时间找到老师更加详细的了解参赛内容,从而积极准备。

(二)专业竞赛引入课堂

传统课堂上,教师和学生的互动相对较少,即使是实践课堂,更多的也是教师首先将本次课程应该完成的任务布置下去,学生按要求完成。如果布置的任务不具体,学生就会不知道自己究竟要做什么,导致实验效果较差,如何提高实验效果,是任课教师需要思考和解决的问题。专业竞赛基本目的是促进教学改革,提高学生的学习兴趣和动手动力。在要求学生掌握基本的课本知识的同时,能把理论和实践结合起来,把课程所学知识加以运用,做出一定应用性的东西或者解决具体的问题,在解决的过程中得到提高。对于C程序实验课程,本人是通过逐渐加入竞赛元素将专业竞赛融入到课堂,从而提高教学效果。[2]

1.给学生灌输竞赛意识,注重基础知识的培养

课程开始之初,许多学生没有编程的能力,这个阶段对于学生应该注重基础知识的培养,关键是好的编程习惯的养成,以及对于基本的编程技巧的掌握。同时,这个阶段还需要多对学生宣传专业竞赛,特别是有针对性的宣传,对于C程序课程,学生可以参加的竞赛有蓝桥杯全国程序大赛,安徽省程序设计大赛,以及需要利用C语言作为开发工具的单片机竞赛,机器人大赛等等,让学生更多的了解竞赛的相关问题,以及参加竞赛可以给他们带来的好处,激发学生对专业竞赛的兴趣,更多的去关注专业竞赛。[3]

2.逐渐引入竞赛模式,形成竞赛的环境

经过一段时间的学习,学生已经可以进行简单的编程,解决一些比较简单的问题,这个阶段引入竞赛的模式,对学生进行分组,每次布置一定的题目,要求学生按时间按小组完成,并且根据小组完成的题目数,解决问题的正确与否,解决问题花费的实际长短,解决问题的方法进行打分,增强学生的紧迫感。由于是按小组打分,小组就是一个团队,团队中的每个同学必须共进退,那么能力强的同学就必须带动能力差的同学一起进步,相互学习,相互督促,这有利于培养学生团队合作的意识,同时起到学生之间互相帮助,互相促进的作用。

每个人都希望证明自己是优秀的,在这个过程中,塑造竞赛的环境,制造竞赛的气氛,培养学生的竞争意识,把平淡的课堂氛围调动起来。

3.逐步引入竞赛题目,培养学生解决问题的能力

课程进行到一半以后,部分学生解决问题的能力已经逐渐提高,对于基础知识已经基本掌握,可以针对性的进行拔高练习。这个阶段可以在实验课堂中逐渐加入程序设计大赛的题目,对于完成基本题目练习的学生,可以解决竞赛题目,但是竞赛题目的添加也是要有要求的,首先解决办法是学生学习过的,目的是为了加强对已经学过的知识的应用,否则随便一道竞赛题目,学生根本无法理解也没有任何意义了。

众所周知,程序竞赛的题目范围特别的广泛,包括基本算法:枚举方法,贪心方法,递归和分治法,递推法,构造法等,图算法:图的深度优先遍历和广度优先遍历,最小生成出算法,拓扑排序等;数据结构类:串,哈希表,堆等;动态规划问题等等。竞赛题目往往更注重算法的应用,这就要求学生除了课堂之外,课余时间也需要学习一些算法知识,经过这段时间的学习,学生可以掌握更多的算法,锻炼学生解决问题的思路,提高解决问题的能力,更重要的是提高了学生学习的自主能力。同时将竞赛题目加入到课堂中,无形中激起学生的竞争意识,激发学生不服输的精神,形成你追我赶的局面,改善传统课堂死气沉沉的局面,提高教学效果。

4.模拟真实赛场,为专业竞赛选拨参赛人员

在课程即将结束的时候,可以模拟真实赛场,毕竟专业竞赛不是所有的学生都可以去参加的,只能选取比较优秀的同学参加。竞赛的题目应该难易各占一定的比例,一方面,可以考察学生的基础知识的掌握能力,又可以照顾到大多数学生,不至于挫败大家的积极性。另一方面,应该有拔高题,可以考察学生解决问题的能力,选出比较优秀的学生。模拟赛场要有真实感,给学生一个竞赛的氛围。通过模拟赛场,可以作为实验课程的期末考察,也可以综合选拔出一些学生参加省级的程序设计大赛,这样既可以免去了组织选拔赛的麻烦,同时可以让学生更快地适应竞赛的氛围,还可以让更多的学生了解和参与到竞赛中。让专业竞赛不是少数人的竞赛,而是大家的竞赛,扩大受益面。

三、教学效果分析

(1)横向比较

将专业竞赛引入C程序课堂之后,与其它未引入的班级比较,第一,出勤率高于其它班级,班里几乎无学生缺勤;第二,期末考试成绩,班级平均成绩78.5,高于其它班级。第三,程序设计大赛选拔中,我院共9人参赛,该班级参加了5人,获得省级一等奖1名,二等奖1名,三等奖2名,取得了较为理想的成绩。

(2)纵向比较

与上一届本专业学生比较,较上一届学生的课堂积极性要高,学生主动回答问题,课堂互动以及问问题都比较积极主动。学生较传统课堂上自己做自己的练习,等着老师检查作业的现象有较大的改善。从期末考试方面,较上一届学生期末考试平均70.5分,有很大提高,另外上一届学生参加程序设计大赛仅一人。

(3)总体比较

通过比较,从出勤率,期末考试,学生学习的积极性,解决问题的能力,参加专业竞赛的积极性等方面,将专业竞赛引入课堂后,均有很大的改善,教学效果明显提高。

四、总结

专业技能竞赛引入课堂后,提高了学生的自主学习能力, 改善了教学效果,带动了学校专业的教学改革,对于学生的就业或者进一步的学习都有很大的帮助,参加过专业技能竞赛的学生的考研成功率和学生的就业质量要高于未参加过专业竞赛的学生。以竞赛的方式展开教学,进一步的扩大的竞赛带来了正面力量,寓赛于教,以赛促学,相信在这样的环境下,学生们对实验课的兴趣也会有所提高, 我院的教学质量可以得到很大的提高。但是,对于专业竞赛我们还是存在很多问题的。第一,学校应该增加支持力度,提高学校的软硬件环境,给学生提供更好的学习环境;开放机房,可以为学生提供免费的学习场所;第二,增加一些相应的培训,课堂教学毕竟是针对广大学生的,因此主要的学习内容还是基础性的内容,而专业竞赛的要求相对较高,可以针对能力较好的学生开展培训,拓展学生的知识面和学习的深度;第三,从思想上提高学生的创新意识,学生很多时候对教师的依赖性过高,独立思考,解决问题的能力不高,或者说有学生不敢自己去解决问题,所以,要培养学生思想的独立性、创新性,这一点也是很重要的。

猜你喜欢

程序设计竞赛大赛
“鸟人”大赛
插秧大赛
2020丝绸之路数学竞赛
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
我看竞赛
创新思维竞赛(3)
高职高专院校C语言程序设计教学改革探索
PLC梯形图程序设计技巧及应用
说谎大赛