地方高校程序设计能力现状分析与对策研究*
——以岭南师范学院为例

2018-05-02 07:25张立敏
中国教育信息化 2018年8期
关键词:数据结构C语言程序设计

张立敏,吴 涛,吴 东

(岭南师范学院 信息工程学院,广东 湛江524048)

我国目前已拥有了大量的初级计算机人才资源,但重心偏低,特别是高校毕业生,缺乏创新能力和实践能力,高素质软件人才的缺乏已成为制约我国软件产业发展的瓶颈[1]。当前,各大高校计算机相关专业学历教育周期长、教学内容更新缓慢、教学方式与考核方式单一,应用实践偏少,就业压力相对较大,只有深入开展人才培养模式改革,并进行深度的专业结构调整,才能适应市场需求[2]。在本科应用型人才培养质量越来越受关注的今天,各高校在人才培养模式方面,尤其是教学模式和教学方法方面开展了大量的研究工作[3],同时更加注重学习方式和考核方式的改革与创新。

计算机教学改革离不开程序设计类课程的改革,程序设计不可避免的与各类竞赛相关联,其中ACM-ICPC(ACM International Collegiate Programming Contest,国际大学生程序设计竞赛)和全国软件专业人才设计与创业大赛与课程教学的结合最为紧密。以ACM-ICPC为基础的教学改革研究已逐步深入,主要集中在课程教学中如何引入ACM-ICPC[4-5],如何构建基于竞赛的实验教学新平台[6],以及如何实施竞教结合[7]三个方面。

程序设计竞赛涉及的课程不仅仅包括C语言和数据结构,还包括JAVA程序设计、ACM程序设计、算法设计与分析等,覆盖了计算机专业主要的必修课程,竞赛式教学所体现的竞教结合的教学思路与教育部大力推进加强实验、实践教学改革的思路相辅相成,程序设计竞赛与课程教学的结合在培养学生基本素质方面具有较好的教学效果[8],能够有效的促进信息学科创新型人才的培养[9]。

一、程序设计能力现状分析

不同地域、不同类型的高校之间,学生的专业素养差别很大,尤其是地方高校,学生理论基础薄弱,编程能力亟待提高。为了能够准确地了解地方高校大学生的程序设计能力状况,针对岭南师范学院计算机专业3个年级共584名在校大学本科生发放《程序设计能力调查问卷》,问卷基于目的性、逻辑性、通俗性和便于处理性原则,主体设计包括是否式、选择式和评判式三种类型,按照一般调查问卷的基本步骤和原则进行,共回收有效问卷575份,有效回收率为98.46%,符合抽样调查对回收率的要求。

1.学生缺乏编程兴趣

兴趣是最好的老师,学生对程序设计的喜好程度会直接影响对相关课程的喜好程度,进而影响学习效率和学习效果。在575份有效问卷中,仅362人选择喜欢编程,占总人数的62.96%,将近4成学生不喜欢编程,究其原因,地方性本科院校招生时的第一志愿录取率不高是关键因素之一。另一方面,师范类院校男女生比例较工科性专业院校而言,女生比例相对偏高,也在很大程序上影响了整体对程序设计的兴趣。在选择喜欢编程的362人中,男生241人,女生121人,不喜欢编程的211人中,男生92人,女生119人,男女差异十分明显,突显了工科专业以男生为主的特点。进一步按不同专业进行对比分析,结果如表1所示。

表1 不同专业对程序设计的喜好程度对比

总体上,喜欢程序设计的学生略多于不喜欢的,其中,软件专业接近7成的学生选择喜欢程序设计,明显高于其他专业。

2.课堂教学引导缺失

有人说,程序设计能力的提高主要就是 “编程、编程、再编程”,可见勤于练习对程序设计的学习是多么的重要。而实际情况是学生的主观能动性和自学能力有限,课堂教学引导缺失,课后练习目的性和方向性不明,积极性不高。程序设计类课程教学的理论与实践学时有限,教学重点集中在语法知识点的讲解上,学生对课外练习环节重视不够,自主学习意识不强,从而导致知识点的理解不够深入。

表2 学习遇到困难选择的解决方式

如表2所示,学生在遇到问题时不善于找教师寻求帮助,而是自己尝试解决,以及和同学协同解决,教师的作用在不断弱化当中。问卷中有一项关于知识获取途径的问题,统计结果如表3所示。

表3 算法知识获取的主要途径

我们发现,目前学生掌握算法知识的主要途径是自学,在网络上我们可以找到大量的有关程序设计的讨论贴,这些讨论帖的存在说明学生自组织学习的能力在不断强化,教师的教学功能在不断的弱化,此时,课堂教学引导显得尤其重要。

3.自主学习意识不强

程序设计最初阶段的理论学习是必不可少的,但仅仅依靠课堂学习就希望达到掌握程序设计是不现实的,学生必须学会独立思考,培养主动学习的意识。调查问卷中有1项关于愿意花费多少时间去学习程序设计的问题,33%的学生每天仅愿意花费不足半小时用于编程练习,仅有13%的学生每天愿意花费超过2小时用于编程。如图1所示,大部分学生不愿意在程序设计方面投入过多的时间,主动学习意识不强。

图1 愿意用于程序设计学习的时间

另一方面,随着入学时间的增加,参加程序设计竞赛的动力也在慢慢发生变化。如表4所示,年级越高,兴趣所占比重越来越低,被动学习的因素越来越大,学生的激情慢慢的退却,程序设计竞赛难度偏大和学习惰性是最重要的影响因素。

表4 各年级学生参加程序设计竞赛的目的

同样的情况也出现在时间花费上,如表5所示,随着入学时间的增加,学生愿意投入程序设计竞赛的时间越来越少。

表5 各年级愿意投入程序设计竞赛的时间

值得注意的是,三年级学生当中有超过4成的学生愿意投入一学期参加程序设计竞赛,明显高于半学期的21.77%,说明相当一部分学生认识到程序设计竞赛的积极作用,愿意投入其中以取得进步,但是主动性不够,缺少克服困难的毅力。

4.专业基础知识薄弱

地方高校录取分数线相对重点院校而言偏低,特别是师范类院校工科专业,数学成绩有相当一部分不够理想,后续又没有给予足够的重视,导致数学基础薄弱。程序设计需要较高的数学功底,特别是算法设计部分,对于缺乏数学思维的学生来说,编程学习与能力提高显得非常困难。在问卷当中有一道多选题,让学生勾选不超过4项自己认为在算法方面最欠缺的知识,如表6所示,仅有不到24%的学生选择在3项以内,在针对这部分学生的访谈中发现,他们之所以选择3项以内并不是因为不欠缺未勾选算法,而是因为那些未勾选的算法听都没听过。

表6 算法知识欠缺多少的选择

学生认为最欠缺的算法知识中,排在前三位的分别是动态规划、贪心算法、和图论,分别占13.00%、9.17%和7.23%,而这些都需要较强的数学功底。数学基础薄弱导致算法知识欠缺,进一步影响程序设计能力的提高,影响人才培养目标的实现,最终影响学生就业。

二、对策及方法

通过引入竞赛式教学改变传统的教学模式和教学方法,实施新的学习方式和考核方式,从根本上提升地方高校程序设计类课程的教学质量。

1.教学模式的改变

当前,越来越多的高校计算机专业已经借助程序设计竞赛平台开展教学改革,其中,基于ACM-OJ(ACM Online Judge,ACM在线判题系统)的改革比较成熟。ACM-OJ中包含大量的问题(称为Problem),这些Problem不仅包括历年竞赛试题,也包括各教学单位原创的问题库。基于程序设计类课程群的问题库被集成到ACM-OJ当中,形成优质的数字教学资源,方便所有师生选择并获取。Problem通过分类使学生可以自主选择学习最感兴趣的,或者是最亟需获取的知识进行学习,从而掌握学习的主动权。程序设计竞赛平台扩展了计算机教学的手段与范围,推进了教学从“知识传递”向“能力培养”的转变。

程序设计竞赛平台的建立在满足高校计算机专业课堂教学需求的同时,也为广大程序爱好者提供了终身学习的有效支持,在提高教育质量的同时促进了教育公平。借助程序设计竞赛大范围的影响,以及互联网的深度融合,甚至于教育云与教育大数据的强大支撑,这种竞赛式教学能够开创一种全新的、协作的、竞争的、开放的教学模式。

2.教学方法的改变

目前,地方高校的大部分程序设计类课程均以语法讲解为主,过分注重知识细节[10],割裂了程序设计的完整思路。语法是程序设计的基础,但不是全部,只有在具体的应用中才能产生价值。将知识点融入到具体问题之中,培养程序思维能力和解决问题能力,更有利于知识的掌握。竞赛式教学中,问题的设置可以针对特定的教学重点和难点,兼顾知识点之间相互联系,将规律性的方法融入其中。竞赛式教学以问题解答为主线,穿插语法讲解,注重现场演示,课堂教学与程序设计过程深度融合,有助于构建良好的课堂生态,提高教学质量。

另一方面,程序设计类课程实践环节教学案例的数量严重不足、质量参差不齐,用于学生课内外程序设计综合训练的题目相对较少,与课堂教学无法相辅相成。课后练习大多来源于教材,局限于某个特定知识点,只有竞赛性质的题目才更具备综合性,能够全方面地涉及整个专业知识领域,同时又与实际生活密切联系,能够综合训练学生程序设计能力。通过竞教结合设计的教学案例不容易让学生产生厌烦情绪,感觉为了编程而编程,而是实实在在的解决科学问题,同时领会到算法的实际用途。

3.学习方式的改变

在信息技术的持续影响下,学习方式进一步多元化、网络化和个性化,竞赛式教学平台的出现充分体现了这些特点。无论是在课堂,还是在宿舍,又或者是寒暑假呆在家里,只要有网络,都可以通过网络平台获取个性化的学习资源和学习支持。与此同时,基于Problem的讨论贴从学习者的提问中来,由学习者相互解答,更能融入学生所想,便于学生理解和掌握知识,通过PC、手机、平板电脑等多种终端设备随时查阅,便于随时、随地、随需地开展移动学习,这种无所不在的交流方式将彻底改变传统的学习方式。

另一方面,学生可以基于自身基础的实际情况来调整学习进度,通过网络讨论贴来分享学习心得和进行深入探讨。竞赛式教学使得学习方式更加灵活,积极性更加高涨,学生的兴趣、特长和潜能得以更加充分的发挥,在提高学习效率的同时,创造了一个“因材施教”的过程。“互联网+”时代,学习方式将不再受限于特定的时间和空间,竞赛式教学为终身学习、泛在学习提供了有效的支撑平台。

4.考核方式的改变

传统的程序设计类课程大多采用笔试形式,无论是开卷或闭卷,每次考试的重点都放在语法知识点上,缺乏对应用能力的考查,往往学生通过死记硬背都能通过考试。竞赛式教学基于试题库来开展教学活动,竞赛试题往往区别于传统的课后习题,具备更强的综合性和应用性,更加贴近实际问题,能够更有利于学生解决问题能力的提高。

基于竞赛平台开展的练习与测试均采用上机形式,从不同知识点的角度将同一个任务细化成多个形式的试题并建立题库[11],学生日常通过题库上机练习和锻炼,可以极大的提高实际编程能力和解决问题的能力。教学团队可以定期在平台发布针对不同年级、不同班级的各类竞赛试题,从而有针对性的开展课后学习,加深对课堂教学内容的理解和应用。竞赛式上机考核方式可以极大的点燃学生的编程热情,提高学生的主动性和编程能力,建立良好的学习氛围。

三、教学效果的验证

2013年至今,岭南师范学院在C语言程序设计与数据结构课程中引入竞赛式教学,通过数据对比分析发现教学改革取得了一定的成绩。通过竞赛式教学,学生对程序设计语言的语法理解更为深入透彻,大量的Problem让学生更加明确知识点在实际问题中的应用,讨论贴更是帮助学生以自己的语言和思维去讨论并解决问题,并掌握其解答的思路及编程的方法。

通过统计2013级与2014级C语言程序设计课程的期末成绩(见图2)可以看出,2014级当中,75分至90分的人数比例高达85.26%,明显高于2013级的51.20%,大部分同学的分数较以往有所提高,对程序设计思想的理解更加明确,也更为清晰。

图2 C语言程序设计成绩对比图

数据结构与C语言程序设计密切相关,在一定程度上C语言掌握的好坏程度直接影响着数据结构的成绩。进一步统计2013级与2014级数据结构的期末成绩(见图3)可以看出,低分区域(70分以下)2014级人数比例低于2013级,高分区域(80分以上)2014级人数比例高于2013级,经过C语言程序设计课程的学习,以及竞赛式程序设计训练,算法的编写能力也得到了提升。

如图3所示,引入竞赛式教学后学生的成绩分布曲线的重心向右偏移,高分区域(80分以上)人数比例增加,各年级《数据结构》课程成绩如表7所示,平均成绩提高约2个百分点。

图3 数据结构成绩对比图

表7 各年级《数据结构》课程成绩

竞赛式教学引入程序设计类课程提升了学习兴趣,丰富了课后练习,强化了教学引导,学生的程序设计能力得到了大幅的提升,教学效果进一步改善。

本文在分析地方高校大学生程序设计现状的基础上,提出将竞赛式教学引入教学当中,从教学模式、教学方法等4个方面探讨了竞赛式教学的优点,结合教学实践对教学效果进行了对比分析。后续工作的重点在于竞赛式教学与程序设计类课程教学的深度融合,通过教学实践探索竞赛式教学在课堂生态构建中的机理和作用,以提升学生的创新能力与专业素质,支持高校“应用型”转型。

参考文献:

[1]创新学生培养模式,助力软件产业发展——天津市大学软件学院蒋秀明院长专访[J].计算机教育,2013(23):4-6.

[2]阎光才.毕业生就业与高等教育类型结构调整[J].北京大学教育评论,2014,12(4):89-100.

[3]邓丽,葛卫生.多点结合的程序设计类课程教学模式研究[J].成人教育,2019(275):82-83.

[4]赵磊,焦铬.C语言程序设计课程教学中引入ACM/ICPC的探讨[J].计算机时代,2016(1):66-70.

[5]李月军,李娟,李英玉.融入ACM/ICPC竞赛内容的数据结构教学改革与实践探讨[J].内蒙古师范大学学报,2012,25(3):137-140.

[6]张熠,陈荣钦.以ACM导向构建C语言实验教学新平台的研究与实践[J].台州学院学报,2009,31(6):70-74.

[7]王伟嘉,张洪萍,宁亚辉等.关于《数据结构》课程与ACM-ICPC竞赛结合的探讨[J].计算机工程与科学,2014,36(A1):257-259.

[8]陈湘骥,刘才兴,徐东风.ACM/ICPC与可持续发展的IT人才培养方式实践[J].计算机教育,2009(20):6-9.

[9]邝祝芳,余绍军,杨卫民.ACM/ICPC对培养信息学科创新型人才的作用[J].计算机教育,2013(3):4-6.

[10]张玉,贾遂民,贾志娟.ACM竞赛对学习程序设计的推进作用的研究[J].电脑编程技巧与维护,2015(5):27-37.

[11]戴大蒙.“程序设计”类课程层次型教学模式的研究与实践[J].中国成人教育,2010(9):119-120.

猜你喜欢
数据结构C语言程序设计
数据结构线上线下混合教学模式探讨
基于Visual Studio Code的C语言程序设计实践教学探索
为什么会有“数据结构”?
51单片机C语言入门方法
从细节入手,谈PLC程序设计技巧
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索
高职高专数据结构教学改革探讨
PLC梯形图程序设计技巧及应用
CDIO模式在民办院校数据结构课程实践教学中的应用